Utilizzo di CRF e impostazione di un bitrate massimo con x264 in FFmpeg


3

Sto cercando di transcodificare un video su H.264 / MP4. Sto usando l' crf = 20opzione ma secondo i requisiti voglio anche limitare il bitrate massimo a 3 MBit / s.

Stavo cercando di imbrogliare usando in x264optsquesto modo

-x264opts crf=20:vbv-bufsize=14000:vbv-maxrate=3000:keyint=40

è questo il modo giusto per farlo? Questo può essere fatto o sono bloccato con l'utilizzo di un bitrate contante e nessun CRF?

Risposte:


4

Utilizzare -maxratee -bufsizeper forzare VBV (Video Buffer Verifier) ​​per limitare il bitrate di uscita:

ffmpeg -i input.file -c:v libx264 -crf 20 -maxrate 3M -bufsize 6M output.mp4

3 M = 3 mbit / s, è possibile utilizzare anche 3000k (per 3000 kbit / s). Impostare le dimensioni del buffer in base a quanto ci si aspetta che il client sia in grado di bufferizzare.

Consulta questa guida per ulteriori informazioni sull'uso di x264 con FFmpeg (anche se non menziona la codifica VBV).


@ mark4o Sono certo che non funziona. Ho testato un CRF basso e ottengo sempre bitrate più alti rispetto al -maxrate. -maxrateviene utilizzato solo quando -bufsizeè impostato. In tal caso x264 utilizza la codifica VBV e vincola correttamente il bitrate.
slhck

La dimensione del buffer del client è 2 MB = 14000 kbit, ecco perché ho scelto quel valore. Sembra che crf abbia la precedenza sul vincolo di bitrate massimo. Inoltre esiste una relazione tra maxbitrate ottimale e bufsize se si utilizza la codifica vbv?
eremita

il più ottimale è utilizzare la modalità CRF senza ulteriori vincoli.
Sarge Borsch,
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.