2017-03-14 1 views
0

J'essaie de trouver un moyen de créer un effet vsync/hsync en tapant simplement des commandes dans le terminal. Est-ce que gstreamer ou ffmpeg peut faire cela?en utilisant gstreamer ou ffmpeg pour créer un effet vidéo hsync et vsync en utilisant simplement des commandes de terminal

Exemple: J'ai une image et je veux à plusieurs reprises défilement vers le haut et/ou défilement sur le côté.
Voir l'exemple de l'image gif verticale animée ci-dessous

Hsync

J'utilise ubuntu 16.04 (linux)

Répondre

1

Pour un défilement vertical,

ffmpeg -loop 1 -i in.png -filter_complex "[0][0]vstack,crop=iw:ih/2:0:t*ih/2/p" -t p out.mp4 

p est la durée de le défilement de haut en bas. Pour une boucle parfaite, vous devrez couper la dernière image. Pour ce faire, utilisez -t p-0.04 à la place.

Pour défilement horizontal,

ffmpeg -loop 1 -i in.png -filter_complex "[0][0]hstack,crop=iw/2:ih:t*iw/2/p:0" -t p out.mp4 
0

Et voici une façon GStreamer:

Vous pouvez utiliser la bibliothèque du plugin frei0r qui comprend l'élément frei0r-filtre nosync0r:

gst-launch-1.0 videotestsrc ! frei0r-filter-nosync0r hsync=0.5 ! autovideosink 

La propriété de cet élément est contrôlable, ce qui signifie que vous pouvez le modifier au fil du temps. (https://gstreamer.freedesktop.org/documentation/application-development/advanced/dparams.html)

Pour la désynchronisation verticale, vous pouvez faire pivoter l'image avant et après l'application de ce filtre. A cet effet, deux éléments GStreamer me viennent à l'esprit: videoflip et 'pivoter' avec l'angle de pi/2. La rotation offre plus de possibilités car elle vous permet de spécifier l'angle de rotation de l'image.