Bit rate variabili con le impostazioni “-vb” e “minrate” / “maxrate” in FFmpeg


12

Per il rendering, il tempo impiegato è molto diverso.

  • -b 3500K -minrate 0K -maxrate 8000K dura 1 ora e 17 minuti
  • vb=3000k dura 2,5 ore

Che cos'è vb 3000ke in che cosa differisce -b 3500K -minrate 0K -maxrate 8000K? Queste impostazioni della velocità di trasmissione sono variabili?

Se sono passato a -b 3500K -minrate 3500K -maxrate 3500K, è quel bit rate costante?

Risposte:


16

Si prega di leggere la documentazione per FFmpeg, e correre ffmpeg -h fullper la lista di opzioni. Inoltre, dai un'occhiata a questo articolo che ho scritto, che mostra le differenze tra le modalità di controllo della frequenza in encoder come x264 e x265.

In generale, ecco cosa significano le opzioni:

  • -b:v(o -vb, lo stesso) specifica il bit rate medio target per l'encoder da utilizzare:

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

  • -minrate specifica una tolleranza minima da utilizzare:

    -minrate <int> E..VA. Imposta la tolleranza minima in bitrate (in bit / s). Utile nella configurazione di un codice CBR. In caso contrario è di scarsa utilità. (da INT_MIN a INT_MAX)

  • -maxratespecifica una tolleranza massima. Tuttavia, come indica la documentazione, questo viene utilizzato solo insieme a bufsize:

    -maxrate <int> E..VA. Imposta la tolleranza massima in bitrate (in bit / s). Richiede bufsizeessere impostato. (da INT_MIN a INT_MAX)

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

    Questo ha senso solo per la codifica a bit rate variabile, dove invece di utilizzare un bit rate costante o un modello di qualità costante, l'encoder simula una trasmissione con un buffer virtuale sul decoder. Le opzioni -minrate/ -maxrate/ -bufsizecontrollano la dimensione del buffer. In genere si utilizza questa modalità solo per lo streaming, poiché la tecnica vincolerà la velocità in bit al fine di non superare un determinato valore che causerebbe l'overflow o l'overflow del buffer del decodificatore.

Per riassumere, hai diverse opzioni per limitare il bitrate:

  1. Per impostare un processo CBR, è necessario verificare ciò che offre l'encoder. In genere, non è possibile ottenere un bitrate costante "perfetto", poiché l'encoder non spreca bit. L'impostazione -b:v, -minratee -maxrateagli stessi livelli lo raggiungerà, 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
    

    Avvertenza: ciò potrebbe comportare una bassa qualità per i video difficili da codificare e sprecherà bit. A meno che non sia assolutamente necessario ottenere un output a velocità costante, non utilizzare questa opzione.

  2. Imposta un processo con bit rate limitato / variabile per lo streaming. Usa -b:v 3500K -maxrate 3500K -bufsize 1000K, per esempio. Ovviamente dovrai adattare la velocità e le dimensioni del buffer al contesto. Maggiore è la dimensione del buffer, maggiore è la variazione di bitrate consentita.

  3. Utilizzare un obiettivo di qualità costante e limitare il bitrate solo per catturare picchi. Ad esempio, utilizzare -c:v libx264 -crf 23 -maxrate 4M -bufsize 4Mper codificare a bitrate variabile con un CRF target di 23, ma limitare l'output a un massimo di 4 MBit / s.


1
Come si codificherebbe utilizzando un bit rate variabile? come nella sintassi da usare?
Scott Downey,

Quale encoder vuoi usare?
slhck

ffmpeg, credo che sia usato in kdenlive
Scott Downey

No, intendevo come in: x264 per H.264 / MPEG-4 video AVC o XviD per MPEG-4, o Ogg Theora, ecc. Semplicemente, quale file vuoi? MP4?
slhck

3
Vedi qui per maggiori informazioni sulla codifica con x264 in FFmpeg; guarda soprattutto i preset (generalmente utilizzo il preset molto veloce, nei miei test il più grande dropoff nella dimensione dei file è stato tra superveloce e molto veloce - dopo che le differenze erano molto più incrementali. YMMV ovviamente).
evilsoup,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.