1

我正在使用FFmpeg编写一个mp4文件,我从远程IP摄像头抓取位图图像并通过h.264对其进行编码,媒体容器是mp4文件,如果我只记录几分钟就可以生成MP4文件,问题是FFmpeg 在我调用方法时从不将缓冲区数据刷新到磁盘av_interleaved_write_frame(内存中的所有编码数据,从不释放它们),只有当我调用方法时,它才会将所有编码数据刷新到磁盘,我每次调用后都avio_close(oc->pb);尝试调用方法,但没有影响。我是FFmpeg的新手,如果你熟悉FFmpeg,请帮助我。avcodec_flush_buffersav_interleaved_write_frame

提前致谢。

肖恩

4

2 回答 2

1

我遇到了问题,这是因为我从不写音频帧,所以如果只是想将几个 bmps 编码到一个视频文件中,请注意:

1)不要添加音频流(add_stream)。2)不要打开音频流(open_audio)。

希望这也对其他人有所帮助。

肖恩

于 2013-08-20T00:58:19.587 回答
0

另一个建议(在我的情况下效果很好)是使用 NULL AVPacket 指针调用:

av_interleaved_write_frame(AVFormatContext*, NULL);

然后它刷新缓冲区中的任何流。

于 2016-06-09T20:16:40.530 回答