FFMPEG / x264: Single pass: come aumenti i bitrate dell'ora di inizio?


2

Quando si utilizza la modalità single-pass con una dimensione VBV specificata, libx264 inizialmente "sandbag" il bitrate, presumibilmente a causa della mancanza di prove (o forse anche di un bug). ( Questo è un ironico seguito a questa domanda, che si occupava di bitrate iniziali eccessivamente ALTI con codifica single-pass senza una specifica VBV )

Per ulteriori informazioni, consultare i grafici in bitrate in basso: notare il calo originale, seguito da una correzione eccessiva ("Ehi, mi sono rimasti alcuni bit!") Prima di una normalizzazione. Si noti che ciò è corretto nella soluzione a due passaggi. La mancanza del frame I iniziale in questi due grafici è probabilmente un bug dello strumento (il valore PTS del frame I iniziale è 0,15 secondi).

Questo effetto impedisce un'elaborazione parallela "suddivisa, codifica e riassembla" di un asset lungo, poiché all'inizio di ogni segmento otterrai un battito di qualità.

Questo può essere risolto tramite la codifica dual-pass, una soluzione inaccettabile per i flussi live (sebbene, se parallelizzati, si potrebbe pagare il costo della codifica dual pass).

Ci sono due soluzioni che spererei: qualsiasi assistenza sarebbe più che benvenuta.

  1. Una soluzione a passaggio singolo in cui viene detto all'encoder di contenere inizialmente molti più frame prima di produrre output, riducendo così l'effetto sandbag iniziale

  2. Un modo per eseguire la codifica a due passaggi limitata come "pipe": la codifica a due passaggi completa come pipe è ovviamente non sensata, ma dovrebbe essere possibile avere "micro pass" in cui il periodo di feedback del passaggio è qualcosa di simile a uno secondo. Questo è molto meno ideale di una soluzione a passaggio singolo per aggirare un effetto così breve, ma sarebbe accettabile se (1) fosse impossibile.

    • Grafico bitrate Single Pass: notare il "tuffo di sabbia" iniziale. Generato con:

ffmpeg -i 1080-60fps.mp4 -vf "scale = 1200: 720" -b: v 1000k -bufsize 1000k onepass.mp4

inserisci qui la descrizione dell'immagine

  • Grafico bitrate a due passaggi: questo è il risultato quasi ideale. Nota che questo modulo finale non è necessario: evitare il sandbag iniziale è sufficiente. Generato con:

ffmpeg -i 1080-60fps.mp4 -vf "scale = 1200: 720" -b: v 1000k -pass 1 -f mp4 / dev / null

ffmpeg -i 1080-60fps.mp4 -vf "scale = 1200: 720" -b: v 1000k -pass 2 twopass.mp4

Grafico bitrate a due passaggi: questo è il risultato atteso

  • Sezione del primo frame nella codifica single pass

inserisci qui la descrizione dell'immagine

  • Sezione del primo fotogramma nella codifica a due passaggi

inserisci qui la descrizione dell'immagine


Hai provato la modalità CRF?
Gyan,
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.