Jak utworzyć drgającą nakładkę za pomocą ffmpeg? [Zamknięte]

0

Właśnie znalazłem ten film na YouTube, gdzie jest podzielony ekran z ruchomą siatką. Chcę wiedzieć, jak utworzyć ruchomy podzielony ekran, tak jak na filmie, używając ffmpeg.

Link do wideo

Oto, co chcę osiągnąć:

wprowadź opis zdjęcia tutaj


Wygląda na to, że mnie źle zrozumiałeś. Sprawdziłem kod wideo na tym. Mój problem polega na tym, że nie znam takiej pętli png jak ten film.

    ffmpeg -i video.mp4 -i nen.png  -filter_complex "overlay=x=0:y='if(gte(t,0), -w+(t)*800, 3)'" out.mp4

Ilustracja

Próbowałem: loop -1 and overlay:shortest=1ale zawiodłem

Czy możesz zapętlić nakładkę dla mnie?

Passionato
źródło
chcesz podzielić ekran z 3 filmami? lub chcesz ruchomy podzielony ekran? lub chcesz podzielić ekran z ramkami? W każdym razie zacznij korzystać z podzielonego ekranu tutaj:
Harry,
Chcę ruchomy podzielony ekran, tak jak na filmie. Dziękuję Ci. @Harry
Passionato
Możesz edytować swoje pytanie, aby zdefiniować swoje wymagania. Opracowanie komendy ffmpeg, która robi dokładnie to, zajęłoby tygodnie. Podział ekranu w filmie pokazuje: 3 filmy, 2 u góry i jeden u dołu. Centralny podział przesuwa się w górę i w dół o około 5% w ciągu 3 sekund. Obramowanie składa się z niestandardowego, ale statycznego obrazu, a obramowania mają rozmiar około 2%. Filmy nie są zmieniane, ale zmienia się tylko obszar aktywny, gdy przesuwa się środkowa linia. Film pokazuje znacznie więcej wymagań. Czy możesz ograniczyć go do podzbioru wszystkich tych wymagań?
Harry,
Następnie chcę wykonywać ruchy z podziałką środkową w górę i w dół o około 5% w ciągu 3 sekund. Czy możesz to zrobić, @Harry? Próbowałem przetestować z ffmpeg i nie mogłem zabezpieczyć kodu, aby poruszał się w ten sposób
Passionato,
@Harry To naprawdę nie trwa tygodnie, ale zgadzam się, że pytanie pokazuje zero wysiłku. Porusza się tylko siatka, a nie punkt podziału między filmami. Passionato, następnym razem prosząc o coś, pokaż, co już próbowałeś.
slhck

Odpowiedzi:

3

Musisz użyć złożonego filtra:

ffmpeg -f lavfi -i "\
movie=input-1.mp4,scale=960:540[v1]; \
movie=input-2.mp4,scale=960:540[v2]; \
movie=input-3.mp4,scale=1920:540[v3]; \
[v1][v2]hstack[hstack]; \
[hstack][v3]vstack[stack]; \
movie=grid.png[grid]; \
[stack][grid]overlay=y='5*sin(0.1*n)'[outv]" \
-map "[outv]" \
output.mp4

Zakłada się, że masz trzy filmy wejściowych ( input-1.mp4przez input-3.mp4), które są scaled w tym przypadku po prostu się je do właściwych wymiarów siatki. Są one następnie poziomo i pionowo stacked na szczycie siebie, aby uzyskać wideo 1920⨉1080 oznaczony jako wyjściowy stack.

Teraz masz grid.pngprzezroczystą nakładkę, której rozmiar również musi wynosić 1920 × 1080. Oczywiście musisz sam stworzyć tę siatkę za pomocą edytora obrazów.

Ta siatka będzie overlayedytowana na górze stosu, ale jej ywspółrzędne będą się różnić w zależności od wyniku funkcji sinusoidy . Możesz dostosować prędkość ruchu, zmieniając parametr wcześniej n(czyli liczbę klatek), a amplitudę, zmieniając parametr przed sinfunkcją.

Oczywiście, jeśli chcesz bardziej losowego ruchu, możesz dodatkowo zmodyfikować pozycję random, na przykład za pomocą funkcji.

slhck
źródło
To nie robi dokładnie tego, co jest w referencji. Kiedy ramka przesuwa się w górę, wszystkie obszary poniżej środkowego akordu powinny zostać zamaskowane, aby żadna część dwóch górnych filmów w kwadrancie nie pojawiła się poniżej akordu.
Gyan
@Mulvya Ale tam się pojawiają: i.stack.imgur.com/9KRZN.png
slhck
Ach, OP twierdzi, że chcą „ ruchomego podzielonego ekranu ”, ale próbka tak naprawdę nie dzieli podstawowych filmów. Mylące, ponieważ amplituda piku jest różna.
Gyan