Come limitare la dimensione del file con ffmpeg?


10

Voglio codificare un video, che ha una durata di 60 secondi, su una destinazione o una dimensione massima di 10 MB .

Ci sono due approcci che conosco. Uno è spiegato nel FFMPEG-Wiki e l'altro che ho trovato nella documentazione. Sfortunatamente, non ho trovato una spiegazione su quando usare quale metodo.

Qualcuno di questi metodi è raccomandato? In caso contrario, quali sono gli aspetti positivi / negativi di ciascun metodo?

1) Calcola e imposta Bitrate in modo che corrisponda alla lunghezza del video, come spiegato in ffmpeg-wiki

(10 MB * 8192 [converte MB in kilobit]) / 60 secondi = ~ 1365 kbit / s bitrate totale 1365k - 128k (bitrate audio desiderato) = 1237k bitrate video

ffmpeg -y -i input -c:v copy -preset medium -b:v 1237k -pass 1 -c:a copy -b:a 128k -f mp4 /dev/null && \
ffmpeg -i input -c:v libx264 -preset medium -b:v 1237k -pass 2 -c:a libfdk_aac -b:a 128k output.mp4

2) Utilizzare il -fs parametro e lasciare che ffmpeg lo capisca.

ffmpeg -i input -c:v copy -c:a copy -preset medium -crf 23 -fs 10485760 output.mp4

1
Nel tuo primo esempio, il primo passo dovrebbe usare anche libx264come c:v. Nel fsesempio, non si è transcodifica del video, dal momento che -c:v copyviene utilizzato. Quindi, anche presete crfnon hanno alcun effetto.
Gyan,

Questo mi è stato utile: stackoverflow.com/a/34547102/470749
Ryan

Risposte:


11

Il fsparametro interromperà la codifica una volta raggiunto il suo valore. Quindi, se l'output raggiunge il 10MBsegno durante la codifica del 15 ° secondo, questa è la durata del file di output.

Se vuoi assicurarti che l'intero file sia codificato ma non attraversi la dimensione target impostata, usa il metodo bitrate. Per adattare l'overhead del muxing e altri dati entro le dimensioni target, imposta il bitrate del video leggermente più basso di, diciamo, 1-2%

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.