ffmpeg вращение исходного видео и применение наложенных изображений
У меня возникли некоторые проблемы с этим, у меня есть исходное видео, которое было записано с ног на голову. Мне нужно повернуть это видео и наложить поверх него несколько прозрачных файлов PNG. Я использую эту команду:
ffmpeg -i Upside_Down.mov -r 1 -i overlays_%d.png -c:v libx264 -r 30 -pix_fmt yuv420p -filter_complex "overlay=0:0" output.mkv
Приведенная выше команда работает отлично, но, очевидно, держит мое исходное видео вверх ногами, я знаю, что вращение может быть достигнуто с помощью -vf vflip:hflip, но это, похоже, не работает. Есть ли способ достичь этой цели или это единственный вариант перевернуть исходное видео и применить оверлей во втором прогоне, т.е. сначала сделать ffmpeg -i Upside_Down.mov -vf vflip:hflip
затем запустите код выше по завершении?
1 ответ
Вам просто нужно создать цепочку фильтров, состоящую из ваших дополнительных фильтров:
ffmpeg -i Upside_Down.mov -r 1 -i overlays_%d.png -c:v libx264 -c:a copy -filter_complex "[0:v][1:v]overlay,vflip,hflip,format=yuv420p[out]" -map "[out]" -map 0:a output.mkv
Мне нравится явно маркировать метки входных и выходных ссылок фильтра, чтобы вы точно знали, что происходит, вместо того, чтобы полагаться на неизвестные значения по умолчанию.
[0:v]
относится к видеопотоку (ам) первого входа (Upside_Down.mov
), а также[1:v]
относится к видеопотоку (ам) второго входа (overlays_%d.png
).я добавил
-c:a copy
потоковое копирование аудио вместо перекодирования, но я не уверен, еслиUpside_Down.mov
содержит аудио Это одна из причин, почему вы должны всегда включать полныйffmpeg
консольный вывод из вашей команды.Так как изменение формата пикселя может быть выполнено с помощью фильтрации, я изменил с
-pix_fmt
кformat
видео фильтр, поэтому любое потенциальное преобразование может произойти именно тогда, когда вы этого хотите. Я сделал то же самое с-r
иfps
видеофильтр (но я не уверен, почему вы потенциально можете изменить частоту кадров: вывод на консоль был бы полезен).См. Также: Как перевернуть видео на 180° (по вертикали / вверх ногами) с помощью FFmpeg?