4

我正在互联网上寻找有关计算帧长度的信息,这很难......我能够使用以下方法成功计算 MPEG-4、AAC 的帧长度(以毫秒为单位):

frameLengthMs = mSamplingRate/1000

这是有效的,因为在 AAC 上每帧有一个样本。对于 MPEG-1 或 MPEG-2,我很困惑。每帧有 1152 个样本,好的,那我该怎么办?:P

框架样本:

MPEGDecoder(23069): mSamplesPerFrame: 1152
MPEGDecoder(23069): mBitrateIndex: 7
MPEGDecoder(23069): mFrameLength: 314
MPEGDecoder(23069): mSamplingRate: 44100
MPEGDecoder(23069): mMpegAudioVersion 3
MPEGDecoder(23069): mLayerDesc 1
MPEGDecoder(23069): mProtectionBit 1
MPEGDecoder(23069): mBitrateIndex 7
MPEGDecoder(23069): mSamplingRateFreqIndex 0
MPEGDecoder(23069): mPaddingBit 1
MPEGDecoder(23069): mPrivateBit 0
MPEGDecoder(23069): mChannelMode 1
MPEGDecoder(23069): mModeExtension 2
MPEGDecoder(23069): mCopyright 0
MPEGDecoder(23069): mOriginal 1
MPEGDecoder(23069): mEmphasis 0
MPEGDecoder(23069): mBitrate: 96kbps
4

1 回答 1

13

MPEG 音频帧的持续时间是采样率和每帧样本数的函数。公式为:

frameTimeMs = (1000/SamplingRate) * SamplesPerFrame

在你的情况下,这将是

frameTimeMs = (1000/44100) * 1152

每帧产生约 26 毫秒。对于不同的采样率,您将获得不同的持续时间。关键是 MPEG 音频总是代表每帧固定数量的样本,但每个样本的持续时间取决于采样率。

于 2011-06-15T14:58:09.050 回答