ffmpeg накладывает повернутые изображения на видео. Как сделать прозрачной выходную область, не покрытую повернутым изображением?

ffmpeg накладывает повернутые изображения на видео. Как сделать прозрачной выходную область, не покрытую повернутым изображением?

Я использую ffmpegдля наложения изображения на фильм. Требуется повернуть изображение на произвольный угол. Используя filter_complex, я могу теперь наложить повернутое изображение. Однако область вывода изображения заполняется черным цветом и непрозрачна. Я проверилдокументы, он говорит, что можно указать цвет заливки, в соответствии сэтот, но мне это не удалось. Есть идеи?

Копирую сюда свою командную строку:

./ffmpeg -i mersyvideo.mp4 -i avatar.jpg -filter_complex "[1:v] rotate=-30*PI/180:c=black@'0x00':ow=rotw(iw):oh=roth(ih) [rotate];[0:v][rotate] overlay=40:10" -codec:a copy output/overlayavatar.mp4

решение1

Чтобы заполнить не закрашенные области прозрачным цветом, используйте опцию c=none:

ffmpeg \
  -i mersyvideo.mp4 \
  -i avatar.jpg \
  -filter_complex "
  [1:v]rotate=-30*PI/180:c=none:ow=rotw(iw):oh=roth(ih)[rotate];
  [0:v][rotate]overlay=40:10
  " \
  -codec:a copy \
  output/overlayavatar.mp4

Смотритеrotateфильтр помощь:

fillcolor,c

Установите цвет, используемый для заполнения области вывода, не покрытой повернутым изображением. Для общего синтаксиса этой опции проверьте раздел (ffmpeg-utils)"Color" в руководстве ffmpeg-utils. Если выбрано специальное значение "none", фон не печатается (полезно, например, если фон никогда не отображается).

Значение по умолчанию — «черный».

Связанный контент