我有很多不同尺寸的图像(即 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
关于将图像和音频加入结果视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13824045/