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

时间:2019-03-07 12:45:23

标签: video ffmpeg aspect-ratio video-editing

我正在尝试制作一个用户可以在其中发送视频的应用程序,它将自动与其他视频并置。因此,视频为随机格式,但是我要在连接之前使用以下命令对其进行转换:

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

谢谢您的回答

2 个答案:

答案 0 :(得分:1)

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

例如:

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

有关更多信息,请参见https://trac.ffmpeg.org/wiki/Scaling

答案 1 :(得分: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