Velocità variabile con impostazioni "-vb" e "minrate" / "maxrate" in FFmpeg

Per il rendering, il tempo necessario è molto diverso.

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

Che cosa è vb 3000k e come è diverso da -b 3500K -minrate 0K -maxrate 8000K ? Sono queste impostazioni del bit rate variabile?

Se ho cambiato a -b 3500K -minrate 3500K -maxrate 3500K , è quel bit bit costante?

Si prega di leggere la documentazione di FFmpeg e eseguire ffmpeg -h full per l'elenco delle opzioni. Inoltre, dare un'occhiata a questo articolo che ho scritto, che mostra le differenze tra le modalità di controllo di velocità in encoder come x264 e x265.

Di solito, ecco cosa intendono le opzioni:

  • -b:v (o -vb , lo stesso) specifica una velocità costante del bit per l'encoder da utilizzare:

    -b <int> E..VA . impostare il bitrate (in bit / s) (da 0 a INT_MAX)

  • -minrate specifica una tolleranza minima da utilizzare:

    -minrate <int> E..VA . Impostare la tolleranza minima del bitrate (in bit / s). Più utile per impostare una codifica CBR. E 'di scarsa utilità altrimenti. (da INT_MIN a INT_MAX)

  • -maxrate specifica una tolleranza massima. Tuttavia, come indica la documentazione, questo viene utilizzato solo in combinazione con bufsize :

    -maxrate <int> E..VA . Imposta la tolleranza massima del bitrate (in bit / s). È necessario impostare il bufsize . (da INT_MIN a INT_MAX)

    -bufsize <int> E..VA . imposta la dimensione del buffer di ratecontrol (in bit) (da INT_MIN a INT_MAX)

    Ciò ha senso solo per la codifica di bit rate variabile, ad esempio la codifica VBV in x264 , where invece di utilizzare una velocità di bit costante o un model di qualità costante, l'encoder simula una trasmissione con un buffer virtuale al decodificatore. In genere lo utilizzi solo per lo streaming, poiché la tecnica vincolerà la velocità del bit per non superare un determinato valore che potrebbe causare il destream del buffer del decodificatore.

Riassumere:

  • Per impostare un process CBR, è necessario verificare che cosa offre l'encoder. In genere, non è ansible get un bitrate costante "perfetto" poiché l'encoder non sprecherà i bit. L'impostazione -b:v , -minrate e -maxrate agli stessi livelli consentirà, ad esempio per libx264:

     ffmpeg -i input.mp4 -c:v libx264 -x264-params "nal-hrd=cbr" -b:v 1M -minrate 1M -maxrate 1M -bufsize 2M output.ts 
  • Per impostare un process di velocità a bit variabile / variabile per lo streaming, ad esempio usare -b:v 3500K -maxrate 3500K -bufsize 1000K . Dovrai regolare ovviamente il tasso e le size del buffer.