我使用以下代码行创建了一个镶嵌视频输出,其中包含四个从特定位置和时间开始的视频。以下是我使用的代码行
ffmpeg -i lead_1.mp4 -i lead_2.mp4 -i lead_3.mp4 -i lead_4.mp4
-filter_complex
"color=s=1280x720:c=black [base];
[0:v] setpts=PTS-STARTPTS, scale= 640x360 [upperleft1];
[1:v] setpts=PTS+35/TB, scale=640x360 [lowerright1];
[2:v] setpts=PTS+87/TB, scale=640x360 [upperleft2];
[3:v] setpts=PTS+183/TB, scale=640x360 [lowerright2];
[base][upperleft1] overlay=1 [tmp1];
[tmp1][lowerright1] overlay=1:x=640:y=360 [tmp2];
[tmp2] [upperleft2] overlay=1 [tmp3];
[tmp3][lowerright2] overlay=1:x=640:y=360"
-c:v libx264 lead_1_2_3_4.mp4
因此,输出文件不包含所有视频的音频流。我是FFMPEG的新手,所以有人可以建议我如何在输出中甚至获得所有输入文件的音频流吗?
答案 0 :(得分:0)
ffmpeg -i lead_1.mp4 -i lead_2.mp4 -i lead_3.mp4 -i lead_4.mp4
-filter_complex
"color=s=1280x720:c=black [base];
[0:v] setpts=PTS-STARTPTS, scale= 640x360 [upperleft1];
[1:v] setpts=PTS+35/TB, scale=640x360 [lowerright1];
[2:v] setpts=PTS+87/TB, scale=640x360 [upperleft2];
[3:v] setpts=PTS+183/TB, scale=640x360 [lowerright2];
[base][upperleft1] overlay[tmp1];
[tmp1][lowerright1] overlay=x=overlay_w:y=overlay_h [tmp2];
[tmp2] [upperleft2] overlay [tmp3];
[tmp3][lowerright2] overlay=x=overlay_w:y=overlay_h[v];
[1]adelay=35s:all=1[a1];
[2]adelay=87s:all=1[a2];
[3]adelay=183s:all=1[a3];
[0:a][a1][a2][a3]amix=inputs=4[a]"
-map "[v]" -map "[a]"
-c:v libx264 lead_1_2_3_4.mp4
如果您的ffmpeg
很旧,请改用adelay=35000|35000
(假设立体声输入)。