首页 > 解决方案 > FFmpeg:将文件夹中的所有音频(mp3)批量转换为带有专辑插图的视频(mp4)

问题描述

我正在寻找将文件夹中的所有音频(mp3)批量转换为带有专辑插图的视频(mp4)。这用于将音频上传到 youtube。我几乎有一个工作代码,但我想自动化整个事情。

这是我正在使用的 .bat 文件中的代码。

(来源:FFMpeg 批量图像 + 多音频转视频

echo off
for %%a in ("*.mp3") do "C:\ffmpeg\bin\ffmpeg" -loop 1 -i  "C:\ffmpeg\bin\input.jpg.jpg" -i "%%a" -c:v libx264 -preset veryslow -tune stillimage -crf 18 -pix_fmt yuv420p -c:a aac -shortest -strict experimental -b:a 192k -shortest "C:\mp4\%%~na.mp4"
pause

这很好用,除了我每次都必须手动放置专辑封面。我希望 ffmpeg 自动从每个音频文件中提取专辑封面,然后将其批量转换为视频。

这是从 .mp3 文件中提取专辑封面的代码

ffmpeg -i input.mp3 -an -vcodec copy cover.jpg

谢谢。

标签: audiovideoffmpegbatch-processingalbumart

解决方案


我已经想通了。感谢@ L. Scott Johnson的帮助。

这是代码

echo off
for %%a in ("*.mp3") do (
  "C:\ffmpeg\bin\ffmpeg.exe" -i "%%a" -an -y -vcodec copy "E:\songgs\%%~na.jpg"
  "C:\ffmpeg\bin\ffmpeg.exe" -loop 1 -i  "E:\songs\%%~na.jpg" -i "%%a" -y -c:v libx264 -preset veryslow -tune stillimage -crf 18 -pix_fmt yuv420p -c:a aac -shortest -strict experimental -b:a 192k -shortest "E:\songs\%%~na.mp4" )
pause

这是代码的基本版本。

您可以从代码中编辑许多内容。

例如,您可以使用此代码为同步歌词添加字幕

-vf "subtitles=%%~na.srt"

使用此代码调整封面大小

-vf "scale=1500:1500"

如果你想把它们放在一起,只需用逗号 (,) 添加它们,如下所示:

-vf "pad=ceil(iw/2)*2:ceil(ih/2)*2,subtitles=%%~na.srt"

您还可以将编码器更改为 Nvidia NVENC 以获得更快的编码...

还有更多……你明白了。

再次感谢@L . Scott Johnson帮助我编写此代码。随时提出任何问题,我会尽力提供帮助。我只是在学习这个,正如我的用户名所说,我是菜鸟 :)


推荐阅读