【问题标题】:How to batch process a directory of mp4 files to remove their metadata?如何批量处理 mp4 文件目录以删除其元数据?
【发布时间】:2019-02-09 05:24:23
【问题描述】:

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

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

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

我该怎么做?

【问题讨论】:

    标签: bash ffmpeg batch-processing


    【解决方案1】:
    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
    

    【讨论】:

    • 嗨赛勒斯谢谢它的工作! :-) 是否有在删除元数据后添加删除目录中的原始文件,然后按照文件的原始名称保留更新的文件?
    • @Cyrus 请添加解释,我们不只是为了“做这项工作”......接下来的人需要学习和理解......否则一个简单的变化该请求将使此解决方案无用..
    • @MerakMarey:感谢您的有用提示。我已经更新了我的答案。
    【解决方案2】:

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

    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 仅用于替代名称部分。

    【讨论】:

    • 抱歉,我想要一个 bash 脚本,它可以使用我上面给出的命令在批处理过程中批量转换我的所有 mp4 文件。
    • 那么,你想要一个可行的解决方案而不是指点方向......正确吗?
    • 是的,我不熟悉 shell 或批处理脚本。谢谢!
    • 好的,我会编辑我的答案。如果有效,记得投票。 ;)
    • 抱歉,我正在寻找一个 bash shell 脚本而不是 windows bat 脚本?
    猜你喜欢
    • 2018-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-06
    相关资源
    最近更新 更多