编辑 MP4 文件的“媒体时长”元数据

编辑 MP4 文件的“媒体时长”元数据

我有一些视频文件被转换为 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 标签)。

相关内容