FFMPEG连接2个随机和不同的视频

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

我正在尝试创建一个用户可以发送视频的应用程序,它将自动与其他视频连接。所以视频是随机格式的,但我在使用此命令连接之前将它们转换为:

ffmpeg -y -i {orginalVideo.itsExtention} -vcodec wmv2 4.wmv

对于串联,我有以下命令:

ffmpeg -y -i concat.wmv -i 4.wmv -filter_complex "[0:0][0:1][1:0][1:1] concat=n=2:v=1:a=1" output.wmv

但是我收到以下错误

Input link in1:v0 parameters (size 640x480, SAR 1:1) do not match the corresponding output link in0:v0 parameters (1080x1920, SAR 1:1)

Failed to configure output pad on Parsed_concat_0
Error reinitializing filters!
Failed to inject frame into filter network: Invalid argument
Error while processing the decoded data for stream #1:0

谢谢您的回答

video ffmpeg aspect-ratio video-editing
2个回答
1
投票

视频大小必须相同(像素尺寸)。输出流不能在中途改变大小。因此,将一个(或两个)调整为所需的大小。

e.g:

ffmpeg -y -i {orginalVideo.itsExtention} -vf scale=640:480 -vcodec wmv2 4.wmv

请参阅https://trac.ffmpeg.org/wiki/Scaling了解更多信息。


0
投票

使用单独的缩放步骤效率不高,如果使用有损编码器,将会引入另一代的质量损失。

由于您已经重新编码,因此可以使用相同的命令进行缩放:

ffmpeg -y -i concat.wmv -i 4.wmv -filter_complex "[1:v]scale=1080:1920,setsar=1[v1];[0:v][0:a][v1][1:a]concat=n=2:v=1:a=1[v][a]" -map "[v]" -map "[a]" output.wmv

或者您可以使用更复杂的命令来避免由于纵横比差异导致拉伸或压扁:

ffmpeg -y -i concat.wmv -i 4.wmv -filter_complex "[1:v]scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2,setsar=1[v1];[0:v][0:a][v1][1:a]concat=n=2:v=1:a=1[v][a]" -map "[v]" -map "[a]" output.wmv
© www.soinside.com 2019 - 2024. All rights reserved.