AudioQueue получает неправильное количество пакетов?

Мое приложение использует ffmpeg для синтаксического анализа потоковой передачи MMS в буферы и использует аудио-очередь для воспроизведения буферизованных данных. Теперь я могу подтвердить, что буферизованные данные в порядке, но я не могу их воспроизвести. Структура воспроизведения основана на клиенте демонстрации AudioFileStreamExample, и он может воспроизводить http-поток (сервер демонстрации AudioFileStreamExample). Я замечаю в функции обратного вызова:

void MyPacketsProc(void *inClientData, UInt32 inNumberBytes, 
    UInt32 inNumberPackets, const void *inInputData, 
    AudioStreamPacketDescription *inPacketDescriptions),

Когда я напрямую проигрываю http-поток демо AudioFileStreamExample, параметр inNumberPackets в большинстве случаев больше 1; когда я проигрываю mms-поток, inNumberPackets всегда 1. audioQueue воспроизводит только первый пакет, все последние пакеты пропускаются.

Журнал использования http-потока демо AudioFileStreamExample:

*AudioStreamBasicDescription info ----*

SampleRate        :44100.000000
FormatID          :778924083
FormatFlags       :0
BytesPerPacket    :0
FramesPerPacket   :1152
BytesPerFrame     :0
ChannelsPerFrame  :2
BitsPerChannel    :0

got data.  bytes: 1253  packets: 2
packetSize:626   
kAQBufSize:24576

bytesFilled:0
packetSize:627   


kAQBufSize:24576
bytesFilled:626

got data.  bytes: 627  packets: 1
packetSize:627   

kAQBufSize:24576

bytesFilled:1253

Журнал использования проанализированного mms-потока:

*AudioStreamBasicDescription info ----*

SampleRate        :48000.000000
FormatID          :1819304813
FormatFlags       :12
BytesPerPacket    :4
FramesPerPacket   :1
BytesPerFrame     :4
ChannelsPerFrame  :2
BitsPerChannel    :16

got data.  bytes: 4498  packets: 1


packetSize:216      
kAQBufSize:24576    
bytesFilled:0    

got data.  bytes: 1090  packets: 1


packetSize:576       
kAQBufSize:24576    
bytesFilled:216

got data.  bytes: 3064  packets: 1


packetSize:576     
kAQBufSize:24576    
bytesFilled:792

got data.  bytes: 3978  packets: 1


packetSize:252       
kAQBufSize:24576    
bytesFilled:1368

Я не знаю, как решить эту проблему. Кажется, что функция MyPacketsProc получает неверные параметры, но как это исправить?

Спасибо большое.


person Infomedia Infomedia    schedule 10.02.2012    source источник


Ответы (1)


Такая же проблема возникает и со мной, кажется, это происходит, когда обратный вызов AudioQueue не вызывается вовремя.

person Amitg2k12    schedule 05.09.2012