如何批处理 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
我使用 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