Débits binaires variables avec les paramètres «-vb» et «minrate» / «maxrate» dans FFmpeg

12

Pour le rendu, le temps qu'il faut est très différent.

  • -b 3500K -minrate 0K -maxrate 8000K prend 1h 17min
  • vb=3000k prend 2,5 heures

De quoi vb 3000ket en quoi est-il différent -b 3500K -minrate 0K -maxrate 8000K? S'agit-il de paramètres de débit binaire variables?

Si je change pour -b 3500K -minrate 3500K -maxrate 3500K, est-ce que ce débit est constant?

Scott Downey
la source

Réponses:

16

Veuillez lire la documentation de FFmpeg et lancez ffmpeg -h fullla liste des options. Jetez également un œil à cet article que j'ai écrit, qui montre les différences entre les modes de contrôle du débit dans les encodeurs comme x264 et x265.

En général, voici ce que signifient les options:

  • -b:v(ou -vb, la même chose) spécifie le débit binaire moyen cible pour l'encodeur à utiliser:

    -b <int> E..VA. définir le débit binaire (en bits / s) (de 0 à INT_MAX)

  • -minrate spécifie une tolérance minimale à utiliser:

    -minrate <int> E..VA. Définissez la tolérance de débit binaire minimale (en bits / s). Très utile pour configurer un codage CBR. Sinon, cela ne sert à rien. (de INT_MIN à INT_MAX)

  • -maxratespécifie une tolérance maximale. Cependant, comme l'indique la documentation, ceci n'est utilisé qu'en conjonction avec bufsize:

    -maxrate <int> E..VA. Définissez la tolérance de débit binaire maximale (en bits / s). Nécessite bufsized'être réglé. (de INT_MIN à INT_MAX)

    -bufsize <int> E..VA. définir la taille du tampon ratecontrol (en bits) (de INT_MIN à INT_MAX)

    Cela n'a de sens que pour le codage à débit binaire variable, où au lieu d'utiliser un modèle à débit binaire constant ou à qualité constante, le codeur simule une transmission avec un tampon virtuel au niveau du décodeur. Les options -minrate/ -maxrate/ -bufsizecontrôlent cette taille de tampon. En règle générale, vous n'utilisez ce mode que pour la diffusion en continu, car la technique contraindra le débit binaire afin de ne pas dépasser une certaine valeur, ce qui entraînerait un dépassement ou un dépassement excessif du tampon du décodeur.

Pour résumer, vous avez plusieurs options pour limiter le débit binaire:

  1. Pour configurer un processus CBR, vous devez vérifier ce que propose l'encodeur. En règle générale, vous ne pouvez pas obtenir un débit constant "parfait", car l'encodeur ne gaspille pas les bits. La définition de -b:v, -minrateet -maxrateaux mêmes niveaux permettra d'atteindre cet objectif, par exemple pour libx264:

    ffmpeg -i input.mp4 -c:v libx264 -x264-params "nal-hrd=cbr" -b:v 1M -minrate 1M -maxrate 1M -bufsize 2M output.ts
    

    Avertissement: cela peut entraîner une qualité médiocre pour les vidéos difficiles à encoder et cela gaspillera des bits. Sauf si vous devez absolument obtenir une sortie à débit constant, n'utilisez pas cette option.

  2. Configurez un processus à débit binaire contraint / variable pour la diffusion en continu. Utilisez -b:v 3500K -maxrate 3500K -bufsize 1000K, par exemple. Vous devrez évidemment ajuster le débit et la taille des tampons en fonction du contexte. Plus la taille du tampon est élevée, plus la variation de débit binaire autorisée est élevée.

  3. Utilisez un objectif de qualité constante et limitez le débit uniquement pour capturer les pointes. Par exemple, utilisez -c:v libx264 -crf 23 -maxrate 4M -bufsize 4Mpour coder à débit binaire variable avec un CRF cible de 23, mais limitez la sortie à un maximum de 4 Mbits / s.

slhck
la source
1
Comment coderait-il en utilisant un débit binaire variable? comme dans la syntaxe à utiliser?
Scott Downey
Quel encodeur souhaitez-vous utiliser?
slhck
ffmpeg, je crois qu'il est utilisé dans kdenlive
Scott Downey
Non, je voulais dire comme: x264 pour H.264 / MPEG-4 AVC vidéo ou XviD pour MPEG-4, ou Ogg Theora, etc. simplement, quel fichier voulez-vous? MP4?
slhck
3
Voir ici pour plus d'informations sur l'encodage avec x264 dans FFmpeg; regarde en particulier les préréglages (j'utilise généralement le préréglage très rapide, dans mes tests, la plus grande baisse de taille de fichier était entre super rapide et très rapide - après cela, les différences étaient beaucoup plus incrémentielles. YMMV bien sûr).
evilsoup