使用FFmpeg剥离所有格式的元数据


43

如何通过FFmpeg从所有格式中删除所有元数据?

我可以为每个人ffmpeg的每种格式设置特殊的元数据。清除ffmpeg上所有可用元数据中的所有元数据并剥离媒体的任何选项或方法?

   -metadata key=value
       Set a metadata key/value pair.

       For example, for setting the title in the output file:

               ffmpeg -i in.avi -metadata title="my title" out.flv

Answers:


63

通过@izx稍微修改命令行,我得到了:

ffmpeg -i in.mov -map_metadata -1 -c:v copy -c:a copy out.mov

结果是(再次,用选中exiftool),元数据记录从81行减少到52行。请注意,您不能简单地删除所有元数据,某些事情将保留下来。但是,我没有更改创建日期,这很奇怪,因为它似乎可以在Ubuntu版本中使用。

我张贴在FFmpeg邮件列表上,询问是否有任何更新或评论。让我们看看他们怎么说。


2
movmp4文件中,创建日期是影片标题和曲目标题中的整数字段(表示为自1904年以来的秒数)。尽管您可以将其设置为0或其他某个固定值,但是无法删除它,并且仍然具有有效文件movmp4文件。
mark4o 2012年

我知道我无法完全删除它,但是由于某种原因无法更改。
slhck

3
使用当前ffmpeg,可以使用-metadata creation_time=2012-12-17T21:30:00(UTC)更改创建时间。
mark4o 2012年

1
我如何修改此名称以也删除标题?当前,它将标题设置为自动生成的名称。我想最后看到完整的文件名作为标题。
新秀2014年

2
@Rookie然后您需要设置-metadata title="Some Value"。或者,对于文件,对于MP4文件类似:ffmpeg -i "$file" -map_metadata -1 -c copy -metadata title="$file" "${file%%*.mp4}-new.mp4
slhck

9

我的解决方案是剥离元数据,章节,以更改创建时间和标题。这样,任何元内容都应与原始文件不同:

ffmpeg -y -i "test.mkv" -c copy -map_metadata -1 -metadata title="My Title" -metadata creation_time=2016-09-20T21:30:00 -map_chapters -1 "test.mkv"

1
那个变种对我很有用,谢谢。我希望ffmpeg手册会显示更多类似上面的示例;stackoverflow,超级用户等...确实变得非常有用,因为它们包含许多有用的信息。
shevy

8

注意:此后,ffmpeg我已经进行了更新(以前,我具有avconvUbuntu存储库中的过时版本)。

现在,@ slhck的-map_metadata -1 工作原理非常完美。

我推荐@slhck的解决方案,因为它的输入方式少,而且是最新的。我要把这个留给所有使用过时版本的人。


最简单的方法是设置-map_metadata为使用输入流之一,而不是使用全局元数据。99%的时间应该可以工作。注意:我正在使用avconv,因为它在Ubuntu 12.04存储库中。根据我的经验,这可能与ffmpeg兼容。

avconv -i input.mp4 -map 0 -map_metadata 0:s:0 -c copy output.mp4

这将从第一个数据流(通常是视频流)中获取元数据,并使用其替换容器文件的全局元数据。之所以可行,是因为在大多数情况下,数据流都没有写入有意义的元数据。但是,有时它们会这样做,并且您想完全摆脱该元数据。不幸的是,我想到的唯一方法是使用管道和两个avconv进程。

avconv -i input.mp4 -f wav - | avconv -i - -i input.mp4 -map 1 -map_metadata 0 -c copy output.mp4

这利用了WAV文件不能包含元数据这一事实(因为格式是在元数据标签存在之前创建的)。

这两种方法都消隐了我刚刚对其进行测试的文件上的所有元数据- exiftool报告的全部是编解码器信息,而avprobe没有向我报告任何元数据。为此使用管道是很丑陋的,第一种方法将在99%的情况下起作用,因此应该首选。


1
像其他基于RIFF的文件(例如AVI)一样,WAVE文件实际上可以使用“ INFO”列表块包含元数据标签。只是不经常使用。
blerontin
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.