FFmpeg n'inclut plus les préréglages et les profils basés sur des fichiers texte pour libx264, c'est-à-dire ce que vous avez utilisé avec l' -vpre
option. Celles - ci ont été amortis et retirés en faveur de l' accès aux paramètres prédéfinis x264 réels, profils (et airs) avec le -preset
, -profile:v
et les -tune
options. Les anciens fichiers texte n'émulaient que les préréglages et profils x264 officiels et, en raison de plusieurs limitations, ne pouvaient pas offrir toutes les fonctionnalités du nouveau système. Il est également beaucoup plus facile à entretenir.
De plus, de nombreux encodeurs ont leurs propres options distinctes; également appelé «options privées». Vous devrez examiner les options d'encodeur audio et vidéo pour les codecs courants dans la documentation en ligne FFmpeg, ou vérifier la sortie de ffmpeg -h full
pour une liste complète des options prises en charge. Par exemple, x264 répertorie ses options sous libx264 AVOptions
dans la sortie d'aide complète.
Si votre ffmpeg prend en charge, -preset
aucun préréglage de fichier texte ne doit être utilisé et FFmpeg n'est plus fourni avec d'autres préréglages iPod non standard. C'est une idée fausse que les préréglages de texte peuvent simplement être copiés de n'importe où et utilisés avec n'importe quel ffmpeg. Ceci est faux et entraînera une rupture.
Fondamentalement, les préréglages vous ont permis de faire les choses suivantes:
Qualité de contrôle
La qualité est contrôlée soit en spécifiant un débit binaire via -b:v
(pour la vidéo) ou -b:a
(pour l'audio), soit en spécifiant toute autre méthode de codage que le codec peut prendre en charge.
Pour x264, il existe différentes méthodes d'encodage, la méthode Constant Rate Factor é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 varient de 0 à 51, mais les valeurs raisonnables se situent entre 19 et 26, selon votre source et la qualité que vous souhaitez. 23 est par défaut, vous pouvez donc par exemple choisir 18 pour "haute qualité" et 28 pour "basse qualité", quoi que cela signifie pour vous.
ffmpeg -i input.mp4 -c:v libx264 -crf 23 output.mp4
x264 a également d'autres méthodes de codage , mais cela est hors de portée ici.
Ces profils définissent un ensemble de fonctionnalités que l'encodeur peut utiliser pour correspondre aux capacités d'un certain décodeur. Dans FFmpeg récent, utilisez la syntaxe suivante pour spécifier un profil, où pourrait se trouver le profil baseline
, main
ou high
:
ffmpeg -i input.mp4 -c:v libx264 -profile:v baseline output.mp4
Pour plus d'informations et quand utiliser un profil, 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 donne une meilleure compression, ou une qualité par taille de fichier, tandis que des préréglages plus rapides vous donnent une pire compression. 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 doit être une valeur comprise entre 0 et 3 , où les débits sont choisis en fonction du profil. Plus haut signifie mieux:
ffmpeg -i input.mp4 -c:v prores -profile:v 0 output.mov
Le wiki ffmbc suggère que les noms de profils peuvent être utilisés - cela échoue cependant dans FFmpeg 1.0.
ffmpeg -i input.mp4 -c:v libx264 output.mp4
? crf: 23 et preset: moyen?J'ai fait un test dans lequel j'ai transcodé (en utilisant le codage libx264
.mp4
) une vidéo de haute qualité à partir d'un caméscope Sony en utilisant la gamme complète de valeurs prédéfinies (sauf le placebo) sur une gamme de valeurs CRF (18, 21, 24 et 27 ). Je voulais savoir ce qui me donnerait la meilleure combinaison de vitesse d'encodage, de qualité de sortie et de taille de fichier.Pour chaque valeur CRF, j'ai donné à chaque opération de transcodage un score pour son temps de codage (par exemple, pour CRF = 18, le temps ultra-rapide de 5,7 secondes de la valeur prédéfinie a obtenu un score de 1,0, le temps très lent de 162 secondes a obtenu un 0, avec tous les autres scores échelonnés entre les deux). J'ai calculé les scores de taille du fichier de sortie de la même manière, bien sûr, en donnant au plus petit fichier le meilleur score. J'ai ensuite ajouté les deux scores pour un score vitesse / taille "combiné".
Pour chacune des quatre valeurs CRF, le préréglage «très rapide» a été le vainqueur haut la main, avec des scores presque parfaits de 1,94 (pour CRF 18 et 21), 1,96 (CRF 24) et 1,97 (CRF 27). Je trouve très curieux que "veryfast" produise à chaque fois presque la plus petite taille de fichier , perdant seulement à "veryslow" et jamais de beaucoup.
Une différence que j'ai remarquée parmi les différentes valeurs prédéfinies était que le système d'exploitation (Windows 7) me donnerait des vignettes différentes. Les préréglages les plus rapides afficheraient une miniature plusieurs secondes dans la vidéo, où les miniatures des préréglages les plus lents refléteraient la ou 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 (sous forme d'image instantanée d'une feuille de calcul Excel):
Voici la feuille de calcul Excel en texte csv:
la source