将多个音频剪辑与一个图像组合在一起的 ffmpeg 批处理脚本 > mp4

ffmpeg batch script that combines multiple audio clips with one image > mp4

我在另一个线程中找到了这个脚本并对其进行了编辑:

@echo off
for %%F in (*.jpg) do (
   if exist "%%~nF.mp3" ( 
      ffmpeg -loop 1 -i "%%~nF.jpg" -i "%%~nF.mp3" -acodec libvo_aacenc -vcodec mpeg4 -shortest "%%~nF.mp4" 
   ) 
)

它将所有 mp3 文件和所有共享相同文件名的 jpeg 文件组合成一个带有静态图像的 mp4 视频 运行。

但问题是 - 如果我想使用同一图像转换多个 mp3 文件(假设是三个 mp3),我必须将同一 jpeg 图像复制三次!

例如,如果我有三个 Michael Jackson mp3 文件:

MJ1.mp3
MJ2.mp3
MJ3.mp3

我需要创建:

MJ1.jpg
MJ2.jpg
MJ3.jpg

但实际上我只需要一张图片即可播放所有三首 mp3。

我需要对将所有 mp3 文件与一个 jpeg 文件合并的脚本进行哪些编辑?假设我希望文件夹中的每个 mp3 文件都使用 default.jpg 进行转换。我该怎么做?

反转循环。不要迭代图像,而是迭代声音文件。

@echo off
for %%F in (*.mp3) do (
      ffmpeg -loop 1 -i "default.jpg" -i "%%~nxF" -acodec libvo_aacenc -vcodec mpeg4 -shortest "%%~nF.mp4" 
)