Ho testato la maggior parte delle altre proposte di risposta a questa domanda. Le conclusioni dei dati di test sono di seguito. Queste sono le risposte proposte che ho testato:
(BR) Modifica il bitrate, usando:
ffmpeg -i $infile -b $bitrate $newoutfile
(CR) Varia il fattore di tasso costante, usando:
ffmpeg -i $infile -vcodec libx264 -crf 23 $outfile
(SZ) Cambia la dimensione dello schermo del video (ad esempio a metà della sua dimensione in pixel), usando:
ffmpeg -i $infile -vf "scale=iw/2:ih/2" $outfile
(BL) Cambia il profilo H.264 in "baseline", usando:
ffmpeg -i $infile -profile:v baseline $outfile
(DF) Utilizza l'elaborazione predefinita di ffmpeg, usando:
ffmpeg -i $infile $outfile
DATI
- "dimensione": percentuale di pixel del video convertito rispetto all'originale.
- "bitrate" - bitrate dei video originali e convertiti.
- "definizione" - dimensione in pixel dei video.
- "converti" - tempo di convertire il video in secondi.
Ho calcolato il bitrate target per (BL) usando il metodo proposto.
=== File A - In che modo il nodo aiuta a spingere Angular-Fnbixa7Ts6M.mkv ===
original BR CR SZ BL DF
-------- --- -- -- -- --
size 64152 kb 214% 76% 40% 83% 76%
bitrate 411 kb/s 883 313 165 342 313
definition 1920x1080 1920x1080 1920x1080 960x540 1920x1080 1920x1080
convert -- 648 509 225 427 510
=== File B - Utilizzo di GraphQL con Angular _ By - Lee Costello-OGyFxqt5INw.mkv ===
original BR CR SZ BL DF
-------- --- -- -- -- --
size 410301 kb 33% 109% 28% 143% 109%
bitrate 2687 kb/s 880 2920 764 3843 2920
definition 3840x2160 3840x2160 3840x2160 1920x1080 3840x2160 3840x2160
convert -- 2307 3188 1116 2646 3278
CONCLUSIONI
Il metodo (SZ) è sicuramente il metodo più rapido. Era da 2 a 4 volte più veloce. Questo può essere un problema per i video ad alta definizione, poiché tutti gli altri metodi hanno impiegato più tempo per la conversione rispetto alla lunghezza effettiva del video! Ad esempio, il metodo (CR) ha impiegato 53 minuti per convertire il video di 21 minuti.
Il metodo (SZ) è sicuramente il metodo migliore se la definizione del video è più ampia della definizione dello schermo che lo visualizzerà. Ad esempio, se il telefono è in grado di visualizzare solo un'immagine a 1080p, l'invio di un video di 3840x2160 è solo uno spreco. Sarebbe meglio dimezzarne le dimensioni a 1080p.
Alcune delle risposte proposte hanno effettivamente AUMENTATO le dimensioni di alcuni video. Ad esempio, il metodo (BR) ha più che raddoppiato la dimensione del campione 1080p. Ha tuttavia reso la dimensione di 2160p un terzo. Per il campione ad alta definizione, i metodi (CR), (BL) e (DF) hanno AUMENTATO le dimensioni del video.
Risposta corretta (o migliore)
È sempre meglio abbassare prima la risoluzione al massimo supportato dal display di destinazione.
Se si desidera ridurre ulteriormente le dimensioni del file, dipenderà dalle scelte personali. Puoi ridurre il contenuto delle informazioni o aumentare la compressione.
Puoi abbassare di più la risoluzione se questo non è qualcosa che ti riguarda.
Se il video non include scene d'azione rapide, potresti voler ridurre la frequenza dei fotogrammi.
Se si dispone di un potente processore e lo spazio è l'unico problema, è possibile aumentare il tasso di compressione.
La velocità in bit è una combinazione di più fattori. Quindi, dire semplicemente a ffmpeg di ridurre il bit rate potrebbe non darti i risultati desiderati.
Un altro modo per ridurre il contenuto delle informazioni è ridurre la profondità del colore. Come fare questo non è stato ancora discusso.
ffmpeg
pagina man mostra-fs
un'opzione per limitare le dimensioni dell'output, funziona qualcosa di simileffmpeg -i in.avi -fs 100M out.avi
?