Pull to refresh

Comments 12

Ещё несколько версий и ffmpeg сможет какие-нибудь нехитрые сериалы генерить, прямо из командной строки.
Однажды, я отредактировал видео исключительно с использованием AviSynth + Aegisub. Так что да, без видеоредактора обойтись можно, но времени тратится больше.
А что есть видеоредакторы, которые позволяют собирать из нескольких IP-камер один видео-поток, пускать поверх него анимацию раз в 2 минуты и отдавать все это клиенту в режиме live по http?
Интересно. Не знал, что с помощью ffmpeg можно такие вещи делать.
Меня давно интересует вопрос: можно ли с помощью ffmpeg склеить картинки в видео таким образом, чтобы между сменой картинок был какой-то фильтр: Fade, Pixelate и др.?
Был бы очень благодарен за решение, если оно существует.
Можно, вообще одной строчки с ffmpeg должно хватить всем.

Не скажу что решение элегантное, если много картинок, то команду придется генерировать скриптом. Для примера склеиваем 2 изображения с фильтрами fade=in/out:
ffmpeg -loop 1 -i img1.jpg \ #делаем из двух изображений 2 бесконечных потока
-loop 1 -i img2.jpg \
-filter_complex \ #дальше граф фильтров
"[0:0]trim=duration=10[a1];[1:0]trim=duration=10[b1];\ #отрезаем от этих потоков по 10 секунд и именуем их как a1,b1
[a1]fade=in:st=0:d=2[a2];[a2]fade=out:st=8:d=2[a];[b1]fade=in:st=0:d=2[b2];[b2]fade=out:st=8:d=2[b];\ # накладываем fade in длительностью 2 сек, начиная с 0 секунды и такой же fade out начиная с 8-ой секунды 
[a][b]concat=n=2:v=1[out1]" \ #склеиваем оба потока в out1
-map [out1] /tmp/1.mp4 #выходной файл 
Эх, нельзя комментарии редактировать. Выложил видео, правда fade сделал 1 секунду, а показ картинок по 5.
Спасибо, нормальное решение, буду разбираться. А другие эффекты тоже можно сделать таким способом, в том числе и fade с перекрытием?
Перекрытие в смысле картинки меняют прозрачность «друг в друга» во время перехода?

P.S. только что понял что я перебрал с количеством потоков, проще
ffmpeg -loop 1 -i img1.jpg -loop 1 -i img2.jpg -filter_complex "[0:0]trim=duration=5,fade=in:st=0:d=1,fade=out:st=4:d=1[a];[1:0]trim=duration=5,fade=in:st=0:d=1,fade=out:st=4:d=1[b];[a][b]concat=v=1" -map [out1] -y -qscale 25 /tmp/1.mp4

В общем если речь о таком. То нужно просто добавить альфа-канал в картинку и в fade:

ffmpeg -loop 1 -i img1.jpg -loop 1 -i img2.jpg -filter_complex "[0:0]format=rgba,trim=duration=10,fade=in:st=0:d=1:alpha=1,fade=out:st=4:d=1:alpha=1[a];[1:0]format=rgba,trim=duration=10,fade=in:st=5:d=1:alpha=1,fade=out:st=9:d=1:alpha=1[b];[a][b]overlay=[out1]" -map [out1] -y -qscale 25 /tmp/1.mp4
ffmpeg — очень мощная штука, в коде там такая лапша, что врагу не пожелаешь в ней разбираться.
Подскажите, пожалуйста, есть ли возможность с помощью ffmpeg сделать zoom-in, zoom-out эффекты? Допустим есть некая картинка и нужно сделать из неё видео с zoom эффектом… Смотрел на фильтры crop, scale… но похоже это задача им не под силу.
Sign up to leave a comment.

Articles