FFMPEG Crossfade 视频改变视频分辨率

FFMPEG Crossfade 视频改变视频分辨率

我目前正在使用此问题中的命令来淡入淡出两个视频:

使用 ffmpeg 在两个视频之间进行淡入淡出

我的命令:

ffmpeg -i firstVideo.mp4 -i secondVideo.mp4 -f lavfi -i color=black -    filter_complex \
"[0:v]format=pix_fmts=yuva420p,fade=t=out:st=4:d=1:alpha=1,setpts=PTS-STARTPTS[va0];\
[1:v]format=pix_fmts=yuva420p,fade=t=in:st=0:d=1:alpha=1,setpts=PTS-STARTPTS+4/TB[va1];\
[2:v]scale=640x360,trim=duration=9[over];\
[over][va0]overlay[over1];\
[over1][va1]overlay=format=yuv420[outv]" \
 -vcodec libx264 -map [outv] output.mp4

此交叉淡入淡出动画效果很好,只是它将视频缩小到 480x360,而不是所需的 640x360。元信息会错误地显示尺寸为 640x360,但我确信它们不是。

我也确信两个输入视频都是恰好 640x360。

我猜想缩小是由于像素格式造成的yuva420p,但我不确定我还有其他选择。我尝试过更改像素格式,但到目前为止没有任何效果。

上面给出的命令运行时没有任何错误。

答案1

使用

ffmpeg -i firstVideo.mp4 -i secondVideo.mp4 -f lavfi -i "color=black:s=640x360:d=9" 
-filter_complex \
"[0:v]format=pix_fmts=yuva420p,fade=t=out:st=4:d=1:alpha=1,setpts=PTS-STARTPTS[va0];\
[1:v]format=pix_fmts=yuva420p,fade=t=in:st=0:d=1:alpha=1,setpts=PTS-STARTPTS+4/TB[va1];\
[2:v][va0]overlay[over1];\
[over1][va1]overlay=format=yuv420[outv]" \
 -vcodec libx264 -map [outv] output.mp4

除非另有规定,否则颜色过滤器会输出 320x240 的视频。比例过滤器会尝试保留源宽高比 - 在本例中为 4:3,因此视频被编码为 640x360,但显示宽高比为 4:3,因此显示为 480x360。

相关内容