gpt4 book ai didi

ffmpeg - 使用ffmpeg录制MP4时突然断电

转载 作者:行者123 更新时间:2023-12-04 22:50:50 25 4
gpt4 key购买 nike

现在我用C语言和ffmpeg实现了一个多路实时音视频到MP4文件的程序,一切正常,但是在重用的过程中突然断电,录制的是MP4文件损坏,VLC不能播放这个文件。
我认为原因是没有调用编写预告片函数 av_write_trailer ,导致索引和时间戳信息丢失,我使用araxis合并工具比较了成功调用文件的av_write_trailer函数和没有调用损坏的文件的av_write_trailer,发现两个不同点:
1.损坏的文件在文件头框编号值不对
2.损坏的文件没有文件结尾。

现在我想修复我的程序开机后能自动修复损坏的文件,在谷歌没有找到有效的方法。
我的思路是在正常录制过程中每秒保存一个损坏的文件缺少两个信息:框号和文件结尾,保存到本地文件,在写入MP4文件的时候完整删除这个文件,如果断电损坏,然后在下次上电时,读取文件并将相应信息写入损坏文件的对应位置。但是现在的问题是不知道怎么保存box的个数和文件的结尾,我这个可行吗?如果可能,我应该怎么做?期待你的答复!

最佳答案

MP4文件损坏的主要原因是文件头或尾没有正确写入文件,然后,整个文件变成垃圾数据。因此,没有一个媒体播放器能够播放损坏的 mp4 文件。
所以,
首先,在播放文件之前必须修复损坏的文件。
有一些应用程序和技巧可用于修复和取回数据
链接如下:

http://grauonline.de/cms2/?page_id=5 (Windows/Mac)(付费:()

https://github.com/ponchio/untrunc (基于 Linux 的操作系统)(当然,免费!!!)

其次,使用 HEX 编辑器手动修复损坏的文件。

这个黑客背后的逻辑:
这个 hack 需要一个损坏的 mp4 文件和一个好的视频文件,其中两个视频都是从同一个相机捕获的。而且它的大小应该大于损坏的 mp4 文件。

在任何 HEX 编辑器中打开这两个视频文件。将预告片部分从好的视频文件复制到损坏的视频文件并保存!完成!

注意:始终备份视频文件。

请点击以下链接获取详细信息:

http://janit.iki.fi/repair-corrupted-mp4-video/

https://www.lfs.net/forum/thread/45156-Repair-a-corrupt-mp4-file%3F

http://hackaday.com/2015/04/02/manual-data-recovery-with-a-hex-editor/

http://www.hexview.org/hex-repair-corrupt-file.html

第三,即使是硬的MP4文件也有很多优点,这种错误是不可预测的,难以处理。
因此,使用 MPG 和 AV_CODEC_ID_MPEG1VIDEO/AV_CODEC_ID_MPEG2VIDEO (FFMPEG) 等格式可能有助于避免此类错误。所提到的 MPG 格式不需要任何头/尾。如果有任何突然断电 MPG 文件可以播放文件,无论帧存储到目前为止。

注意:还有其他格式和编解码器也可用于此类属性。

关于ffmpeg - 使用ffmpeg录制MP4时突然断电,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36122263/

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