2016-08-03 6 views
0

Я пытаюсь добавить перспективу в небольшое видео, а затем наложить его поверх другого.(FFMPEG) Сделать области прозрачными перед наложением окна с перспективой

До сих пор я могу сделать видео маленьким, добавить в него перспективу и наложить его на другое видео. но после применения перспективного фильтра избыточные области не становятся прозрачными, они просто растягивают пиксели.

Перспективный фильтр не имеет большой документации, но насколько я могу узнать, не было никакого способа установить дополнительные пиксели в прозрачные.

Так что я предполагаю, что вам нужно применять какую-то альфа-маску, в нужную область?

это команда, я использую на перспективу:

ffmpeg -i /synced_folder/testvid.mp4 -vf perspective=0:0:W:H/4:0:H:W:3*H/4:0:1:0 /synced_folder/output5.mp4 

Не думаю, что это важно, но я бегу FFmpeg на виртуальной машине с CentOS.

This is a SS of how the result looks like:

+0

Вы можете получить более быстрый ответ на video.se – v010dya

ответ

2

Это требует нетрадиционного подхода , Перспективный фильтр предназначен для коррекции определенных типов искажений во время записи, а не для наложений типа DVE. Пиксели по краям будут расширены, чтобы заполнить холст.

Трюк здесь заключается в том, чтобы добавить прозрачное дополнение к видео, а затем добавить перспективу. Пиксели, которые будут расширены, будут прозрачными пикселями, которые становятся невидимыми при наложении.

ffmpeg -i base.mp4 -i overlay.mp4 
filter_complex" [1]pad=iw+4:ih+4:2:2:[email protected],perspective=0:0:W:H/4:0:H:W:3*H/4:0:1:0[p]; 
       [0][p]overlay=-2:-2" output.mp4 

Я проложил границу с 2 пикселями, выбранную потому, что обычный формат пикселей составляет 4: 2: 0. Цвет границы черный, но с альфой 0.

Строго говоря, перспективы перспективы должны быть исправлены для учета границы, но это небольшое изменение. Оверлей также смещается, чтобы выровнять видимое видео с назначенным пунктом назначения.

0

я получил желаемый эффект при использовании с альфа детские 0 в областях, которые я хотел, то с помощью alphaextract и alphamerge команды.

Это работает, но если кто-то знает, как получить прозрачный фон прямо из команды перспективы, я был бы признателен за помощь.

ffmpeg -y -i video.mp4 -loop 1 -i alphamask.png -filter_complex "[1:v]alphaextract[alf];[0:v][alf]alphamerge" -c:v qtrle -an /synced_folder/output.mov 

(Обратите внимание, что если вы играете на выходе, это может выглядеть, как она не работает. Чтобы увидеть результаты, которые вы должны наложить его с чем-то на заднем плане)