【问题标题】:FFmpeg: Batch convert all audio (mp3) in folder to video (mp4) with album artworkFFmpeg:将文件夹中的所有音频(mp3)批量转换为带有专辑插图的视频(mp4)
【发布时间】:2020-05-11 03:00:46
【问题描述】:

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

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

(来源: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 您可以为 youtube 视频指定 16:9 的视频分辨率
  • -c:a aac -shortest 使用 aac 编解码器,通过指定 -shortest 视频长度将匹配音频长度

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

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

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

谢谢。

【问题讨论】:

    标签: audio video ffmpeg batch-processing albumart


    【解决方案1】:

    我想通了。感谢@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 帮助我编写此代码。随时提出任何问题,我会尽力提供帮助。我只是在学习这个,正如我的用户名所说,我是一个菜鸟:)

    【讨论】:

      【解决方案2】:

      只需将提取命令移动到循环中即可。像(未经测试)这样的东西:

      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
      

      【讨论】:

      • 非常感谢您的帮助。它会自动将专辑封面从 .mp3 文件提取到文件夹中。不幸的是,在那之后它就不起作用了..之后我没有继续将音乐转换为视频文件...只是显示此错误.. [png @ 000001cb67b4ce00] 无效的 PNG 签名 0x89504E470D0A1A。 [png @ 000001cb67b49e80] 无效的 PNG 签名 0x89504E470D0A1A。解码流 #0:0 时出错:处理输入时发现无效数据 最后一条消息重复 1 次 i.imgur.com/lQ2WPrq.png
      • 我的 jpg 文件名不一致。我已经编辑了我的答案以纠正这个问题。同样,未经测试 - 因此您可能必须调整第二个 ffmpeg 命令以匹配名称/格式或第一个生成的任何内容。如果失败,只需为第二个命令尝试各种构造(使用循环的输出 jpg 文件之一作为示例),直到找出可行的方法,然后在循环中使用它。
      • 再次感谢您的帮助。不幸的是,它不起作用。显示相同的错误.. i.imgur.com/uN90IKh.png 在编码方面我绝对是菜鸟。所以,我没有机会解决这个问题。如果可以的话,有时间的话,请看看这个。应该相当简单,因为大部分工作已经完成。我将永远感激不尽。再次感谢您的帮助。
      • 什么命令(不在循环中)与循环输出的 jpg 文件之一正常工作?一旦你找到它,你应该能够将它用作循环中第二个命令的模板。
      • 不幸的是我不会编码。所以,我不知道如何解决它。如果可以的话,请调查一下。再次感谢。
      猜你喜欢
      • 2016-11-21
      • 2021-12-23
      • 2020-08-25
      • 1970-01-01
      • 1970-01-01
      • 2011-03-02
      • 2011-03-16
      • 2016-01-04
      • 2017-03-11
      相关资源
      最近更新 更多