我有一个Reolink安全摄像机,该摄像机通过FTP将.mp4文件保存到本地服务器。然后,我有自己的基于Python的应用程序来处理这些视频。在过去一年左右的时间里,它一直运行良好,尽管我经常注意到(来自OpenCV的)Python控制台中有关“错误读取标头”的警告,但是无论如何它还是忽略了它。
由于获得了新服务器并重新安装了所有软件,这恰好意味着Debian Linux,Python和OpenCV的更新版本,因此它不再容忍错误并且无法加载这些视频。令人担忧的是,通过FTP保存的视频中大约有四分之一在我的Python应用程序中出现此错误,并且如果我尝试通过FFMPEG在我的服务器或我的(Mac)笔记本电脑上加载这些错误,都会收到错误消息。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7ff492000400] error reading header [path]: Operation not permitted
我已将其中一个视频放到Dropbox上,因此您可以看到:https : //www.dropbox.com/s/tu4ddegh6yn05nu/ErrorReadingHeader.mp4?dl=0
任何人都知道导致此问题的原因或解决方法?我认为我有几种选择,但是没有足够的信息来进行任何选择:
非常感谢!
样本MP4是分段的,因此元数据不是每个样本的全局索引(即帧),而是分段的。每个片段的元数据中都有一个跟踪运行框trun
,其中包含该片段中所有样本的数据。2017年10月(ffmpeg 4.0+)进行了更改,其中如果trun框指示片段中存储了0个样本,则ffmpeg将保释。
mp4box或更旧版本的ffmpeg不会失败,因此您可以使用它们将文件重新混合到常规MP4中。
ffmpeg-3.4 -i in.mp4 -c copy out.mp4
或者
mp4box -add in.mp4 -new out.mp4
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句