使用ffmpeg 将图片合成为视频,填充模糊背景,并添加两段音乐
1.输入3张图片,每张播放一次,播放两秒,视频分辨率设置为1920:1080,每张图片前0.3秒淡入,后0.3秒淡出,图片宽高比不变,用白色填充空白区域
ffmpeg -loop 1 -t 2 -i "img1.jpg" \-loop 1 -t 2 -i "img2.jpg" \-loop 1 -t 2 -i "img3.jpg" \-filter_complex "[0:v]scale=1920:1080:force_original_aspect_ratio=1,pad=1920:1080:(ow-iw)/2:(oh-ih)/2:color=white,setsar=1,format=yuv420p,fade=t=in:st=0:d=0.3,fade=t=out:st=1.7:d=0.3[img1];[1:v]scale=1920:1080:force_original_aspect_ratio=1,pad=1920:1080:(ow-iw)/2:(oh-ih)/2:color=white,setsar=1,format=yuv420p,fade=t=in:st=0:d=0.3,fade=t=out:st=1.7:d=0.3[img2];[2:v]scale=1920:1080:force_original_aspect_ratio=1,pad=1920:1080:(ow-iw)/2:(oh-ih)/2:color=white,setsar=1,format=yuv420p,fade=t=in:st=0:d=0.3,fade=t=out:st=1.7:d=0.3[img3];[img1][img2][img3]concat=n=3:v=1:a=0[vfinal]" \-map "[vfinal]" \-c:v libx264 \-preset slow \-profile:v high \-crf 18 \-pix_fmt yuv420p \-movflags +faststart \-r 30 \output.mp4
2.输入一张图片,视频分辨率为1920:1080,生成两张图片,一张模糊用作背景,一张前端宽高比保持一致,生成5秒的视频
ffmpeg -loop 1 -t 5 -i img1.jpg \-vf "split=2[original][blurred];[blurred]scale=1920:1080,boxblur=20[blurred];[original]scale=1920:1080:force_original_aspect_ratio=1[original];[blurred][original]overlay=(W-w)/2:(H-h)/2,setsar=1" \-c:v libx264 \-s 1920x1080 \output222.mp4
3.输入3张图片,设置视频分辨率为1920:1080,每张图片生成模糊背景和一致宽高比前景
ffmpeg -loop 1 -t 5 -i "img1.jpg" \-loop 1 -t 5 -i "img2.jpg" \-loop 1 -t 5 -i "img3.jpg" \-filter_complex "[0:v]split=2[original][blurred];[blurred]scale=1920:1080,boxblur=20[blurred];[original]scale=1920:1080:force_original_aspect_ratio=1[original];[blurred][original]overlay=(W-w)/2:(H-h)/2,setsar=1,format=yuv420p,fade=t=in:st=0:d=0.3,fade=t=out:st=4.7:d=0.3[img1];[1:v]split=2[original][blurred];[blurred]scale=1920:1080,boxblur=20[blurred];[original]scale=1920:1080:force_original_aspect_ratio=1[original];[blurred][original]overlay=(W-w)/2:(H-h)/2,setsar=1,format=yuv420p,fade=t=in:st=0:d=0.3,fade=t=out:st=4.7:d=0.3[img2];[2:v]split=2[original][blurred];[blurred]scale=1920:1080,boxblur=20[blurred];[original]scale=1920:1080:force_original_aspect_ratio=1[original];[blurred][original]overlay=(W-w)/2:(H-h)/2,setsar=1,format=yuv420p,fade=t=in:st=0:d=0.3,fade=t=out:st=4.7:d=0.3[img3];[img1][img2][img3]concat=n=3:v=1:a=0[vfinal]" \-map "[vfinal]" \-c:v libx264 \-preset slow \-profile:v high \-crf 18 \-pix_fmt yuv420p \-movflags +faststart \-r 30 \output444.mp4
4.输入3张图片,设置视频分辨率为1920:1080,每张图片生成模糊背景和一致宽高比前景,添加两段音频合成视频
ffmpeg -loop 1 -t 5 -i "img1.jpg" \-loop 1 -t 5 -i "img2.jpg" \-loop 1 -t 5 -i "img3.jpg" \-i "搀扶.mp3" \-i "青花瓷.mp3" \-filter_complex "[0:v]split=2[original][blurred];[blurred]scale=1920:1080,boxblur=20[blurred];[original]scale=1920:1080:force_original_aspect_ratio=1[original];[blurred][original]overlay=(W-w)/2:(H-h)/2,setsar=1,format=yuv420p,fade=t=in:st=0:d=0.3,fade=t=out:st=4.7:d=0.3[img1];[1:v]split=2[original][blurred];[blurred]scale=1920:1080,boxblur=20[blurred];[original]scale=1920:1080:force_original_aspect_ratio=1[original];[blurred][original]overlay=(W-w)/2:(H-h)/2,setsar=1,format=yuv420p,fade=t=in:st=0:d=0.3,fade=t=out:st=4.7:d=0.3[img2];[2:v]split=2[original][blurred];[blurred]scale=1920:1080,boxblur=20[blurred];[original]scale=1920:1080:force_original_aspect_ratio=1[original];[blurred][original]overlay=(W-w)/2:(H-h)/2,setsar=1,format=yuv420p,fade=t=in:st=0:d=0.3,fade=t=out:st=4.7:d=0.3[img3];[img1][img2][img3]concat=n=3:v=1:a=0[vfinal];[3:a][4:a]amix=inputs=2[afinal]" \-map "[vfinal]" \-map "[afinal]" \-c:v libx264 \-c:a aac \-b:a 192k \-preset slow \-profile:v high \-crf 18 \-pix_fmt yuv420p \-movflags +faststart \-r 30 \-t 15 \output666.mp4
详细解释
输入部分
-
-loop 1 -t 5 -i "img1.jpg":将图片img1.jpg作为输入,循环显示 5 秒。 -
-loop 1 -t 5 -i "img2.jpg":将图片img2.jpg作为输入,循环显示 5 秒。 -
-loop 1 -t 5 -i "img3.jpg":将图片img3.jpg作为输入,循环显示 5 秒。 -
-i "搀扶.mp3":将音频文件搀扶.mp3作为输入。 -
-i "青花瓷.mp3":将音频文件青花瓷.mp3作为输入。
滤镜链部分
-
处理每张图片:
-
[0:v]split=2[original][blurred]:将输入流分成两个分支,分别标记为[original]和[blurred]。 -
[blurred]scale=1920:1080,boxblur=20[blurred]:-
将
[blurred]流缩放到1920x1080。 -
对
[blurred]流应用boxblur滤镜,模糊程度为 20。
-
-
[original]scale=1920:1080:force_original_aspect_ratio=1[original]:-
将
[original]流缩放到1920x1080,保持原始宽高比。
-
-
[blurred][original]overlay=(W-w)/2:(H-h)/2,setsar=1,format=yuv420p,fade=t=in:st=0:d=0.3,fade=t=out:st=4.7:d=0.3[img1]:-
将
[original]流覆盖到[blurred]流上,居中对齐。 -
使用
setsar=1设置采样宽高比为1:1。 -
将像素格式设置为
yuv420p。 -
添加淡入效果:
fade=t=in:st=0:d=0.3,在开始时持续 0.3 秒。 -
添加淡出效果:
fade=t=out:st=4.7:d=0.3,在结束前 0.3 秒。 -
将处理后的流标记为
[img1]。
-
同样的处理步骤应用于
img2.jpg和img3.jpg,分别标记为[img2]和[img3]。 -
-
拼接处理后的流:
-
[img1][img2][img3]concat=n=3:v=1:a=0[vfinal]:将三个处理后的流拼接在一起,生成最终的视频流[vfinal]。
-
-
混合音频:
-
[3:a][4:a]amix=inputs=2[afinal]:将两个音频流混合,生成最终的音频流[afinal]。
-
输出部分
-
-map "[vfinal]":指定输出流为[vfinal]。 -
-map "[afinal]":指定输出流为[afinal]。 -
-c:v libx264:使用 H.264 编码器。 -
-c:a aac:使用 AAC 编码器。 -
-b:a 192k:设置音频比特率为 192 kbps。 -
-preset slow:使用slow预设,以获得更好的压缩效果。 -
-profile:v high:使用high配置文件。 -
-crf 18:设置质量为18(较低的值表示更高的质量)。 -
-pix_fmt yuv420p:设置像素格式为yuv420p。 -
-movflags +faststart:优化视频文件,使其更适合网络播放。 -
-r 30:设置帧率为 30 帧/秒。 -
-t 15:设置输出视频的总时长为 15 秒。 -
output666.mp4:输出文件名。
可以去官网下载ffmpeg

输入文件下载
通过网盘分享的文件:图片生成视频.rar
链接: https://pan.baidu.com/s/1Vc4JbnCjvP_PFHwF-TyfvA?pwd=fiy1 提取码: fiy1
