最近在网上找了很多ffmpeg的相关资料,受益匪浅。但大都没有很好的解决实际问题。这里加上我在工作中遇到的问题及解决途径。
1. FFServer的内存泄漏:
FFMpeg用AVI作为Codec编解码时,最终在avi_write_frame时存在内存泄露,导致偶然间歇性的内存增加。最总代码没有跟踪下去看,最后用asf来实现远程传输。
FFServer的配置文件如下,希望对后来者有所帮助。
Port 8090
BindAddress 0.0.0.0
MaxClients 1000
MaxBandwidth 100000
CustomLog -
<Feed feed1.ffm>
File /tmp/feed1.ffm
FileMaxSize 200K
Launch -ingrab 7 -y -r 30 -s 352x288 -vcodec mpeg4 -an -b 2048
acl allow localhost
</Feed>
<Stream test.asf>
Feed feed1.ffm
Format asf
NoAudio
VideoCodec mpeg4
VideoFrameRate 15
VideoSize 352x288
VideoBitRate 256
VideoGopSize 30
StartSendOnKey
</Stream>
2. FFServer还存在两个严重的内存泄露问题,这是我在做嵌入式是碰到的。
1.在Utils.c av_close_input_file函数增加
for(i=0;i<s->nb_streams;i++) {
+++av_free(s->streams[i]->codec.rc_eq);
av_free(s->streams[i]);
}
2.在Ffserver.c close_connection函数增加
url_close_dyn_buf调用之前
if(c->pb_buffer)
{
av_freep(&c->pb_buffer);
}
注:以上FFServer版本均是针对0.4.8版本,之后是否修改,还未曾涉足。
本文详细介绍了使用FFServer过程中遇到的内存泄漏问题及其解决方法,包括FFServer配置示例及针对0.4.8版本的补丁代码。适用于解决FFmpeg在AVI编解码时的内存泄露问题。

1万+

被折叠的 条评论
为什么被折叠?



