我有一些视频文件被转换为 MP4,但转换得不太正确。当我使用 exiftool 检查其中一个时,我看到了以下元数据值:
Duration : 0:11:23
Track Duration : 0:11:23
Media Duration : 0:04:13
最后一条是不正确的。在 VLC 媒体播放器中,视频播放正常,但我在网络应用 (Flowplayer) 中播放视频时使用的工具会严重影响“媒体时长”值,并会截断视频。
为了修复元数据,我尝试
exiftool -"Media Duration"="0:11:23" video_1.mp4
但我得到了
Warning: Sorry, Media is not writable
Nothing to do.
Sudo 没有帮助。根据其手册页和网站、exif工具能读取和写入 MP4 文件上的元数据,但“如果 ExifTool 检测到文件格式存在严重问题,它将不会重写文件。”
我该如何修复这些文件?
编辑:我对 ffmpeg 或 mediainfo 没有什么运气。
答案1
我找到了一个解决方案。我没有编辑元数据,而是使用 ffmpeg 重新编码文件,这样视频和音频内容就被复制并包装在一个新的、无错误的 MP4 容器中。命令如下:
ffmpeg -i video_1.mp4 -vcodec copy -acodec copy video_1_fixed.mp4
答案2
列出的 exiftool 命令不起作用有两个原因。
首先,“媒体时长”不是标签的名称,而是描述。ExifTool 常见问题解答 #2
...默认情况下,它会打印提取信息的描述,而不是标签名称。...请注意,描述通常在单词之间包含空格,但标签名称永远不会包含空格。此外,标签名称始终是英文,无论
-lang
环境。要打印标签名称而不是描述,请使用-s
选项提取信息时
第二个问题是该MediaDuration
标签不是可写标签(请参阅QuickTime MediaHeader 标签)。