如何使用 ffmpeg 将多个 mp3 文件转换为 mp4?

如何使用 ffmpeg 将多个 mp3 文件转换为 mp4?

以下命令获取 mp3、附加图像并将其转换为 mp4:

ffmpeg -i 输入.mp3 -loop 1 -i 图像.png -c:a 复制 -c:v libx264 -shortest 输出.mp4

我正在尝试将同一张图片应用于文件夹中的每个 mp3。操作系统是 Windows 8,文件所需的输出是 mp4。

我需要对文件夹中的所有 mp3 执行此操作。我该如何编写代码?

PS 我还需要可以将介绍 mp4 附加到文件夹中的多个 mp4 文件的代码。

答案1

  1. 创建一个文件并以 .bat 扩展名保存
  2. 在其中写入下面的代码。(指定正确的图像文件)
  3. 将批处理文件复制到包含 .mp3 文件的目录中。
  4. 假设您的环境变量中设置了 ffmpeg.exe 的路径,请执行批处理文件
  5. 在创建的文件夹“converted”中找到转换后的文件。

@echo off
mkdir converted
for %%a in ("*.mp3") do ffmpeg -i "%%a" -loop 1 -i image.png -c:a copy -c:v libx264 -shortest "converted\%%~na.mp4"
pause

答案2

您可以使用脚本语言来完成此类工作。这里有一个小的 Ruby 脚本,如果您在包含以下文件的文件夹中运行它,它应该可以完成这项.mp3工作image.png

Dir.glob("*.mp3").each do |file|
    system("ffmpeg -i #{file} -loop 1 -i image.png -c:a copy -c:v libx264 -shortest output.mp4")
end

答案3

假设是标准的 Windows cmd.exe(即没有可爱的cygwin,或 Powershell,或<insert scripting language here>):

for %f in (*.mp3) do ffmpeg -i %f -loop 1 -i image.png -c:a copy -c:v libx264 -shortest %~nf.mp4

(还假设不在批处理文件中;如果是这种情况,则%s 需要加倍为%%

利用您可以在当前文件(或目录等,取决于您传递给的参数for)中读取单字符变量的事实;然后您可以通过获取其基本名称%~n

因此,假设您的 mp3 和image.png位于您的Downloads文件夹中,如您的评论所示:

  1. 启动命令提示符:<windows key>+r --> cmd --> <enter>
  2. 更改为下载目录:cd Downloads
  3. 运行循环ffmpeg命令:for %f in (*.mp3) do ffmpeg -i %f -loop 1 -i image.png -c:a copy -c:v libx264 -shortest %~nf.mp4
  4. (选修的)享受带有图像的 mp3 的 mp4 版本

相关内容