如何使用ffmpeg批量转换文件?

时间:2017-09-08 06:38:14

标签: batch-file cmd ffmpeg

我想使用ffmpeg将多个.mp4文件转换为.mp3。以下是我提出的建议:

cd (the folder I want to use)
set counter = 1
for /r %%file in (*) (
ffmpeg %%file -i "Track %counter%.mp3"
set counter = counter + 1
)

但它没有用。我猜测我犯了一些基本的语法错误,但我无法弄清楚是什么。我做错了什么?

2 个答案:

答案 0 :(得分:0)

  1. 除了算术/a表达式

    之外,空格在变量赋值中是有意义的

    ::更正确 set / a counter = 1 ::也因为/a而起作用 set / a counter = 1

  2. for中变量的名称仅限于一个字母字符a-z A-Z

    for / r%f

  3. (..)中的扩展在for命令开始之前完成,以避免此setlocal enabledelayedexpansions或调用函数,也可以使用echo before命令来帮助调试

    < / LI>

    一起

    :: cd (the folder I want to use)
    
    set /a counter=1
    
    for /r %%f in (*.*) do (
        call :proc %%f
        set /a counter=counter+1
    )
    :: to avoid to execute following functions
    @goto :eof
    
    :: functions
    
    :proc
    @echo ffmpeg -i %1 "Track %counter%.mp3"
    @goto :eof
    

答案 1 :(得分:0)

  1. 创建文件并以.bat扩展名保存
  2. 在其中编写以下代码。您可以根据需要更改节拍率。
  3. 将其复制到包含.mp4文件的目录中。
  4. 假设在您的环境变量中设置了ffmpeg.exe的路径,请执行批处理文件
  5. 在创建的文件夹“ converted”中找到已转换的文件。

@echo off
mkdir converted
for %%a in ("*.mp4") do ffmpeg -i "%%a" -b:a 192K -vn "converted\%%~na.mp3"
pause