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会直接停止工作,就像它没有缓冲任何数据包一样.