2012-02-10 14 views
1

我的应用使用ffmpeg来解析mms streaming缓冲区,并使用音频队列来播放缓冲数据。现在我可以确认缓冲数据是好的,但我无法播放它。打球的结构是基于AudioFileStreamExample演示的客户端,它可以起到HTTP流(AudioFileStreamExample演示的服务器)。我注意到在回调函数:AudioQueue得到一个错误的数据包?

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

当我直接播放AudioFileStreamExample演示的HTTP流,帕拉姆inNumberPackets是在大部分时间大于1;当我播放mms流时,inNumberPackets始终为1. audioQueue只播放第一个数据包,所有最后一个数据包都错过了。

日志使用AudioFileStreamExample演示的HTTP流:

*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 

使用解析的彩信日志流:

*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函数得到错误的参数,但如何得到修复呢?

非常感谢。

回答

0

同样的问题我也发生, 似乎当AudioQueue回调不上的时候调用它发生。

相关问题