为不同尺寸的 ffmpeg 幻灯片图像添加填充

问题描述 投票:0回答:0

我有一个 ffmpeg 命令,它需要 3 个音频文件和 3 个图像文件,并将 3 个音频文件连接成一个长度为 870.04 秒的视频,其中图像以幻灯片形式播放,每个图像显示 290.015 秒。

您可以将命令复制并粘贴到您的网络浏览器搜索栏中,将其变成一行,然后运行它(文件路径为 win10 命令提示符格式化)

ffmpeg 
-r 2 -i "E:\myFolder\10. Deejay Punk-Roc - Knock 'em All The Way Out.aiff"
-r 2 -i "E:\myFolder\11. Deejay Punk-Roc - Spring Break.aiff"
-r 2 -i "E:\myFolder\12. Deejay Punk-Roc - Fat Gold Chain.aiff"
-r 2 -i "E:\myFolder\1_front.jpg"
-r 2 -i "E:\myFolder\2_back.jpg"
-r 2 -i "E:\myFolder\3_cd.jpg"

-filter_complex "[0:a][1:a][2:a]concat=n=3:v=0:a=1[a];[3:v]scale=w=600:h=593,setsar=1,loop=580.03:580.03[v3];[4:v]scale=w=600:h=593,setsar=1,loop=580.03:580.03[v4];[5:v]scale=w=600:h=593,setsar=1,loop=580.03:580.03[v5];[v3][v4][v5]concat=n=3:v=1:a=0,pad=ceil(iw/2)*2:ceil(ih/2)*2[v]"

-map "[v]" -map "[a]" -c:a pcm_s32le -c:v libx264 -bufsize 3M -crf 18 -pix_fmt yuv420p -tune stillimage -t 870.04 

"E:\myFolder\newOutputVid.mkv" 

这个命令最复杂的部分,也就是每张图片显示多长时间背后的逻辑,是 filter_complex 参数,我将在下面尝试解释:

-filter_complex "

//concat the three audio files. [0:a] is referring to the 0'th file input which is audio file 'Knock 'em All The Way Out'
[0:a][1:a][2:a]concat=n=3:v=0:a=1[a];

//file input 3, is the first image, 
[3:v]scale=w=600:h=593,setsar=1,loop=580.03:580.03[v3];[4:v]scale=w=600:h=593,setsar=1,loop=580.03:580.03[v4];[5:v]scale=w=600:h=593,setsar=1,loop=580.03:580.03[v5];

//concat the three images in order
//set output resolution
[v3][v4][v5]concat=n=3:v=1:a=0,pad=ceil(iw/2)*2:ceil(ih/2)*2[v]"

对于渲染后的输出视频,第一张图片显示正确,因为视频分辨率 600w x 593h 与图片本身相同

然而,第二张图片被拉伸以适合视频的框架。

我如何为

[4:v]
编辑我的filter_complex行,第四个输入文件是第二个图像
2_back.jpg
,这样图像就不会被拉伸?也许喜欢添加黑色背景填充以使图像在框架中完全可见而不被裁剪/拉伸

下载文件: http://www.mediafire.com/folder/e8ja1n8elszk1lu,dxw4vglrz7polyh,ojjx6kcqruksv5r,lah9rano4svj46o,q5jg0083vbj9y1p,d3pt8ydf3ulqm5m/shared

ffmpeg command-prompt
© www.soinside.com 2019 - 2024. All rights reserved.