46 votes

Des astuces et des préréglages qui fonctionnent réellement avec FFmpeg 1.0 ?

J'ai essayé un certain nombre de 'cheat sheets' disponibles ailleurs mais elles sont presque toutes obsolètes et ne fonctionnent tout simplement PAS avec la dernière version de FFMpeg.

Quelqu'un peut-il m'indiquer des paramètres qui fonctionneront avec la dernière version de FFMpeg ?

Je suis principalement intéressé par les codecs suivants

H.264, préréglages de qualité faible, moyenne et élevée

ainsi que

Préréglages ProRes, basse, moyenne et haute qualité

67voto

slhck Points 209720

FFmpeg n'inclut plus de presets et de profils basés sur des fichiers texte pour libx264, c'est-à-dire ce que vous avez utilisé avec l'option -vpre option. Ces options ont été dépréciées et supprimées en faveur de l'accès aux préréglages, profils (et mélodies) x264 avec l'option -preset , -profile:v et -tune options. Les anciens fichiers texte n'émulaient que les préréglages et profils officiels x264 et, en raison de plusieurs limitations, ne pouvaient pas offrir toutes les fonctionnalités du nouveau système. Il est également beaucoup plus facile à maintenir.

En outre, de nombreux encodeurs disposent de leurs propres options, également appelées "options privées". Vous devrez consulter les audio y vidéo pour les codecs les plus courants dans la documentation en ligne de FFmpeg, ou vérifiez la sortie de ffmpeg -h full pour une liste complète des options prises en charge. Par exemple, x264 liste ses options sous libx264 AVOptions dans l'aide complète.

Si votre ffmpeg prend en charge -preset alors les presets de fichiers texte ne doivent pas être utilisés, et FFmpeg n'est plus livré avec d'autres presets que certains presets iPod non standard. On croit souvent à tort que les préréglages de texte peuvent être copiés de n'importe où et utilisés avec n'importe quel ffmpeg. C'est faux et cela entraînera des pannes.


En principe, les préréglages vous permettent d'effectuer les opérations suivantes :

Contrôler la qualité

La qualité est contrôlée soit en spécifiant un débit binaire par l'intermédiaire de -b:v (pour la vidéo) ou -b:a (pour l'audio), ou en spécifiant toute autre méthode d'encodage que le codec pourrait prendre en charge.

Pour x264, il existe plusieurs méthodes d'encodage, avec la méthode Facteur de taux constant étant la plus sophistiquée. Elle permet d'obtenir un débit variable, mais une bonne qualité globale en un seul passage. Les valeurs de CRF vont de 0 à 51, mais les valeurs raisonnables se situent quelque part entre 19 et 26, en fonction de votre source et de la qualité que vous souhaitez obtenir. 23 est la valeur par défaut, vous pouvez donc par exemple choisir 18 pour la "haute qualité" et 28 pour la "basse qualité", peu importe ce que cela signifie pour vous.

ffmpeg -i input.mp4 -c:v libx264 -crf 23 output.mp4

x264 dispose d'autres méthodes d'encodage mais cela n'entre pas dans le cadre du présent document.

Contraindre les Profil H.264

Ces profils définissent un ensemble de caractéristiques que l'encodeur peut utiliser pour s'adapter aux capacités d'un certain décodeur. Dans les versions récentes de FFmpeg, utilisez la syntaxe suivante pour spécifier un profil, où le profil peut être baseline , main o high :

ffmpeg -i input.mp4 -c:v libx264 -profile:v baseline output.mp4

Pour plus d'informations et pour savoir quand utiliser tel ou tel profil, voir : Quelles sont les différences entre les profils H.264 ?

Choisir un encodage x264 preset

Ces préréglages affectent la vitesse d'encodage. L'utilisation d'un préréglage plus lent permet d'obtenir une meilleure compression, ou une meilleure qualité par taille de fichier, tandis que les préréglages plus rapides permettent d'obtenir une moins bonne compression. En général, vous devriez utiliser le préréglage que vous pouvez vous permettre d'attendre. Les préréglages peuvent être ultrafast , superfast , veryfast , faster , fast , medium (par défaut), slow y veryslow . Voici un exemple :

ffmpeg -i input.mp4 -c:v libx264 -preset slow output.mp4

Encodage de vidéos sans perte

Ceci est possible en spécifiant un CRF de 0. Il suffit donc d'utiliser -crf 0 :

ffmpeg -i input.mp4 -c:v libx264 -crf 0 output.mp4

Enfin, parlons rapidement de ProRes. ProRes accepte soit un débit fixe avec -b:v ou vous pouvez spécifier le profil, qui doit être une valeur comprise entre 0 et 3 où les débits binaires sont choisis en fonction du profil. Plus c'est élevé, mieux c'est :

ffmpeg -i input.mp4 -c:v prores -profile:v 0 output.mov

