2016-01-20 3 views
1

J'essaie de générer un gif à partir d'un fichier vidéo mp4. Je veux l'agrandir et le recadrer en générant.Générer Gif à partir de Mp4 directement - ffmpeg

j'ai réalisé que (culture & mise à l'échelle) de mp4 mp4 avec la ligne ci-dessous, (je peux extraire PNGs avec ffmpeg et utiliser Imagick pour faire gif animé), mais je crois qu'il ya une meilleure façon d'atteindre purement avec ffmpeg.

ffmpeg -i in.mp4 -filter:v "scale=300:ih*300/iw, crop=200:500:50:80" -c:a copy out.mp4

Ma question est de savoir comment atteindre le même code fait, mais pour générer directement gif à partir mp4.


Puis j'ai commencé peaufinage avec mp4 à la conversion gif, mais quand la palette arrive, je ne pouvais pas bien comprendre ce qui se passe.

J'ai trouvé this answer et je l'ai fait fonctionner, mais je ne pouvais pas comprendre comment adapter la mise à l'échelle & recadrage.

$ ffmpeg -y -ss 30 -t 3 -i in.mp4 \ -vf fps=10,scale=320:-1:flags=lanczos,palettegen palette.png

$ ffmpeg -ss 30 -t 3 -i in.flv -i palette.png -filter_complex \ "fps=10,scale=320:-1:flags=lanczos[x];[x][1:v]paletteuse" out.gif

Je comprends en partie ce que ce bit fait -y -ss 30 -t 3 -i in.mp4 (obtenir les 30 premières secondes et générer 3 secondes gif hors de lui). Mais pour les lignes suivantes, je suis complètement perdu ce qu'il est en train de faire.

Ce serait incroyable si quelqu'un pouvait expliquer ce que chaque commande fait, ou renvoyer un lien expliquant ce sujet.

Répondre

1

Dans votre première commande,

ffmpeg -y -ss 30 -t 3 -i in.mp4 \ 
-vf fps=10,scale=320:-1:flags=lanczos,palettegen palette.png 

-y provoque ffmpeg pour écraser si le fichier de sortie existe déjà, donc pas de demande de confirmation. , Alias ​​pour -filter:v, est un filtre vidéo qui prend une entrée vidéo et traite successivement chaque filtre spécifié. Donc, entrée -> filtre 1 -> filtre 2 ... -> filtre n -> sortie filtre

fps=10fps=10 convertit la source à cette fréquence en supprimant ou en dupliquant des images si nécessaire, sans interpolation. Si votre source est de 20 fps, cela fera chuter toutes les autres images. Si c'est 5 fps, il dupliquera chaque image une fois.

scale=320:-1:flags=lanczos redimensionne la vidéo sur une largeur de 320 pixels et la hauteur sur une longueur afin que le rapport d'aspect original soit conservé. Si vous souhaitez redimensionner à 320x300, vous devez remplacer le -1 par 300. Lanczos est l'algorithme de mise à l'échelle utilisé. Voir la liste here. Lanczos est bon.

palettegen génère une palette de 256 couleurs du flux d'entrée entier. Habituellement utilisé en conjonction avec la paletteuse.

Le -filter_complex de votre deuxième commande est lorsque vous devez appliquer des filtres à plusieurs entrées et/ou générer plusieurs sorties. Un peu long pour résumer ici, voir here.

+0

Merci beaucoup, efface beaucoup! – senty