将图像和音频加入结果视频

标签 join audio video ffmpeg command

我有很多不同尺寸的图像(即 1024x768 和 900x942)和一个 30 秒的音频文件 (audio.mp3),我需要用它们创建一个视频。

我现在正在尝试:result%d.png(1 到 4)和 audio.mp3

ffmpeg -y -i result%d.png -i audio.mp3 -r 30 -b 2500k -vframes 900
-acodec libvo_aacenc -ab 160k video.mp4

视频 video.mp4 有 30 秒,但前 3 张图像显示得非常快,最后一张图像一直保留到音频结束。

每个图像需要在相同的时间内显示,直到音频结束。有人知道怎么做吗?

图片的数量有时会有所不同。

最佳答案

FFMPEG 版本:3.2.1-1

Ubuntu 16.04.1

想象一下,您有一个名为 wow.mp3 的 mp3 音频文件,在这种情况下,以下命令将获取 mp3 的持续时间(以秒为单位)。

ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 wow.mp3

一旦你有了以秒为单位的持续时间(假设我有 11.36 秒)。现在因为我有 3 个图像,我想运行每个图像 (11.36/3 = 3.79),然后请使用以下命令:

ffmpeg -y -framerate 1/3.79 -start_number 1 -i ./swissGenevaLake_%d.jpg -i ./akib.mp3 -c:v libx264 -r 25 -pix_fmt yuv420p -c:a aac -strict experimental -shortest output.mp4

这里的图像是 ./swissGenevaLake_1.jpg、./swissGenevaLake_2.jpg 和 ./swissGenevaLake_3.jpg。

-framerate 1/3.784 表示每张图像运行 3.784 秒。

-start_number 1 表示,从第一个图像开始,意思是 ./swissGenevaLake_1.jpg

-c:v libx264: 视频编解码器 H.264

-r 25: 输出视频帧率25

-pix_fmt yuv420p: 输出视频像素格式。

-c:a aac:使用aac编码音频

-最短:音频一结束就结束视频。

output.mp4:输出文件名

免责声明:我没有测试合并多种尺寸的图像。

引用资料:

https://trac.ffmpeg.org/wiki/Create%20a%20video%20slideshow%20from%20images

https://trac.ffmpeg.org/wiki/Encode/AAC

http://trac.ffmpeg.org/wiki/FFprobeTips

关于将图像和音频加入结果视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13824045/

相关文章:

video - 我不能用 ffplay 播放 HEVC 编码的 Flv 格式的视频文件

google-chrome - Webrtc对等连接使用不同的sdpConstraints创建应答/提供

sql - SQL:如何基于最大日期时间为多个ID选择单个记录?

postgresql - 如何通过加入的 hstore 键在一个组上计数不同?

ios - iOS在渲染回调处理之前添加音频效果?

audio - 如何找到满足我需要的动物声音数据库?

sql - 在内连接条件之前过滤表

MySQL JOIN 三个表使用一个表的行值

python - Librosa:过滤奈奎斯特以外的通带

javascript - 使用 Broadway.js 解码原始 h.264