Quali parametri dovrei guardare per ridurre la dimensione di un file .MOV?


12

La mia Canon 60D crea file .MOV durante la registrazione di video e ho scoperto che il contenitore .MOV ha un flusso video H264 e un flusso audio PCM.

Ho usato ffmpeg e GSpot per guardare alcuni dei miei video e vedo quelli che sembrano essere bitrate piuttosto alti (22.000 kbps per 640x480, 45.000 per 1920x1080).

Vorrei ridurre le dimensioni dei file, ma mantenere la qualità piuttosto elevata. Ho giocato con la cosa più semplice a cui potevo pensare, riducendo il bit rate e quello che mi aspettavo: tagliare il bitrate a metà e la dimensione del file è circa la metà. Ma mi chiedo se c'è un modo per determinare un bitrate target "buono", o se c'è qualche motivo nel provare a fare bitrate variabile.

Risposte:


21

Ma mi chiedo se c'è un modo per determinare un bitrate target "buono" ...

Un buon bit rate target è il bit rate che:

  • è supportato dalla rete da cui stai trasmettendo il materiale (ad es. una rete 3G, WiFi domestico, ecc.), che è abbastanza facile da calcolare
  • ti sta bene , che è una misura molto soggettiva

22 Mbit / so 45 Mbit / s sono piuttosto alti per l'utente medio, specialmente per i video già compressi come h.264. Potresti sicuramente andare avanti e ridurre il bit rate a un valore "sano", sempre per quanto riguarda la capacità di archiviazione che puoi permetterti e la qualità che vuoi perdere.

Puoi anche ridimensionare il video 1080p a 720p se non hai davvero bisogno delle dimensioni o non hai la capacità di elaborazione per modificarlo.

... o se c'è qualche motivo nel provare a fare bitrate variabile

Il punto di bit rate costante è di adattarsi a uno scenario di streaming multimediale in cui è presente un collo di bottiglia che limita il bit rate massimo del video trasmesso. Nel mondo multimediale di oggi, questo non ha necessariamente più senso.

Quando si comprime un video in una quantità costante di bit al secondo, in pratica si dice a un codificatore di utilizzare sempre la stessa quantità di bit per codificare lo stesso intervallo di tempo. È l'approccio migliore? Come avrai intuito ormai, non lo è. Citando la Guida CRF dal freno a mano (tornerò più avanti):

L'occhio percepisce più dettagli negli oggetti fermi rispetto a quando sono in movimento. Per questo motivo, un compressore video può applicare una maggiore compressione (rilasciare più dettagli) quando le cose si muovono e applicare una compressione minore (conservare più dettagli) quando le cose sono ferme. Soggettivamente, il video sembrerà di qualità superiore.

Quindi, non ha senso utilizzare bit rate variabile ogni volta che potete. Farà apparire il video migliore, anche con le stesse dimensioni del file di un video a bit rate costante.

A maggior ragione, la maggior parte degli encoder - il più famoso essendo x264 - svolgono spesso molto male quando gli si dice di usare un bit rate costante. È meglio dare loro un po 'più di "libertà", nel senso di quanti bit vogliono spendere su un frame. Dopotutto, questo è il lavoro dell'encoder e non tu. E questo si chiama "qualità costante".


Ne ho abbastanza: cosa significa in pratica? Se usi FFmpeg per codificare i video, allora stai già utilizzando uno strumento abbastanza buono. Se ora hai anche x264 installato e usi l'ultima versione di entrambi, allora stai usando uno dei migliori codificatori attualmente disponibili gratuitamente. Invece di codificare con un bit rate fisso, lascia che x264 scelga quanto vuole spendere. A tale scopo, utilizza l' opzione Fattore di tasso costante .

In un caso molto semplice questo significa impostare un valore compreso tra 17 e 23. Scelgo MP4 come contenitore di output anziché MOV perché sono disponibili strumenti migliori per il remultiplexing:

ffmpeg -i input.mov -c:v libx264 -crf 22 output.mp4

Più basso è il valore, migliore è la qualità e maggiore è l'output. Viceversa, maggiore è, minore è la qualità. Allo stesso tempo, ridurrai ovviamente il bit rate medio necessario. Controlla la guida alla codifica x264 per maggiori informazioni ffmpeg.

Il tuo compito è ora di trovare un valore CRF che:

  • riduce il bit rate complessivo al punto che puoi permetterti
  • non riduce troppo la qualità, in modo che il video sia ancora bello

Sì, questo implica molta codifica e tentativi ed errori, ma questo è un affare quotidiano quando stai sintonizzando e codificando il video.

Oh, e se non ti piace la riga di comando, Handbrake è uno strumento multipiattaforma gratuito che fa esattamente lo stesso. Ha anche un cursore CRF:

inserisci qui la descrizione dell'immagine


Per quanto riguarda i dettagli degli oggetti in movimento, non è regolarmente esagerato nella compressione video o ricordo semplicemente i cattivi esempi? Come un notevole aumento dei dettagli quando la fotocamera smette di eseguire la panoramica, ecc.
Daniel Beck

Questo è in realtà piuttosto comune, noto come problemi di "stabilizzazione". Ad esempio, quando vedi scomparire il blocco. Questo è tipico per uno scenario a basso bitrate in cui il cambiamento della differenza di movimento è troppo veloce per adattarsi al controllo della frequenza. Suppongo che una codifica a due passaggi potrebbe aiutare qui, ma probabilmente non molto. Non so se è possibile liberarsi completamente di questo tipo di artefatti.
slhck,

Ho usato Handbrake in passato, convertendo avis DV da una videocam in DivX e mp4, ma trovavo più facile lavorare con una riga di comando quando provavo a capire le mie opzioni per passare da .mov a h264 mp4s. Esiste un equivalente a -crf quando crei DivX? (o dovrebbe essere un'altra domanda?)
Ward - Ripristina Monica il

@Ward Puoi usare -qscale. Per mpeg * la scala è lineare che varia da 1 a 31 (31 è la peggiore qualità) e il raddoppio del valore comporterà circa la metà del bitrate. Un valore di 2 può essere considerato approssimativamente privo di perdita visiva. 3-5 di solito è un buon equilibrio, ma ovviamente la qualità è soggettiva e dovrai solo provarla.
Llogan

Bello! Alcune domande. (1) cosa significa un numero seguito da "p" in "video da 1080p a 720p"? (2) x264 utilizza un bitrate variabile, ma perché l'opzione in ffmpeg è chiamata fattore di tasso costante? Grazie!
Tim

2

Prova CLI HandBrake

Volevo ridurre alcuni file MOV e non mi importava imparare tutti i dettagli sulle opzioni video. HandBrake CLI è quello che ho usato. I preset sono belli:

HandBrake offre preimpostazioni hard coded, fresche di fabbrica che sono esattamente le stesse delle preimpostazioni integrate nel MacGui.

Nel mio caso, ha funzionato bene:

HandBrakeCLI -i input.MOV -o output.mp4 --preset="Normal"

Senza preimpostazione, l'output era molto piccolo ma non di buona qualità. La preimpostazione "Normale" mi è sembrata buona, ma puoi vederne altre disponibili HandBrakeCLI --preset-listo modificare tu stesso tutte le opzioni se preferisci.

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.