繁体   English   中英

使用 FFmpeg 和 avio 库写入 mp4 视频文件时无法将缓冲区数据刷新到磁盘

[英]Unable to flush buffer data to disk when using FFmpeg and avio library to write a mp4 video file

我正在使用 FFmpeg 从屏幕截图创建一个 mp4 文件,它工作正常。 但我想每 30 秒将视频刷新到磁盘,这样在程序崩溃的情况下我不会丢失所有内容。 我尝试使用avio_flush方法,但问题是我在初始化时有avformat_write_header(AVFormatContext* s)方法,如果我不使用av_write_trailer(AVFormatContext* s)关闭它,它不会正确保存视频。 如果我关闭并重新打开它,则只会保存第一部分(即使文件大小增加)。 我尝试了我能想到的一切,但我被困住了。

提前致谢。

对于这个用例,您可以使用 MKV 容器而不是 MP4。 MKV 不需要调用av_write_trailer才有效。 当您在 MKV 容器上录制时,您可以在文件仍处于打开状态并且正在写入文件时即时观看视频。 因此,万一发生崩溃,您不会错过任何已写入视频文件的内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM