J'utilise ffmpeg pour encoder mes vidéos et les télécharger sur le Web. J'ai vu ce message sur l'utilisation de ffmpeg, mais je n'ai pas tout à fait compris comment prendre en compte les valeurs.
Supposons que j'ai une vidéo de taille 70 Mo avec une durée de 4 minutes. Comment pourrais-je considérer la valeur de ces indicateurs: -b:v
, -maxrate
et -bufsize
pour cette commande?
ffmpeg -i input -codec:v libx264 -profile:v main -preset slow -b:v ? -maxrate ? -bufsize ? -vf "scale=720:trunc(ow/a/2)*2" -threads 0 -codec:a libfdk_aac -movflags +faststart output
Ou existe-t-il une valeur normale, comme pour les valeurs crf
sont 19-24? J'apprécierais vraiment votre aide et vos conseils.
Cela dépend vraiment de votre vitesse de téléchargement.
bufsize
déterminera à quel point ffmpeg religieux permet de garder votre débit binaire constant. Si vous définissez un bufsize
de 64k, comme indiqué dans FFmpeg Wiki: Limiter le débit de sortie , il calculera son débit actuel tous les 64 kilo-octets et s’ajustera en conséquence. Des tailles plus petites pour bufsize
peuvent nuire à la qualité car elles ne laissent pas assez d'espace entre les vérifications pour que x264 puisse effectuer des changements soudains. Vous obtiendrez ainsi des blocages.
Si votre maxrate
est de 640 kbps et votre bufsize
est de 64k, la vérification tous les dixièmes de seconde par x264 sera vérifiée. Ceci est sous-optimal - FFmpeg Wiki: Encodage pour les sites de streaming recommande de l'exécuter toutes les 1 à 2 secondes. Si cela n’a pas de sens, imaginez-le comme maxrate
name __/bufsize
= fréquence des vérifications. Gardez cette fréquence entre 1 et 2 secondes en règle générale.
Si vous définissez les noms maxrate
et bufsize
name__, vous devez:
maxrate
sur la vitesse de téléchargement la plus basse possible (dans l'exemple du wiki ffmpeg , il s'agit de 80% de la vitesse de téléchargement totale, mais votre kilométrage peut varier ).bufsize
entre la même chose que maxrate
(une seconde) et le double de votre maxrate
(2 secondes). Si le niveau n'est toujours pas assez bas, diminuez votre maxrate
puis redéfinissez bufsize
en conséquence.Ensuite, vous devrez jouer un peu, mais comme vous devez commencer quelque part, je commencerais par un maxrate
autour de 600k, ce qui était généralement assez satisfaisant pour moi avant d’utiliser crf
pour tout.
Si vous le souhaitez, vous pouvez essayer des valeurs plus faibles pour bufsize
name__, comme pour toutes les trois ou quatre secondes, afin de voir comment la valeur change l'apparence de votre sortie. Vous pourrez ensuite déterminer à quel point vous devez vous en préoccuper pour votre vidéo.
En réalité, il n’ya pas de valeur normale. crf
optimise la sortie en fonction de ce qu’elle considère être la meilleure taille de mémoire tampon pour conserver le taux défini. Il essaie de conserver une taille de fichier aussi petite que possible tout en conservant une certaine qualité, au prix de pics occasionnels.