Answers:
ffmpeg -i in.mov -map_metadata -1 -c:v copy -c:a copy out.mov
结果是(再次,用选中exiftool
),元数据记录从81行减少到52行。请注意,您不能简单地删除所有元数据,某些事情将保留下来。但是,我没有更改创建日期,这很奇怪,因为它似乎可以在Ubuntu版本中使用。
我张贴在FFmpeg邮件列表上,询问是否有任何更新或评论。让我们看看他们怎么说。
-metadata creation_time=2012-12-17T21:30:00
(UTC)更改创建时间。
-metadata title="Some Value"
。或者,对于文件,对于MP4文件类似:ffmpeg -i "$file" -map_metadata -1 -c copy -metadata title="$file" "${file%%*.mp4}-new.mp4
注意:此后,ffmpeg
我已经进行了更新(以前,我具有avconv
Ubuntu存储库中的过时版本)。
现在,@ 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%的情况下起作用,因此应该首选。
mov
或mp4
文件中,创建日期是影片标题和曲目标题中的整数字段(表示为自1904年以来的秒数)。尽管您可以将其设置为0或其他某个固定值,但是无法删除它,并且仍然具有有效文件mov
或mp4
文件。