我有一个 Reolink 安全摄像头,它通过 FTP 将 .mp4 文件保存到本地服务器。然后我就有了自己的基于 Python 的应用程序来处理这些视频。在过去一年左右的时间里,它一直工作得很好,尽管我经常注意到 Python 控制台(来自 OpenCV)中关于“错误读取标题”的警告,但它无论如何都工作正常,所以忽略了它。
自从获得新服务器并重新安装所有软件(这恰好意味着 Debian Linux、Python 和 OpenCV 的更新版本)后,它不再容忍错误并无法加载这些视频。令人担忧的是,通过 FTP 保存的视频中约有四分之一在我的 Python 应用程序中出现此错误,如果我尝试在我的服务器或我的(Mac)笔记本电脑上通过 FFMPEG 加载它们,我会收到此错误[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 box 指示片段中存储了 0 个样本,则 ffmpeg 将退出。
mp4box 或旧版本的 ffmpeg 不会失败,因此您可以使用它们将文件重新混合为常规 MP4。
ffmpeg-3.4 -i in.mp4 -c copy out.mp4
Run Code Online (Sandbox Code Playgroud)
或者
mp4box -add in.mp4 -new out.mp4
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5253 次 |
| 最近记录: |