La compressione dei video crea file ancora più grandi

17

Ho usato la GUI (clic destro = & gt; comprimere) per provare e comprimere un .tar contenente 3 video per un totale di 1,7 gb (.H264 MP4). gzip, lrzip, 7z ecc. non fanno nulla per le dimensioni del file e la cartella compressa è anche 1.7 gb.

Ho quindi provato a eseguire lrzip dalla riga di comando (nel caso si trattasse di un problema di gui), e ho usato il flag -z (compressione estrema), e questo era il mio output.

Come mostra il rapporto di compressione, la dimensione effettiva della cartella compressa è più grande dell'originale! Non so perché non ho fortuna, in particolare lrzip dovrebbe essere efficace in base alle recensioni casuali che ho letto e ai documenti ufficiali (file più grandi di 100 mb, più è grande meglio è) - vedi link

Perché non posso comprimere i miei file?

    
posta Lee 26.04.2014 - 14:29

5 risposte

25

Come @pram ha detto in precedenza nel commento, i video mp4 sono già compressi, e altri formati video probabilmente usano anche la compressione in una certa misura. Pertanto, provare a comprimerli non comporterà una riduzione (se del caso) delle dimensioni (ciò vale anche, almeno in parte, per immagini e musica). In questo caso, sembra che i metadati (per il file compresso stesso) potrebbero causare l'aumento. L'unico formato di compressione che potrebbe (e questo è un forte rischio) ha come risultato una riduzione è xz.

In un'altra nota, se vuoi ridurre le dimensioni di quei video, cerca invece di ricodificare i video usando qualcosa come il freno a mano.

    
risposta data saiarcot895 26.04.2014 - 14:59
13

In realtà, il fatto che i file siano già compressi non è il problema cruciale. È questo: la compressione in generale può funzionare solo se i dati presentano una sorta di ridondanza . Questo è praticamente sempre il caso per i file non compressi - tuttavia, non è necessariamente ovvio che è la ridondanza. Gli algoritmi di compressione generici mirano principalmente al tipo di cosa ovvia nei file di testo: molte parole si presentano non solo una volta ma molte volte in forma identica, forse le frasi di parole possono essere combinate, ecc. Ecc. Gli algoritmi sono abbastanza buoni in generalizzando questo a qualsiasi cosa, dagli elenchi di numeri di telefono codificati ASCII sulla poesia cinese al codice binario, ma non possono funzionare per qualsiasi tipo di di dati. In particolare, i file multimediali sono concettualmente dati analogici , in una rappresentazione digitale rumorosa. Ciò significa che non esiste affatto alcun tipo di ridondanza del file di testo: alcuni motivi potrebbero essere ricorrenti, ma sempre con una configurazione leggermente diversa del rumore del sensore. Ecco perché tutti i formati di immagine / AV compressi utilizzano alcune trasformazioni scelte con intelligenza come primo passaggio di codifica, normalmente basato su DCT o wavelets . Queste trasformazioni muovono grosso modo le porzioni di immagine e le porzioni di rumore in posizioni diverse, quindi possono essere separate e con una compressione con perdita si mantengono solo le informazioni che si ritengono più "importanti", che non includono il rumore, mentre il " una buona informazione "ha un sacco di ridondanza. (Questo non è esattamente come funziona, ma in qualche modo.)

Se i compressori per uso generico usassero queste trasformazioni, l'effetto sarebbe l'opposto: la maggior parte delle informazioni digitali verrebbero classificate in modo errato come una sorta di rumore, perché manca la struttura "liscia" che si trova in segnali analogici. E dopo una perdita di compressione video ovviamente non è più possibile trovare né la levigatezza analogica né la recidiva digitale (se lo fosse, i codec userebbero un altro bzip-stage o qualcosa del genere!)

    
risposta data leftaroundabout 26.04.2014 - 23:05
12

Il motivo per cui non hai fortuna è che mp4 è già compresso, non puoi comprimerlo ulteriormente. Tutto quello che stai facendo è aggiungere le informazioni di intestazione del formato di compressione al file.

Poiché i file sono già compressi e non è possibile comprimerli ulteriormente, ciò comporta un aumento delle dimensioni del file poiché tutto ciò che si sta facendo è mantenere le stesse informazioni e aggiungere qualche byte in più di informazioni sull'intestazione.

    
risposta data terdon 26.04.2014 - 15:03
5

Questo è un bell'esempio del principio del pigeonhole .

Poiché il file è già (con perdita) compresso, non c'è praticamente nessuna riduzione da nessuna parte, il che significa che sei già a zero guadagno netto. Come menzionato dagli altri, il formato compresso stesso ha una certa perdita, solitamente trascurabile, nei propri metadati. Tutto ciò significa che probabilmente non vi è più alcuna casella nell'insieme di file uguali o più piccoli e quindi i dati compressi rientrano nel set di file più grandi.

    
risposta data Livius 26.04.2014 - 19:01
4

Se vuoi comprimere questi file, devi ridurre la qualità.

Senza sapere per quanto tempo e in quale formato e contenuto si digita questi file è difficile dire se questi file hanno spazio per essere ridotto senza una perdita di qualità molto visibile.

BluRay con video a 1080p tende ad aumentare di 25 GB, quindi non è improbabile che tu abbia già un ottimo rapporto qualità-dimensione per H.264.

Puoi provare a utilizzare ffmpeg o avconv per convertire i file.

Potresti iniziare con ffmpeg -i input_file.mp4 -preset slower -crf 20 -c:a copy output_file.mp4

Il comando anconv funzionerà in modo simile.

  • Aumenta il valore di -crf per ridurre la dimensione e la qualità del file, io non consiglio alcun valore superiore a 25.

  • Puoi modificare il preset su slow o medium per aumentare la velocità, ma le dimensioni del file ne risentiranno rispetto a slower o anche veryslow (se sei molto paziente!).

  • Altre impostazioni possono essere trovate qui: link

  • Ti consiglio di evitare la maggior parte in quanto i predefiniti forniscono impostazioni predefinite corrette, con l'eccezione di -tune .

  • Prova un denoiser se il contenuto è film ( -vf hqdn3d ) puoi migliorare qualità visiva rispetto all'utilizzo di un valore -crf elevato.

  • Riduci il contenuto -vf scale=-1:720 per 720p e -vf scale=-1:480 per 480p per migliorare la velocità di codifica e mantenere la qualità.

risposta data Daniel Hill 28.04.2014 - 07:37

Leggi altre domande sui tag