[英]How to flush buffer data to disk when using FFmpeg to write a mp4 file?
[英]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.