如何用libav编写.mov文件,如果文件未正确完成,该文件可以播放

问题描述 投票:1回答:1

[我正在使用libav c库开发c ++的视频录制应用程序,该库可将来自摄像机供稿的h265记录并编码为.mov容器。

我可以在所有标准视频播放器上成功播放.mov文件,但前提是录制必须正确终止-即,调用av_write_trailer并正确关闭文件。

然而,即使在录制被不适当地终止的情况下(即断电或目标磁盘已满,该软件的一个重要要求还是可播放的.mov文件。

我认为这是可能的,因为大多数视频记录设备即使在电池电量耗尽或填充目标媒体时也会创建有效的.mov文件。

我尝试指定以下AVDictionary选项,该选项假定将相关流信息移动到文件的开头:

av_dict_set(&options, "movflags", "faststart", 0);

但是,这不会播放不完整的文件。

c++ c libav
1个回答
0
投票

我相信这是您要寻找的选项:

av_dict_set(&options, "movflags", "+frag_keyframe+empty_moov+faststart", 0);

这是streaming mp4的用法,因此该流在任何时候都可以播放和中断。

不利的一面是,此类视频文件将不可搜索。但是恢复电源后,您可能可以对此类不完整的文件进行后处理并修复标头。

© www.soinside.com 2019 - 2024. All rights reserved.