如何批处理 mp4 文件目录以删除其元数据?

How to batch process a directory of mp4 files to remove their metadata?

我使用 ffmpeg 转换一个 mp4 文件,使用以下命令从 mp4 文件中删除所有元数据:

ffmpeg -i test.mp4 -map_metadata -1 -c:v copy -c:a copy out.mp4

这很好用,但我想要一个 bash 脚本,它将自动删除包含 mp4 文件的目录的所有元数据,并且交互最少。

我该怎么做?

这会列出当前目录中的所有文件(且仅列出文件):

for /r %i in (*) do echo %i

此外,如果您 运行 在批处理文件中执行该命令,则需要将 % 符号加倍。

for /r %%i in (*) do echo %%i

它会像这样。创建一个文件,将其命名为 test.cmd 并将其复制到文件中。

for %%f in (*.mp4) do (
    ffmpeg -i %%f -map_metadata -1 -c:v copy -c:a copy %%~nf-out.mp4
)

-n 仅作为名称部分的替代。

for f in *.mp4; do ffmpeg -i "$f" -map_metadata -1 -c:v copy -c:a copy "fixed_$f"; done

Bash 将 *.mp4 替换为当前目录中所有匹配文件的名称。循环通过的每一步,f 都包含其中一个文件名。

或使用子目录:

mkdir converted
for f in *.mp4; do ffmpeg -i "$f" -map_metadata -1 -c:v copy -c:a copy "converted/$f"; done