如何使用格式错误的文件覆盖 ffmpeg 视频时长?

如何使用格式错误的文件覆盖 ffmpeg 视频时长?

我的安全摄像机录制了一个 H.264 MP4 视频文件,该文件似乎格式不正确,因为它报告了错误的视频时长。使用 ffmpeg 和按照这个答案当持续时间实际为 7 小时 3 分 14 秒时,我得到了相同的结果 38 分 10 秒:

$ ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 video.mp4
2289.759000

$ ffprobe -v error -select_streams v:0 -show_entries stream=duration -of default=noprint_wrappers=1:nokey=1 video.mp4
2289.759000

VLC 也遇到了麻烦,因为经过的时间(见下方洗涤器的左侧)报告了一个错误的值:

VLC 的屏幕截图

如果我尝试使用 ffmpeg 重新编码视频文件,它会在 38 分钟时停止。如果我尝试导出视频文件的一部分38 分钟后,ffmpeg 生成一个空文件。尝试使用 VLC 转换视频,结果相同。

有没有办法可以强制或覆盖 ffmpeg 并为其指定正确的持续时间?或者有没有其他方法可以修复此视频文件以报告正确的持续时间?

相关内容