J'utilise ffmpeg pour encoder mes vidéos pour les télécharger sur le web. J'ai vu ce post sur l'utilisation de ffmpeg, mais je n'ai pas vraiment compris comment prendre en compte les valeurs.
Supposons que j'ai une vidéo de 70 Mo avec une durée de 4 minutes. Comment pourrais - je tenir compte de la valeur de ces drapeaux: -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 crf
valeurs 19-24? J'apprécierais vraiment votre aide et vos conseils.
Réponses:
Cela dépend vraiment de votre vitesse de téléchargement.
bufsize
déterminera à quel point ffmpeg est religieux pour garder votre débit constant. Si vous définissez une valeurbufsize
de 64 Ko, conformément au Wiki FFmpeg: limitation du débit binaire de sortie , il calculera son débit binaire actuel tous les 64 kilo-octets et ajustera en conséquence. Des tailles plus petitesbufsize
peuvent nuire à la qualité dans la mesure où elles ne laissent pas suffisamment d'espace entre les vérifications de x264 pour effectuer des changements soudains - vous obtiendrez un blocage.Si votre
maxrate
640kbps et votrebufsize
64k, alors chaque dixième de seconde x264 vérifierait. Ceci n'est pas optimal - FFmpeg Wiki: Encoding for streaming sites recommande de l'exécuter toutes les 1 à 2 secondes. Si cela n'a pas de sens, pensez-y commemaxrate
/bufsize
= fréquence des contrôles. Gardez cette fréquence entre 1 et 2 secondes en règle générale.Si vous définissez les deux
maxrate
etbufsize
, vous devez:maxrate
sur quelle que soit votre vitesse de téléchargement la plus basse (dans l' exemple wiki ffmpeg , cela représente 80% de la vitesse de téléchargement totale, mais votre kilométrage peut varier).bufsize
quelque part entre le même que votremaxrate
(une seconde) et deux fois votremaxrate
(2 secondes). Si ce n'est toujours pas assez bas, abaissez votremaxrate
puis réinitialisez enbufsize
conséquence.Ensuite, vous devrez jouer un peu, mais comme vous devez commencer quelque part, je commencerais à
maxrate
environ 600k, ce qui était généralement assez satisfaisant pour moi avant de l'utilisercrf
pour tout.Si vous le souhaitez, vous pouvez essayer des valeurs inférieures pour
bufsize
, comme toutes les trois ou quatre secondes, juste pour voir comment la valeur change à quoi ressemble votre sortie. Ensuite, vous pouvez déterminer combien vous devez vous en préoccuper pour votre vidéo.Il n'y a vraiment pas de valeur normale - ce qui
crf
fait est d'optimiser la sortie en fonction de ce qu'elle pense être la meilleure taille de tampon pour maintenir ce que son taux est fixé. Il essaie de conserver une taille de fichier aussi faible tout en conservant une certaine qualité, au prix de pointes occasionnelles.la source
crf
, alors je n'ai pas besoin de préciserbitrate
,buffsize
etmaxrate
? Et si oui, lequel est le plus efficace (utilisezcrf
oubitrate
,buffsize
etmaxrate
)?bufsize
etmaxrate
.bitrate
Mais vous n'en avez pas besoin . Comme l'a dit Ely, cela le rendra meilleur pour le streaming.