首页 > 解决方案 > 如何使用 FFMPEG 连接两个视频(一个没有音频,一个有音频)

问题描述

ffmpeg -i video1.avi -i video2.avi -filter complex “[0:v:0] [0:a:0] [1:v:0] [1:a:0] concat=n=2:v =1:a=1 [v] [a]” -map “[v]” -map “[a]” output_video.avi

video1.avi ---> 这个视频没有音频流,只有视频流 video2.avi ---> 有视频和音频流

[错误]

filtergraph 描述中的流说明符 ':a:0' [0:v] [0:a:0] [1:v] [1:a:0] concat=n=2:v=1:a=1 [v ] [a] 不匹配任何流。

如何连接这两个视频?

使用下面的命令,可以把这两个视频集中起来,但是输出的视频没有音频,这个问题怎么解决?

ffmpeg.exe -i video1.avi -y 1.ts

ffmpeg.exe -i video2.avi -y 2.ts

ffmpeg.exe -i concat:1.ts|2.ts -f output.mp4

标签: ffmpeg

解决方案


我使用 Laravel,这段代码对我有用:

无音频:

exec("ffmpeg -i " . $URLVIDEO1 . " -i " . $URLVIDEO2 . " -filter_complex \"[0:v:0] [1:v:0] concat=n=2:v=1 [v]\" -map \"[v]\" " . $URLVIDEOFINAL);

带音频:

exec("ffmpeg -i " . $URLVIDEO1 . " -i " . $URLVIDEO2 . " -filter_complex \"[0:v:0] [0:a:0] [1:v:0] [1:a:0] concat=n=2:v=1:a=1 [v] [a]\" -map \"[v]\" -map \"[a]\" " . $URLVIDEOFINAL);

显然,原始变量不是这样命名的。我希望我能帮助你


推荐阅读