En ffmbc Wiki suggère que les noms des profils peuvent être utilisés - ceci échoue cependant dans FFmpeg 1.0.

30voto

Ted W Points 401

J'ai fait un test dans lequel j'ai trans-codé (en utilisant l'encodage libx264 vers .mp4 ) une vidéo de haute qualité provenant d'un caméscope Sony en utilisant toute la gamme des valeurs de préréglage (sauf le placebo) sur une gamme de valeurs CRF (18, 21, 24 et 27). Je voulais savoir quelle serait la meilleure combinaison de vitesse d'encodage, de qualité de sortie et de taille de fichier.

Pour chaque valeur CRF, j'ai attribué à chaque opération de transcodage un score pour son temps d'encodage (par exemple, pour CRF = 18, le temps de 5,7 secondes de la valeur prédéfinie ultrafast a obtenu un score de 1,0, le temps de 162 secondes de veryslow a obtenu un 0, tous les autres scores étant échelonnés entre les deux). J'ai calculé les scores de taille des fichiers de sortie de la même manière, en attribuant bien sûr le meilleur score au fichier le plus petit. J'ai ensuite additionné les deux notes pour obtenir une note de vitesse/taille "combinée".

Pour chacune des quatre valeurs du CRF, c'est le préréglage "veryfast" qui l'a emporté haut la main, avec des scores presque parfaits de 1,94 (pour les CRF 18 et 21), 1,96 (CRF 24) et 1,97 (CRF 27). Je trouve très curieux que "veryfast" ait produit presque la plus petite taille de fichier à chaque fois Il n'a été battu que par "veryslow" et jamais de beaucoup.

Une différence que j'ai remarquée entre les différentes valeurs prédéfinies est que le système d'exploitation (Windows 7) me donnait des vignettes différentes. Les préréglages les plus rapides affichent une vignette plusieurs secondes après le début de la vidéo, tandis que les vignettes des préréglages les plus lents reflètent la ou les premières images de la vidéo. Ce n'est pas important pour moi ; ce que j'ai appris, c'est que "-preset veryfast" semble être un choix facile.

Voici mes résultats (sous forme d'image instantanée d'une feuille de calcul Excel) :
excel snapshot

Voici la feuille de calcul Excel sous forme de texte csv :

CRF,Preset,Seconds,score,MB,score,totalscore
18,1_ultrafast,5.7,1.00,59.5,0.09,1.09
18,2_superfast,8.4,0.98,62.3,0.00,0.98
18,3_veryfast,10.8,0.97,30.9,0.98,1.94
18,4_faster,16.0,0.93,33.5,0.89,1.83
18,5_fast,24.0,0.88,36.8,0.79,1.68
18,6_medium,29.1,0.85,34.9,0.85,1.70
18,7_slow,48.1,0.73,33.9,0.88,1.61
18,8_slower,84.9,0.49,33.0,0.91,1.40
18,9_veryslow,162.0,0.00,30.1,1.00,1.00
21,1_ultrafast,5.7,1.00,38.0,0.00,1.00
21,2_superfast,7.9,0.98,35.0,0.15,1.14
21,3_veryfast,10.0,0.97,19.0,0.97,1.94
21,4_faster,14.2,0.94,21.0,0.87,1.80
21,5_fast,19.9,0.89,23.0,0.77,1.66
21,6_medium,24.6,0.86,22.0,0.82,1.67
21,7_slow,43.1,0.72,21.0,0.87,1.58
21,8_slower,69.8,0.51,20.5,0.89,1.41
21,9_veryslow,137.3,0.00,18.4,1.00,1.00
24,1_ultrafast,5.5,1.00,24.9,0.00,1.00
24,2_superfast,7.5,0.98,21.4,0.27,1.25
24,3_veryfast,9.3,0.97,12.0,0.99,1.96
24,4_faster,13.2,0.93,14.0,0.84,1.77
24,5_fast,17.4,0.90,15.0,0.76,1.66
24,6_medium,21.0,0.87,14.4,0.81,1.67
24,7_slow,37.3,0.72,14.0,0.84,1.56
24,8_slower,62.2,0.51,13.0,0.92,1.42
24,9_veryslow,121.1,0.00,11.9,1.00,1.00
27,1_ultrafast,5.5,1.00,16.8,0.00,1.00
27,2_superfast,7.4,0.98,13.6,0.38,1.36
27,3_veryfast,9.0,0.97,8.4,1.00,1.97
27,4_faster,12.6,0.93,10.1,0.80,1.73
27,5_fast,15.8,0.90,10.4,0.76,1.66
27,6_medium,18.8,0.87,10.0,0.81,1.68
27,7_slow,34.1,0.73,9.8,0.83,1.56
27,8_slower,59.6,0.48,9.0,0.93,1.41
27,9_veryslow,109.7,0.00,8.4,1.00,1.00

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X