Ниже приведен шаблон одношаговой команды, предполагающий пять срезов.
ffmpeg -i input.mp4 -i input.mp4 -i input.mp4 -i input.mp4 -i input.mp4 \
-filter_complex \
"[0:v]trim=0.5:4.5,setpts=PTS-STARTPTS[1]; \
[1:v]trim=12:17,setpts=PTS-STARTPTS+(3/TB),format=yuva420p,fade=in:st=3:d=1:alpha=1[2]; \
[2:v]trim=34.1:36,setpts=PTS-STARTPTS+(7/TB),format=yuva420p,fade=in:st=7:d=1:alpha=1[3]; \
[3:v]trim=21:25,setpts=PTS-STARTPTS[4]; \
[4:v]trim=27:31,setpts=PTS-STARTPTS+(3/TB),format=yuva420p,fade=in:st=0:d=1:alpha=1[5]; \
[0:a]atrim=0.5:4.5,asetpts=PTS-STARTPTS[1a]; \
[1:a]atrim=12:17,asetpts=PTS-STARTPTS[2a]; \
[2:a]atrim=34.1:36,asetpts=PTS-STARTPTS[3a]; \
[3:a]atrim=21:25,asetpts=PTS-STARTPTS[4a]; \
[4:a]atrim=27:31,asetpts=PTS-STARTPTS[5a]; \
[1][2]overlay,format=yuv420p[12]; \
[12][3]overlay,format=yuv420p[123]; \
[4][5]overlay,format=yuv420p[45]; \
[1a][2a]acrossfade=d=1[12a]; \
[12a][3a]acrossfade=d=1[123a]; \
[4a][5a]acrossfade=d=1[45a]; \
[123][123a][45][45a]concat=n=2:v=1:a=1[v][a]" \
-map [v] -map [a] SingleStepOutput.mp4
Я ввел видео несколько раз, по одному разу для каждого фрагмента, потому что использование одной панели ввода (даже с split
/asplit
) приводит к переполнению буфера.
Фильтры setpts
/asetpts
используются, потому что trim
/atrim
переносят исходные метки времени. Фильтры setpts
смещены для фрагментов, которые должны постепенно появляться. Значением смещения является preceding slide duration - crossfade duration
. yuva420p
необходим для создания альфа-канала, значение которого фактически модулируется фильтром затухания.
person
Gyan
schedule
09.03.2016