Моя цель — взять клипы продолжительностью более 40 секунд и наложить их на фон, а затем обрезать общее время, как только клипы и фон исчезнут. Он отлично работает, за исключением того, что поиск увеличивается до 24 секунд, даже когда я указываю 21.
ffmpeg -y -framerate 60 -loop 1 -ss 0 -t 21 -i ~/Desktop/FP2.tiff -ss 0 -t 21 -i ~/Desktop/fp.mov -lavfi \
"[0]fade=t=in:st=0:d=1,fade=t=out:st=20:d=1,trim=end=21[bg]; \
[1:v]setpts=(PTS-STARTPTS)+1/TB,fifo,fade=t=in:st=1:d=2,fade=t=out:st=15:d=2[fade]; \
[bg][fade]overlay=10:(main_h-overlay_h)/2:format=rgb[v1]; \
[1:v]setpts=(PTS-STARTPTS)+3/TB,fifo,fade=in:0:120,fade=t=out:st=18:d=2[v2]; \
[v1][v2]overlay=460:(main_h-overlay_h)/2:format=rgb[video]; \
[1:a]adelay=1000|1000,stereotools=muter=1,afade=t=in:st=1:d=2,afade=t=out:st=15:d=2[a1]; \
[1:a]adelay=3000|3000,stereotools=mutel=1,afade=t=in:st=3:d=2,afade=t=out:st=18:d=2[a2]; \
[a1][a2]amix=inputs=2[audio]" \
-map [video] -map [audio] -c:v ffv1 -level 3 -c:a pcm_s16be ~/Desktop/filtergraph.nut
Вы можете увидеть это в ffplay; фон полностью исчезнет на 21-й секунде, но само видео закончится на 24-й секунде. Как сделать, чтобы они точно совпадали? Я знаю, что могу использовать -ss
и -t
после ввода, но этот метод может быть медленным, если вы собираетесь использовать начальную точку после 0.
Вы загружаете 21 секунду аудио из видеофайла, а затем применяете adelay=3000|3000
, следовательно, 24 секунды. Добавьте atrim=end=21
в конце обе цепочки аудиофильтров.
И
Добавьте shortest=1
к обоим вашим наложениям.
Гьян
-t 21
после ввода.