gpt4 book ai didi

c++ - 如果文件未正确完成,如何使用 libav 编写可播放的 .mov 文件

转载 作者:行者123 更新时间:2023-12-02 10:21:13 25 4
gpt4 key购买 nike

我正在使用 libav c 库在 c++ 中开发一个视频录制应用程序,该库将 h265 从相机馈送记录和编码到 .mov 容器中。

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

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

我假设这是可能的,因为大多数视频录制设备都会创建有效的 .mov 文件,即使它们耗尽了电池或填充了目标媒体。

我已尝试指定以下 AVDictionary假设将相关流信息移动到文件开头的选项:
av_dict_set(&options, "movflags", "faststart", 0);
但是,这不会使不完整的文件可以播放。

最佳答案

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

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

这是用于 streaming mp4 的内容,因此流在任何时候都是可播放和可中断的。

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

关于c++ - 如果文件未正确完成,如何使用 libav 编写可播放的 .mov 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60065355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com