Как установить свойства AudioStreamBasicDescription для mp3 после декодирования FFmpeg - PullRequest
0 голосов
/ 20 февраля 2020

Я уже расшифровал файл mp3 с помощью FFmpeg и попытался воспроизвести его с помощью AudioQueue. Если я установлю структуру ASBD следующим образом:

AudioStreamBasicDescription audioFormat = {
    .mSampleRate         = 44100,
    .mFormatID           = kAudioFormatLinearPCM,
    .mChannelsPerFrame   = 2,
    .mFormatFlags        = kLinearPCMFormatFlagIsSignedInteger | kLinearPCMFormatFlagIsPacked,
    .mBitsPerChannel     = 16,
    .mBytesPerPacket     = 4,
    .mBytesPerFrame      = 4,
    .mFramesPerPacket    = 1,
};

Звук может воспроизводиться, но он звучит странно и немного шумно.

Если я воспроизводю mp3-файл напрямую с AudioQueue, ASBD показывается ниже:

AudioStreamBasicDescription audioFormat = {
    .mSampleRate         = 44100,
    .mFormatID           = kAudioFormatMPEGLayer3,
    .mChannelsPerFrame   = 2,
    .mFormatFlags        = 0,
    .mBitsPerChannel     = 0,
    .mBytesPerPacket     = 1152,
    .mBytesPerFrame      = 0,
    .mFramesPerPacket    = 0,
};

Когда я пытаюсь установить ASBD для декодирования Данные, как указано выше, AudioQueue не запускается с кодом ошибки -66674.

Что-то не так с ASBD? Как правильно установить?

...