FFMPEG libavformat内部缓冲

The*_*dor 5 ffmpeg audio-streaming libavformat

我正在使用FFMPEG进行C++音频流和回放应用.

我使用avformat_open_input函数打开外部压缩音频文件的URL,然后我逐步使用av_read_frame进行流式处理.然后,对于每个数据包,我直接解码数据并使用OpenAL将其排入音频缓冲区.

我的问题是FFMPEG内部是否从外部URL预先压缩了压缩数据?

即使我没有调用av_read_frame, FFMPEG是否会继续在后台下载数据?

或者我是否有责任维护一个中间缓冲区,我可以提前下载尽可能多的数据包以避免音频播放不足?

如果是这样,它内部缓冲/下载多少?我可以配置吗?

我一直在查看文档,但没有找到任何相关信息.

谢谢.

更新:根据这个帖子http://ffmpeg.zeranoe.com/forum/viewtopic.php?f=15&t=376 libav默认情况下预缓冲大约5MB,具体取决于AVFormatContext :: max_analyze_duration.但是我没有注意到这种行为,如果我改变max_analyze_duration,它似乎没有改变.

如果我监视我的进程的内存消耗,它在调用avformat_open_input后不会增加,如果我模拟慢速网络,av_read_frame会直接停止工作,就像它没有缓冲任何数据包一样.