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

时间:2019-02-09 05:24:24

标签: bash ffmpeg batch-processing

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

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

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

有人可以帮我这个脚本吗?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

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仅替换名称部分。