现在我用C语言和ffmpeg实现了一个多路实时音视频到MP4文件的程序,一切正常,但是在重用过程中突然断电,录制的是MP4文件损坏,VLC不能播放这个文件。我认为原因是没有调用编写预告片函数av_write_trailer,导致索引和时间戳信息丢失,我使用araxis合并工具比较了文件的成功调用av_write_trailer函数和没有av_write_trailer调用损坏的文件,发现两个不同点:1 .损坏的文件在文件头框编号值不对 2.损坏的文件没有文件结尾。
现在想修复我的程序开机后能自动修复损坏的文件,在谷歌上没有找到有效的方法。我的思路是在正常录制过程中每秒保存一个损坏的文件缺少两个信息:框号和文件结尾,保存到本地文件,写入MP4文件的时候完整删除这个文件后,如果断电损坏,然后在下次上电时,读取文件并将相应信息写入损坏文件的对应位置。但是现在的问题是不知道怎么保存box的个数和文件的结尾,我这个可行吗?如果可能,我应该怎么做?期待你的答复!