FFmpeg:将文件夹中的所有音频(mp3)批量转换为带有专辑封面的视频(mp4)
FFmpeg: Batch convert all audio (mp3) in folder to video (mp4) with album artwork
我希望将文件夹中的所有音频 (mp3) 批量转换为带有专辑插图的视频 (mp4)。这用于将音频上传到 youtube。我有相当多的工作代码,但我想自动化整个事情。
Here's the code from .bat file I'm using.
(来源:FFMpeg Batch Image + Multiple Audio to video)
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
- "C:\ffmpeg\bin\ffmpeg"编解码器文件夹
- "C:\ffmpeg\bin\input.jpg" 图片路径
- "C:\mp4\%%~na.mp4" 输出文件夹
- -vf scale=854:480 您可以指定视频的分辨率 16:9 for youtube video
- -c:a aac -shortest 使用aac编解码器,通过指定-shortest 视频长度将匹配音频长度
这很好用,只是我每次都必须手动放置专辑封面。我想让ffmpeg自动从每个音频文件中提取专辑封面,然后将其批量转换为视频。
This is the code for extracting album art from .mp3 files
ffmpeg -i input.mp3 -an -vcodec copy cover.jpg
谢谢。
只需将提取命令移动到循环中即可。像(未经测试的)这样的东西:
echo off
for %%a in ("*.mp3") do (
ffmpeg -i "%%a" -an -vcodec copy "C:\mp4\%%~na.jpg"
"C:\ffmpeg\bin\ffmpeg" -loop 1 -i "C:\mp4\%%~na.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
我已经弄明白了。感谢@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 帮助我编写此代码。请随时提出任何问题,我会尽力提供帮助。我刚学这个,正如我的用户名所说,我是菜鸟:)
我希望将文件夹中的所有音频 (mp3) 批量转换为带有专辑插图的视频 (mp4)。这用于将音频上传到 youtube。我有相当多的工作代码,但我想自动化整个事情。
Here's the code from .bat file I'm using.
(来源:FFMpeg Batch Image + Multiple Audio to video)
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
- "C:\ffmpeg\bin\ffmpeg"编解码器文件夹
- "C:\ffmpeg\bin\input.jpg" 图片路径
- "C:\mp4\%%~na.mp4" 输出文件夹
- -vf scale=854:480 您可以指定视频的分辨率 16:9 for youtube video
- -c:a aac -shortest 使用aac编解码器,通过指定-shortest 视频长度将匹配音频长度
这很好用,只是我每次都必须手动放置专辑封面。我想让ffmpeg自动从每个音频文件中提取专辑封面,然后将其批量转换为视频。
This is the code for extracting album art from .mp3 files
ffmpeg -i input.mp3 -an -vcodec copy cover.jpg
谢谢。
只需将提取命令移动到循环中即可。像(未经测试的)这样的东西:
echo off
for %%a in ("*.mp3") do (
ffmpeg -i "%%a" -an -vcodec copy "C:\mp4\%%~na.jpg"
"C:\ffmpeg\bin\ffmpeg" -loop 1 -i "C:\mp4\%%~na.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
我已经弄明白了。感谢@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 帮助我编写此代码。请随时提出任何问题,我会尽力提供帮助。我刚学这个,正如我的用户名所说,我是菜鸟:)