以下命令获取 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
- 创建一个文件并以 .bat 扩展名保存
- 在其中写入下面的代码。(指定正确的图像文件)
- 将批处理文件复制到包含 .mp3 文件的目录中。
- 假设您的环境变量中设置了 ffmpeg.exe 的路径,请执行批处理文件
- 在创建的文件夹“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
文件夹中,如您的评论所示:
- 启动命令提示符:
<windows key>+r --> cmd --> <enter>
- 更改为下载目录:
cd Downloads
- 运行循环
ffmpeg
命令:for %f in (*.mp3) do ffmpeg -i %f -loop 1 -i image.png -c:a copy -c:v libx264 -shortest %~nf.mp4
- (选修的)享受带有图像的 mp3 的 mp4 版本