Filtr Alphamerge działa tylko na pierwszej klatce


0

Próbuję zaimplementować filtr rozmycia nad konkretnym obiektem innym niż prostokąt, mam maskę i przykładowe wideo, ale problem polega na tym, że wynik alphamerge pierwszej klatki wideo jest stosowany do całego wideo (tak jak nałożyłeś statyczny obraz na całą długość filmu ) Użyłem następującego polecenia

ffmpeg -y -i sample_video.mp4 -i masked_image.png -filter_complex 
"[0:v][1:v]alphamerge,boxblur=16[alf];[0:v][alf]overlay[v]" -map [v] -map 0:a -c:a copy -preset ultrafast test.mp4

sample_video.mp4 masked_image.png

AKTUALIZACJA: Twoje rozwiązanie działa całkiem dobrze, ale teraz wartość intensywności rozmycia nie wpływa na intensywność rozmycia

Obraz maski

Przykładowy obraz

Wynik z boxblur = 10

Wynik z boxblur = 30

Odpowiedzi:


1

Twoja maska ​​to pojedynczy obraz, więc nie śledzi obiektu, ale zakładam, że Twoim problemem jest to, że piksele nakładki są nieruchome. Musisz zapętlić maskę, ponieważ alphamerge kończy się najkrótszym wejściem, a nakładka powtórzy ostatnią klatkę drugiego wejścia.

ffmpeg -y -i sample_video.mp4 -loop 1 -i masked_image.png ...

Zauważyłem dla powyższego przypadku (użycie obrazu maski w celu zastosowania efektu rozmycia), że gdy zwiększasz wartość boxblur, a następnie zmniejszasz efekt rozmycia, tak jak od 1-16, to ciągle rośnie, a potem zaczyna maleć (bez względu na to, jak wysoką wartość wybierzesz) ), czy masz pojęcie, dlaczego tak się stało, czy może jest lepsza sugestia użycia masek do rozmycia?
— Zain Ali

Czy możesz opublikować przykładowe zdjęcia?
— Gyan

Zaktualizowałem swoje pytanie
— Zain Ali,

Zmień boxblur=16na boxblur=16:ap=0. Nie chcemy rozmazać płaszczyzny alfa.
— Gyan
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.