Les petites séquences vidéo divisées par ffmpeg ne jouent pas ou ne jouent pas avec des artefacts


1

J'essaye de couper un fichier vidéo en petites parties (0.5-5s) et de coder ces parties en h.264 / aac avec ffmpeg. J'utilise cette commande:

ffmpeg -i 1.avi -ss 00:05:00 -t 00:00:01,50 -vcodec libx264 -threads 0 -vpre default -acodec libfaac out1.mp4

Dans VLC, certains morceaux jouent sans vidéo, ne produisent que du son, d'autres morceaux contenaient des artefacts vidéo comme celui-ci:

enter image description here

Peut-être ai-je manqué quelques arguments nécessaires pour ffmpeg?

Réponses:


3

Je l'ai essayé avec FFmpeg version 0.8.5, en utilisant un fichier d'entrée AVI comme vous.

La commande suivante a produit des résultats corrects:

ffmpeg -i 1.avi -ss 00:00:05 -t 00:00:01.50 -vcodec libx264 -vpre default -acodec libfaac out1.mp4

Voici quelques conseils pour le faire fonctionner:

Mise à jour vers la dernière version de FFmpeg.

Pour Ubuntu, suivez les instructions tutoriels ici . Je les utilise moi-même.

Sous OS X, installez FFmpeg utiliser Homebrew , en appelant brew install ffmpeg.

Sous Windows, il suffit de télécharger les versions précompilées .

Utilisez le format de longueur correct.

Notez que le format de durée utilise des points décimaux, et non des virgules, par exemple. hh:mm:ss[.xxx].

Retirer le -threads 0 option.

Permettant -threads 0 cependant m'a donné l'erreur "le tampon final est trop petit". Je ne sais même pas pourquoi ils autorisent une valeur de zéro ici, et à moins que vous n'ayez une raison spécifique de le faire, je laisserais simplement cet argument de côté. Idéalement, il devrait permettre auto-threads dans libx264, mais il y a peut-être un bug dont je ne suis pas au courant.

Encoder sans B-images.

En fonction de la taille de la vidéo de sortie, je ne sais pas si libx264 est même capable de produire de manière fiable des sorties en utilisant des images B qui font référence à une ou plusieurs images intra-codées Cela pourrait même conduire aux artefacts que vous décrivez.

Vous pouvez essayer de désactiver les images B (ou "images B") avec -bf 0.


Merci pour votre réponse. Ma version de ffmpeg est 0.5.1, elle provient d’ubuntu reps = (. Vous êtes vous-même compilé ffmpeg? Je vais essayer de couper ma vidéo en tenant compte de vos conseils.
— Rnd_d

@Rnd_d Oui, je l'ai fait. Il serait logique de recompiler à partir du code source, ce qui n’est pas si difficile sous Ubuntu. Il y a excellent tutoriels ici , assurez-vous d’ouvrir celui de votre version d’Ubuntu. J'utilise ces tutoriels pour compiler toutes les versions de FFmpeg que j'utilise pour Ubuntu.
— slhck

Merci beaucoup! J'ai compilé la dernière version des didacticiels ffmpeg que vous avez examinés. La qualité de la vidéo et de l'audio encodés s'est améliorée! La désactivation des images b éliminait les artefacts.
— Rnd_d

De rien! Si vous avez des questions sur les drapeaux utilisés par FFmpeg et libx264, un bon guide ici .
— slhck
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.