рассчитать длину кадра MPEG (мс) - PullRequest
4 голосов
/ 09 июня 2011

Я искал во всем Интернете информацию о расчете длины кадра, и это было сложно ... Мне удалось успешно рассчитать длину кадра в мс 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

1 Ответ

13 голосов
/ 15 июня 2011

Длительность аудиокадра MPEG зависит от частоты дискретизации и количества выборок на кадр. Формула:

frameTimeMs = (1000/SamplingRate) * SamplesPerFrame

В вашем случае это будет

frameTimeMs = (1000/44100) * 1152

Что дает ~ 26мс на кадр. Для другой частоты дискретизации вы получите другую длительность. Ключ MPEG audio всегда представляет фиксированное количество выборок на кадр, но продолжительность каждого сэмпла зависит от частоты дискретизации.

...