web-dev-qa-db-fra.com

Aide-mémoire et paramètres prédéfinis qui fonctionnent réellement avec FFmpeg 1.0?

J'ai essayé un certain nombre de feuilles de triche disponibles ailleurs, mais elles sont presque toutes périmées et ne fonctionneront tout simplement pas avec la dernière version de FFMpeg.

Quelqu'un peut-il m'indiquer des paramètres compatibles avec le dernier FFMpeg?

Je suis principalement intéressé par les codecs suivants

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

aussi bien que

ProRes, Presets de basse, moyenne et haute qualité

26
Bachalo

FFmpeg n'inclut plus les profils prédéfinis et les profils basés sur des fichiers texte pour libx264, c'est-à-dire ce que vous avez utilisé avec l'option -vpre. Celles-ci ont été amorties et supprimées au profit de l'accès aux préréglages x264, aux profils (et aux mélodies) réels avec les options -preset, -profile:v et -tune. Les anciens fichiers texte n'émulaient que les profils et les paramètres prédéfinis x264 officiels et, en raison de plusieurs limitations, ne pouvaient offrir toutes les fonctionnalités offertes par le nouveau système. C'est aussi beaucoup plus facile à maintenir.

De plus, de nombreux encodeurs ont leurs propres options séparées. également appelé "options privées". Vous devrez examiner les options audio et video codeur pour les codecs courants de la documentation en ligne de FFmpeg ou consulter la sortie de ffmpeg -h full pour obtenir une liste complète des options prises en charge. Par exemple, x264 répertorie ses options sous libx264 AVOptions dans la sortie de l'aide complète.

Si votre ffmpeg prend en charge -preset, aucun préréglage de fichier texte ne doit être utilisé, et FFmpeg ne vient plus avec aucun préréglage iPod non standard. Il est courant de croire que les préréglages de texte peuvent être simplement copiés de n’importe où et utilisés avec n’importe quel ffmpeg. Ceci est faux et entraînera une casse.


En gros, les préréglages vous permettaient de faire les choses suivantes:

Contrôler la qualité

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

Pour x264, il existe différentes méthodes de codage, la méthode facteur de débit constant étant la plus sophistiquée. Il en résulte un débit binaire variable, mais globalement de bonne qualité en un seul passage. Les valeurs CRF vont de 0 à 51, mais les valeurs saines se situent entre 19 et 26, en fonction de votre source et de la qualité souhaitée. 23 étant la valeur par défaut, vous pouvez par exemple choisir 18 pour "haute qualité" et 28 pour "basse qualité", peu importe ce que cela signifie pour vous.

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

x264 a d’autres méthodes d’encodage aussi bien, mais ceci est hors de la portée ici.

Contraindre le profil H.264

Ces profils définissent un ensemble de fonctionnalités que l'encodeur peut utiliser pour faire correspondre les capacités d'un certain décodeur. Dans FFmpeg récent, utilisez la syntaxe suivante pour spécifier un profil, profil pouvant être baseline, main ou high:

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

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

Choisissez un encodage x264 preset

Ces préréglages affectent la vitesse d'encodage. L'utilisation d'un préréglage plus lent vous permet d'obtenir une meilleure compression ou qualité par taille de fichier, tandis que des préréglages plus rapides entraînent une compression inférieure. En général, vous devez simplement 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 et veryslow. Voici un exemple:

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

Encoder une vidéo sans perte

Ceci est possible en spécifiant un CRF de 0, utilisez donc simplement -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, soit vous pouvez spécifier le profil, qui devrait être une valeur comprise entre 0 et 3 , où les débits binaires sont choisis en fonction du profil. Plus haut signifie mieux:

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

Le ffmbc Wiki suggère que les noms de profils puissent être utilisés - cela échoue cependant dans FFmpeg 1.0.

48
slhck

J'ai fait un test dans lequel j'ai trans-codé (en utilisant le codage libx264 en .mp4) une vidéo haute qualité d'un caméscope Sony en utilisant toute la plage de valeurs prédéfinies (sauf le placebo) sur une plage de valeurs CRF (18, 21, 24 et 27). Je voulais savoir ce qui me permettrait de combiner au mieux la vitesse d’encodage, la qualité de la sortie et la taille du fichier.

Pour chaque valeur de CRF, j’ai attribué à chaque opération de transcodage un score pour son temps d’encodage (par exemple, pour un CRF = 18, le temps ultra-rapide de la valeur prédéfinie de 5,7 secondes correspondait à 1,0, le temps de veryslow à 162, à 0, avec tous les autres scores échelonnés entre). J'ai calculé les scores de taille de fichier de sortie de manière similaire, en donnant bien sûr le meilleur score au plus petit fichier. J'ai ensuite ajouté les deux scores pour un score "combiné" vitesse/taille.

Pour chacune des quatre valeurs de CRF, le préréglage "veryfast" était le vainqueur, 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" produise presque la plus petite taille de fichier à chaque fois , ne perdant que par "veryslow" et jamais de beaucoup.

Une différence que j’ai remarquée parmi les différentes valeurs prédéfinies est que le système d’exploitation (Windows 7) me donne des vignettes différentes. Les préréglages plus rapides afficheraient une vignette plusieurs secondes dans la vidéo, les vignettes des préréglages plus lents reflétant les images d'ouverture 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 (en tant qu'image instantanée d'une feuille de calcul Excel):
Excel snapshot

Voici la feuille de calcul Excel en format 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
17
Ted W