我有许多 mp4 文件需要包含相同的元数据,例如艺术家和专辑。
我如何才能批量编辑元数据而不是逐个编辑?
答案1
继续操作之前,请备份要处理的视频。以下命令将替换现有文件。
find /home/user/videos-to-process/ -type f -iname '*.mp4' -exec ffmpeg -i "{}" -codec copy -metadata artist="John Smith" -metadata album="Foo Bar" "{}.new.mp4" \; -exec mv "{}.new.mp4" "{}" \;
以下是相同的命令,为了清晰起见已格式化:
find /home/user/videos-to-process/ -type f -iname '*.mp4' \
-exec ffmpeg \
-i "{}" \
-codec copy \
-metadata artist="John Smith" \
-metadata album="Foo Bar" \
"{}.new.mp4" \; \
-exec mv \
"{}.new.mp4" "{}" \;
这是起什么作用的?
- 递归查找 /home/user/videos-to-process 中的所有 .mp4 文件(不区分大小写的扩展名比较)。
- 创建一个新的视频文件,复制现有流并包含所需的元数据。
- 用新的视频文件替换原始视频文件。
第2步副本现有的流;我们不会重新编码(这是一件好事)。您只是更改元数据。我在一个包含六个文件的目录中运行了此操作,每个文件约 1GB。总处理时间约为 30 秒。
答案2
您可以使用此实用程序AtomicParsley
来实现此目的。从终端窗口安装它,如下所示:
sudo apt-get install atomicparsley
如果你的 mp4 文件位于单个目录然后您只需在该位置打开一个终端窗口并运行以下命令:
for i in *.mp4
do
AtomicParsley "$i" --album "Foo" --artist "Bar" --overWrite
done
(这包括未记录但功能齐全的--overWrite
标签。)
显然你应该改变价值观Foo
并Bar
表示实际值您需要在您的文件中使用...