【问题标题】:FFMPEG - Batch convert subfoldersFFMPEG - 批量转换子文件夹
【发布时间】:2013-04-15 01:05:40
【问题描述】:

我正在尝试设置一个 Windows 批处理文件来使用 FFMPEG 转换多个 MP4 文件。多个子文件夹中有许多文件,因此我需要在每个子文件夹中的每个文件上执行脚本。

恐怕我没有太多使用批处理文件的经验,但根据我的研究,我得到了以下命令文本:

FOR %%i in (*.mp4) /R DO (ffmpeg32 -i "%%~ni.mp4" -map 0:0 -map 0:1 -map 0:1    -c:v copy   -c:a:0 aac -b:a 128k -ac 2 -strict -2 -cutoff 15000  -c:a:1 copy "%~ni&(2).mp4")

脚本基本上需要将 AAC 音频流添加到现有 MP4 文件中,因此我需要通过在文件名末尾添加 (2) 来更改输出名称。

我已经单独测试了 ffmpeg 命令,很高兴它可以工作 - 我只需要获取正确的批处理命令。

提前感谢任何指点!

干杯

【问题讨论】:

    标签: windows batch-file ffmpeg


    【解决方案1】:

    试试这个:

    @echo off & setlocal
    FOR /r %%i in (*.mp4) DO ffmpeg32 -i "%%~fi" -map 0:0 -map 0:1 -map 0:1 -c:v copy -c:a:0 aac -b:a 128k -ac 2 -strict -2 -cutoff 15000 -c:a:1 copy "%%~dpni(2)%%~xi"
    

    【讨论】:

    • 谢谢大佬,辛苦了。以我自己的理解,"%%~fi" 和 "%%~dpni"/"%%~xi" 在批处理文件中实际上是做什么的?
    • %%~f --> 全名(驱动器+路径+文件+ext),~dpn --> 驱动器+路径+文件,~x --> 扩展名(.MP4),如需更多帮助,请参阅命令行中的help for
    【解决方案2】:

    此 Windows 批处理 (.bat) 脚本将从子文件夹(或嵌套目录)内的 mp4 文件中删除音频,然后删除旧文件。它被 SLEEP 命令减慢,因为在文件删除之前显然存在问题,然后在windows 和 linux 中复制。

    FOR /r %%i in (*.mp4) DO ffmpeg.exe -i  "%%~fi" -vcodec copy -an "%%~dpni(2)%%~xi" &&  sleep 1 &&    del "%%~fi"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-02
      • 2017-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-20
      相关资源
      最近更新 更多