Comment obtenir la meilleure qualité lors de la conversion de mp4 en avi avec ffmpeg?

11

Lorsque j'utilise cela, la qualité ne semble pas mauvaise.

ffmpeg -same_quant -i video.mp4 video.avi

Dans la ffmpegdocumentation est écrit: "Notez que ce n'est pas la même qualité. N'utilisez cette option que si vous savez que vous en avez besoin."

Dois-je obtenir -same_quantla meilleure qualité ou existe-t-il une option qui donne la même qualité que l'entrée et est plus recommandée?

sid_com
la source
Selon les codecs utilisés (certains codecs sont incompatibles avec certains conteneurs), vous pouvez toujours simplement copier les flux ( -codec copy). C'est le meilleur moyen d'éviter les changements de qualité, car vous ne réencodez pas les flux, vous les reconditionnez simplement dans un autre conteneur.
njsg
Lorsque je tente ce que je reçois: Unknown decoder 'copy'.
sid_com
3
Il semble qu'il -codec copyfaut aller après -i video.mp4 - pouvez-vous essayer ffmpeg -i video.mp4 -codec copy video.avi? ( -same_quantfonctionne ici aussi, mais ne fera rien, car cela ne fait que copier les flux)
njsg
Concernant le placement des options de ligne de commande de ffmpeg, voir la documentation de ffmpeg - 2 Description : Voici un extrait: En règle générale, les options sont appliquées au fichier spécifié suivant . Par conséquent, l'ordre est important, ...
Peter.O
Merci! Maintenant -codec copy, au bon endroit, ça marche.
sid_com

Réponses:

14

(adapté des commentaires ci-dessus)

Selon les codecs utilisés (certains codecs sont incompatibles avec certains conteneurs), vous pouvez toujours simplement copier les flux ( -codec copy). C'est le meilleur moyen d'éviter les changements de qualité, car vous ne réencodez pas les flux, vous les reconditionnez simplement dans un autre conteneur.

Lorsque vous traitez des fichiers audio / vidéo, il est important de garder à l'esprit que les conteneurs sont pour la plupart indépendants des codecs utilisés. Il est courant de voir des personnes se référer à des fichiers en tant que "vidéo AVI" ou "vidéo MP4", mais ce sont des conteneurs et nous disent peu de choses sur la possibilité pour un lecteur de lire les flux, en dehors des limitations techniques (par exemple, AVI peut avoir des problèmes avec h264 et Ogg Vorbis ), vous pouvez utiliser n'importe quel codec.

-same_quantsemble être un moyen de dire à ffmpeg d'essayer d'obtenir une qualité similaire, mais dès que vous réencodez la vidéo (au moins avec des codecs avec perte), vous n'avez aucun moyen d'obtenir la même qualité. Si vous êtes préoccupé par la qualité, une bonne règle de base est d'éviter de réencoder les flux lorsque cela est possible.

Donc, pour copier les flux avec ffmpeg, vous feriez:

ffmpeg -i video.mp4 -codec copy video.avi

( Comme @ Peter.O l'a mentionné , l'ordre des options est important, c'est donc là que -codec copydoit aller. Vous pouvez toujours le conserver -same_quant, mais cela n'aura aucun effet car vous ne réencodez pas les flux.)

njsg
la source
Votre solution fonctionne pour moi. Je vois que avconvc'est maintenant recommandé à la place de ffmpeget en fait c'est ce que j'ai utilisé.
Faheem Mitha
3

Sous FreeBSD 8. 2, j'ai essayé la copie -codec mais j'ai reçu un message inconnu décodé également. Après essais et erreurs, j'ai trouvé celui qui fonctionnait sous FreeBSD:

ffmpeg -i video.mp4 -vcodec copy video.avi
binyo66
la source