ffmpeg - сделать бесшовную петлю с кроссфейдом
Я хочу применить кроссфейд к последним x кадрам видео с первыми x кадрами, чтобы получить бесшовную петлю.
Как я могу это сделать?
1 ответ
Решение
Допустим, ваше видео имеет длину 30 секунд, а затухание - 1 секунду. Ваша команда будет
ffmpeg -i video.mp4 -filter_complex
"[0]split[body][pre];
[pre]trim=duration=1,format=yuva420p,fade=d=1:alpha=1,setpts=PTS+(28/TB)[jt];
[body]trim=1,setpts=PTS-STARTPTS[main];
[main][jt]overlay" output.mp4
Видео разделено на два одинаковых потока. Первый обрезается до первой секунды, добавляется альфа-канал, а затем исчезает. Последний фильтр в первом потоке задерживает его на 28 секунд, так как конечный выход обрезает первую секунду исходного клипа и перекрывается с последней секундой. 2-й поток обрезается, чтобы начать с t=1
и обработанный первый поток накладывается на 2-й. Поскольку альфа-канал исчезает в первом потоке, он пересекается с.