合并音频和图像 -> 使用 FFmpeg 输出为视频

合并音频和图像 -> 使用 FFmpeg 输出为视频

我有 1 幅图像(jpg)和 1 个音频文件(MP3),我想将其输出为视频文件(例如 AVI)。

有人知道如何使用 FFMPEG 将两者连接起来吗?我想在音频持续时间内显示图像。

有人有什么想法吗?

答案1

如果你使用的是 Windows,你也可以在 Windows Movie maker 中执行此操作...如果你需要说明,请发表评论

对于 FFmpeg 使用这个

ffmpeg -loop_input -vframes 14490 -i imagine.jpg -i audio.mp3 -y -r 30 
    -b 2500k -acodec ac3 -ab 384k -vcodec mpeg4 result.mp4
  • vframes 14490 是整个 audio.mp3 文件为了获得连续图像应循环的帧数

    例如:8 分 3 秒 ((8m x 60s + 3s) x 30fps = 14490 vf)

资源来自这里

答案2

有一种比这里建议的方法更简单的方法,不需要计算帧数或输入单个文件的长度(特别适合批处理)。使用最新版本的 ffmpeg,您可以使用该-shortest选项,当最短的流结束时停止编码 - 在本例中为 input.mp3(由于图像将永远循环,因此它的长度无限):

ffmpeg -i input.mp3 -f image2 -loop 1 -r 2 -i input.jpg \
-shortest -c:a copy -c:v libx264 -crf 23 -preset veryfast output.mp4

这对图像/视频使用每秒 2 帧,这应该没问题,但如果您愿意,可以将其设置为更标准的 25 帧。

答案3

subanki 几乎做对了。工作命令行如下;

ffmpeg -y -loop 1 -i image.jpg -i audio.mp3 -r 30 -b:v 2500k -vframes 14490 -acodec libvo_aacenc -ab 160k result.mp4
-y

不经提示覆盖输出文件

-循环 1

选项 '-loop_input' 已弃用,请使用 -loop 1。请参阅ffmpeg 文档

-我

输入文件

-r

每秒帧数
也可以表示为:-r 30000/1001,得出 fps 为 29.97nnn

-b:v

视频比特率;数字越高,质量越好,文件越大。

-vframes

如上所述;以秒为单位计算音频文件的总时间(例如 00:02:41(2 分 41 秒)等于 161 秒(2 x 60)+ 41)。然后将总秒数乘以您使用 -r 指定的每秒帧数(例如 161 x 30 = 4830)。

-vframes 可以替换为 -t 161(-t 持续时间记录或转码“持续时间”秒的音频/视频)

-acodec

使用适合您所创建文件类型的正确音频编解码器。对于 .mp4,它应该是 AAC 格式。编解码器 libvo_aacenc 是我的 Windows 7 系统的正确编码编解码器。

-ab

音频比特率

结果.mp4

这是输出文件的名称。它可以是系统的任何合法文件名。如果您未使用 -vcodec 指定视频编解码器,则扩展名将帮助 ffmpeg 确定正确的视频编解码器。

答案4

下载虚拟配音,然后执行以下操作:

  1. 像打开普通视频文件一样打开图像。

  2. 计算音频的时长(以秒为单位)并将其四舍五入为最接近的整秒(例如 78.34 秒变为 79 秒)。从现在起,这个值称为 x。

  3. 转到“视频 > 帧速率”,选择“更改为帧速率 (fps)”,然后输入“1/x”作为值。此外,如果您希望生成的文件具有正常帧速率(如 25 fps),请选择“转换为 fps”,然后在其中输入所需的帧速率。

  4. 选择“视频 > 压缩”,然后选择您喜欢的风格。您可能需要使用调整大小过滤器调整图像的大小。

  5. 转到“音频 > 其他文件的音频”,然后在那里选择您的音频。如果需要,请选择音频的压缩。

  6. 保存文件。

来源:斯蒂芬V

相关内容