Linux multimedia/Introduzione
Scopo iniziale di questo testo era fornire almeno le conoscenze e le pratiche di base per acquisire, elaborare e convertire filmati di vario tipo e da vari sorgenti. L'utenza interessata è soprattutto quella casalinga, alle prese con i riversamenti su computer dei filmati DV o con il problema della conversione delle vecchie videocassette in formati più moderni e pratici, o infine con la creazione di copie di backup dei propri DVD.
Sarebbe opportuno trattare però il multimedia in generale, e quindi fare ampio spazio all'audio, campo nel quale ci sono applicazioni forse più diffuse che nel video (basta dire MP3). Al momento attuale la parte relativa all'audio è ancora assente.
Sono anche importanti nozioni teoriche minimali, per definire un quadro chiaro e completo nel quale muoversi con agilità e sicurezza: è incredibile la quantità di errori che si possono fare in questo campo, e molti si possono evitare disponendo di un minimo di bagaglio teorico.
A parte questo, va detto subito che l'utente di GNU/Linux non è fortunato come gli altri: questi infatti, si possono limitare ad entrare in un qualsiasi centro commerciale o negozio specializzato e acquistare una videocamera miniDV, una scheda di acquisizione, un lettore MP3 o quant'altro, trovando nella confezione non solo il CD con i driver per molte versioni del proprio sistema operativo, ma anche il software sufficiente ad effettuare la maggior parte delle operazioni che qui saranno esaminate.
Per l'utente GNU/Linux è tutto più difficile, soprattutto per quanto riguarda l'acquisizione e la conversione delle videocassette. Poco meglio vanno le cose per le videocamere DV e miniDV, più che altro per problemi di compatibilità (se la videocamera è compatibile, l'utilizzo è molto semplice). Infine, per il solo audio, il ritardo rispetto ad altri sistemi è in buona parte colmato o colmabile con poco sforzo.
In ogni caso, con GNU/Linux si può fare molto nel multimedia, e divertendosi molto di più, come vedremo nel seguito.
Cosa non è questo wikibook, come leggerlo, a che punto è etc...
[modifica | modifica sorgente]Questo non è un HOWTO, né un Linux Video per l'impaziente. Non ci sono quindi ricette immediate, anche se potrebbero esserne state raccolte alcune in fondo.
Questo testo, inoltre, non pretende di sostituirsi alle man page, agli howto, alle mailing list, ai wiki, citati qua e là e che andrebbero raccolti in una sezione apposita alla fine. Cerca tuttavia di fondere molti elementi essenziali presi da tutte queste fonti e dalla non facile esperienza diretta.
È possibile che qualcuno possa leggere solo alcune parti, ma l'utente inesperto non potrà evitare di leggerlo praticamente tutto, salvo saltare quanto semplicemente non corrisponde alla sua situazione.
Chi non avesse dimestichezza con la riga di comando, con lo shell scripting e in generale non osa usare strumenti che non siano grafici, può contribuire con la sua esperienza oppure cercare altrove.
Questioni di metodo: script e log
[modifica | modifica sorgente]Si diceva che l'utenza Linux non è fortunata come quella di altri sistemi operativi. La mancanza di prodotti completi che possano gestire, tramite splendida interfaccia grafica, tutte le fasi del processo di elaborazione è forse quella più sentita. Ma chi ha detto che tutte le fasi dell'elaborazione video devono essere per forza visuali? Se si esclude l'editing, sia audio che video, quasi impensabile senza uno strumento visuale, e l'authoring video, tutto il resto si può fare benissimo a riga di comando, con maggiore profitto e divertimento.
L'idea è che, essendo gran parte delle operazioni molto ripetitive, una serie di script opportuni sono forse anche più pratici di una ingombrante interfaccia grafica, e soprattutto sono personalizzabili praticamente all'infinito.
Non solo: scrivere degli script è utilissimo proprio all'inizio, quando si fatica a prendere familiarità con i comandi e le relative opzioni. Qualche script consente di preimpostare molte delle opzioni ai valori adatti alle proprie esigenze standard, lasciando la possibilità di impostarne alcune altre come parametri od opzioni degli script.
Al limite non è da trascurare la possibilità di creare script che leggano da altri file la propria configurazione, separando meglio la logica dalle opzioni.
È anche molto importante, soprattutto all'inizio, annotare con un buon dettaglio gli esperimenti che si fanno: le opzioni sono tante, e dimenticare come si era riusciti ad ottenere un buon risultato capita facilmente, ed è tremendamente frustrante. A questo scopo, se si creano degli script, è importante ricordare di registrare in un file di log le informazioni più rilevanti circa le operazioni effettuate: data e ora, opzioni usate, qualche messaggio esplicativo e, cosa che si trascura facilmente, anche data e ora in cui lo script termina. In alternativa, si può registrare nel file di log la durata delle operazioni, ma l'idea è che bisogna imparare a stimare i tempi richiesti nelle diverse situazioni, perché su architetture di qualche anno fa alcune operazioni possono essere veramente lunghe, e quindi bisogna avere un'idea di quanto tempo ci vuole in media per una determinata operazione.
Nozioni teoriche di base
[modifica | modifica sorgente]Una decente introduzione teorica è fondamentale quando si affronta il multimedia, facilita notevolmente le operazioni e riduce le possibilità di errore. Inoltre molti dei concetti di base sono trasversali: valgono sia per l'audio che per il video. Vale dunque la pena di raccoglierli insieme per non ripetere le stesse cose in seguito.
Campionamento e quantizzazione
[modifica | modifica sorgente]Tutto comincia, in pratica, da un fenomeno reale che può esprimersi tramite la luce, il suono o entrambi i fattori. In questi fenomeni intervengono grandezze che variano in modo continuo. Si può dire che sono grandezze analogiche, anche se l'espressione andrebbe precisata meglio di così.
Ad esempio, le parole di un oratore ad un convegno sono un fenomeno acustico: onde di pressione nell'aria, che si possono esprimere come una somma (teoricamente infinita) di opportune onde sinusoidali e cosinusoidali. Come fa un moderno lettore MP3 a trasformare tutto questo in una serie di 0 e 1, per giunta occupando uno spazio veramente esiguo rispetto alla tradizionale cassetta audio da sbobinare?
Il segnale acustico viene innanzitutto campionato e quantizzato: le due operazioni, che ora spiegheremo, sono indipendenti e a seconda dei casi può essere conveniente effettuare prima l'una o l'altra.
Campionare significa, in questo esempio, dividere l'asse dei tempi in un gran numero di istanti, e valutare in ciascuno di essi il valore del segnale: il campione, appunto.
Per fare un caso pratico molto noto, in un CD audio il segnale è campionato 44.100 volte al secondo. Si parla allora di una frequenza di campionamento di 44.100 Hz.
Ma c'è un problema: un computer è sicuramente in grado di gestire, se ha memoria sufficiente, milioni e milioni di campioni, ma non sa gestire numeri irrazionali, cioè quei numeri che non sono interi, né rapporti fra interi, e quindi hanno infinite cifre dopo la virgola che non si ripetono mai secondo una sequenza identificabile (come avviene invece per i numeri periodici, che però si riconducono a rapporti fra interi). Un esempio sono la radice quadrata di 2 (il rapporto fra la diagonale e il lato di un quadrato) e il numero pi-greco (il rapporto fra la circonferenza e il raggio di un cerchio).
Pertanto i valori dei campioni non possono essere i veri valori del segnale agli istanti stabiliti, perché molti di essi, in teoria, sono ingestibili con una aritmetica finita come quella del computer. La soluzione è approssimare i valori reali con numeri interi, magari a meno di un fattore di scala opportuno: questa è la quantizzazione.
Sempre rimanendo sul caso esemplificativo del suono, si pensi ad una nota purissima, prodotta da un sinusoide con frequenza di 440 Hz (dovrebbe trattarsi di un LA). La funzione seno ha praticamente sempre valori irrazionali salvo alcuni valori particolari, e in più varia da -1 a 1: quantizzarla prendendo solo la parte intera dei suoi valori significa annullare il suono di partenza. Ma moltiplicando il segnale originale per un fattore intero opportuno, diciamo 256, i campioni del suono così amplificato si potrebbero approssimare con numeri interi. L'importante è tener presente che è stato usato un fattore di scala da rimuovere in fase di riproduzione.
Il numero di possibili valori che i campioni possono assumere è la risoluzione: nel caso in esame, sarebbe di 256. Nella pratica, la risoluzione è espressa dal numero di bit (cifre binarie) necessarie come minimo a rappresentare tutti i valori interi richiesti. Ad esempio, per 256 possibili valori, si parla di una risoluzione di 8 bit, mentre per 65.536 valori la risoluzione sarà di 16 bit.
Nel caso del video, il segnale è ovviamente più complesso di un segnale audio, ma le considerazioni appena viste valgono sostanzialmente anche in questo caso. Bisogna tenere conto del fatto che il video è una sequenza di immagini, e che ciascuna di queste immagini può essere considerata, in sé stessa, come un segnale bidimensionale che non varia nel tempo, bensì nello spazio. Per il resto, rispetto all'audio non cambia molto, almeno finché si considera la singola immagine e non le sue relazioni con quelle temporalmente ad essa vicine: queste relazioni sono molto importanti e sono oggetto della compressione video vera e propria, discussa nell'introduzione al video.
A questo punto dovrebbe essere già chiaro che la qualità del risultato aumenta con la frequenza di campionamento e con la risoluzione. Ma aumenta anche la quantità di memoria necessaria per gestire questa informazione: un conto è campionare a 10 Hz con una risoluzione di 8 bit (in un secondo si hanno 10 campioni da 8 bit ciascuno, quindi 80 bit al secondo), e un conto è campionare a 10 KHz con una risoluzione di 16 bit (in un secondo si avrebbero 10.000 campioni da 16 bit, per un totale di 160.000 bit al secondo).
Queste ultime considerazioni ci portano a parlare del bitrate.
Bitrate
[modifica | modifica sorgente]La riproduzione di contenuti multimediali è naturalmente un processo in cui il tempo è un fattore cruciale: nessuno vorrebbe vedere un DVD a velocità diversa da quella naturale, o ascoltare la quinta sinfonia di Beethoven al rallentatore. Nella riproduzione o trasmissione del multimedia vanno quindi rispettati dei tempi ben precisi.
Ma l'informazione, per essere trasmessa o comunque presentata, attraversa dei mezzi di trasmissione caratterizzati da una portata limitata. In altre parole, possono lasciar fluire una certa quantità di informazione nell'unità di tempo, non di più. La portata dei mezzi trasmissivi è la cosiddetta ampiezza di banda, termine ben noto nella teoria dei segnali. Il concetto digitale che più si avvicina a quello di banda o di portata è quello di bitrate: esso è il numero di bit trasmessi o comunque elaborati nell'unità di tempo, e normalmente si misura in kilo bit al secondo (kbps, dall'inglese kilo bits per second). Va precisato che si parla di 1000 bit, e non 1024 come spesso si fa in informatica.
Il bitrate è necessariamente legato alla banda disponibile per la trasmissione, perché i bit trasmessi occupano una certa quantità di banda. Quindi se la banda disponibile è scarsa, non si potrà pretendere un elevato bitrate, perché nell'unità di tempo si potranno trasmettere meno bit di quanto si potrebbe con una banda più elevata. Nell'elaborazione in senso stretto, cioè non destinata alla trasmissione in tempo reale, il limite non è più quello della banda, ma quello della potenza di elaborazione: maggiore bitrate implica, a parità di potenza di calcolo, maggiore durata dei processi di elaborazione.
Si intuisce poi che il bitrate si lega anche alla qualità dei contenuti: per descrivere in modo dettagliato un contenuto multimediale occorre molta informazione, e quindi un maggior numero di bit devono essere elaborati nell'unità di tempo. In altre parole, il bitrate aumenta all'aumentare della qualità, intesa, sia pure in modo approssimativo, come livello di dettaglio dell'informazione multimediale.
Infine, quando i contenuti multimediali non sono trasmessi, sono pur sempre memorizzati da qualche parte. A questo punto emerge il legame del bitrate con lo spazio: un bitrate elevato, moltiplicato per la durata del contenuto, si traduce ovviamente in una elevata quantità di spazio per la memorizzazione, che sia su disco rigido, su supporto ottico, su memoria flash o anche su nastro. Il problema dello spazio si pone però anche durante l'elaborazione o la trasmissione: il software deve disporre di memoria sufficiente a gestire informazione di alta qualità, e quindi ha bisogno di un hardware opportuno.
Formati e codec
[modifica | modifica sorgente]I contenuti multimediali digitali devono essere memorizzati in qualche modo. Proprio come esistono un gran numero di formati per la memorizzazione di documenti di testo (come RTF, DOC, ODT e TXT), così esistono molti formati diversi per la memorizzazione e la trasmissione del multimedia.
La maggior parte di questi formati sono compressi con perdita di informazione rispetto all'originale, ma esistono diversi formati non compressi o solo debolmente compressi utilizzati di solito alla fonte (come videocamere, schede di acquisizione, CD audio), oppure come formati intermedi per la conversione da un formato ad un altro. Questi formati, sebbene importantissimi nelle applicazioni, raramente sono usati per la memorizzazione a tempo indeterminato.
Tornando al parallelo con i formati di testo, come esistono programmi che consentono di visualizzare ed elaborare documenti testuali nei vari formati, così esistono dei software o, più in generale, degli algoritimi, in grado di riprodurre ed elaborare contenuti multimediali nei diversi formati. Questi algoritmi si chiamano codec. L'etimologia del termine è controversa, ma i più lo fanno derivare dalle parole inglesi coding e decoding (codifica e decodifica). Altri ritengono derivi da compression/decompression, enfatizzando un aspetto senza dubbio importante quale la compressione, che vedremo più avanti. C'è una certa confusione anche circa l'essenza dei codec: i più parlano di codec in relazione a del software o a degli algoritmi, ma talvolta si parla di codec anche in relazione a particolari dispositivi hardware che effettivamente operano codifica e decodifica. In fondo, un decoder satellitare o digitale terrestre fa proprio questo. D'altra parte, l'hardware di solito implementa degli algoritmi, e quindi si torna comunque alla prima accezione del termine.
Se lo scopo di massima è lo stesso per tutti, ogni codec lo realizza con tecniche diverse. In alcuni casi, poi, l'esistenza di brevetti software o altri vincoli di proprietà intellettuale ha portato gruppi di programmatori a sviluppare codec alternativi a quelli già esistenti e diffusi, talvolta conservando compatibilità con questi, altre volte prendendo strade completamente diverse.
Fra i codec audio più famosi vanno ricordati:
- WAV e PCM
- (non compressi, usati nei CD audio)
- MP3 (MPEG-1/2 Layer III)
- compresso e attualmente in assoluto il più diffuso e utilizzato
- AAC3
- Advanced Audio Coding, di alta qualità, usato nei DVD video commerciali
- Vorbis
- codec open source in diretta concorrenza con MP3. Molto valido, purtroppo è supportato solo da lettori hardware di fascia alta, del costo di un iPod
Per il video, vanno invece ricordati:
- MPEG-2 e derivati
- sono i codec certamente più usati, in particolare nella televisione digitale, sia satellitare che terrestre, anche in alta definizione (HDTV, High Definition TV) e nei DVD video
- MPEG-4 e derivati
- più flessibili ed efficienti, questi codec stanno trovando ampia diffusione soprattutto nel mercato consumer, ed è ormai pratica quotidiana usare codec di questo tipo per creare copie di backup di DVD video di buona qualità e piccoli abbastanza da stare in un CD-ROM da 700Mb. Sono però usati anche a livello professionale, ad esempio per la trasmissione su canali a banda limitata e senza pretese di elevata qualità (ad esempio nei videofonini), perché consentono di usare bitrate molto bassi con una perdita di qualità accettabile.
- Theora
- uno dei pochi codec video open source, sviluppato dalla stessa comunità del Vorbis, è molto valido ma non è supportato praticamente da nessun lettore hardware.
Contenitori multimediali
[modifica | modifica sorgente]Al di là della codifica e decodifica dell'informazione video e audio, che sono processi sostanzialmente indipendenti, la riproduzione di contenuti sia audio che video pone il problema della sincronizzazione dei due flussi: il suono (colonna sonora, dialoghi, voci fuori campo e così via) deve procedere di pari passo al video. Questo rende necessari formati specifici il cui scopo è proprio contenere un flusso video e un flusso audio in modo da consentire la loro successiva riproduzione o trasmissione in perfetta sincronia. Questi formati si dicono appunto contenitori (in inglese container format).
I contenitori più noti sono:
- AVI (Audio Video Interleave)
- è a tutti gli effetti un'implementazione del formato RIFF introdotta da Microsoft parecchi anni fa. Non eccelle in efficienza, perché introduce un overhead, cioè spazio in più rispetto al contenuto strettamente inteso, piuttosto pesante. Nonostante questo e diversi altri difetti, è così diffuso che sembra impensabile che venga accantonato in tempi brevi. Attualmente un suo uso molto comune è contenere flussi video MPEG-4 e flussi audio MP3 ricavati dalla decodifica dei DVD video a fini di backup. Tutti gli attuali lettori hardware di DivX accettano questo formato, più raramente altri.
- OGG
- È il formato contenitore sviluppato dalla comunità Vorbis, e molto usato soprattutto per il solo audio. È però perfettamente in grado di contenere flussi multimediali, ed è più sofisticato dell'AVI. Il nome non è una sigla: una leggenda metropolitana vuole che sia l'esclamazione di stupore sfuggita ad uno degli sviluppatori alla vista degli ottimi risultati esibiti nei primi test.
- MOV (Quicktime)
- Introdotto da Apple, è ovviamente un must nel mondo Macintosh. Si può considerare un'alternativa ad AVI, ma non è altrettanto supportato dai lettori hardware.
- MPEG
- È il contenitore proposto dal gruppo MPEG. Meno usato semplicemente perché non è mai riuscito a scalzare il predominio di AVI. Dal punto di vista tecnico è invece più evoluto.
Compressione
[modifica | modifica sorgente]Che si voglia elaborare, riprodurre o trasmettere informazione multimediale, bisogna fare i conti con i mezzi a disposizione, e cioè potenza di calcolo, memoria, ampiezza di banda etc. Se i mezzi non sono adeguati al bitrate scelto, si può tentare di ridurlo cercando di limitare al massimo la conseguente perdita di qualità. In questo consiste sostanzialmente la compressione.
In realtà esistono codec compressi di tipo 'lossless', ma essi comprimono molto meno di quanto avviene, ad esempio, con i file di testo compressi con ZIP e simili. Nel seguito tratteremo soprattutto i codec 'lossy', cioè con perdita di informazione.
I codec operano in una serie di passi successivi, di solito su piccoli blocchi di dati, in modi in fondo non così diversi come si potrebbe pensare. Correndo il rischio di semplificare anche troppo, tentiamo nelle prossime sezioni di illustrare come avviene tipicamente la compressione e la decompressione del multimedia.
Dal segnale alle frequenze
[modifica | modifica sorgente]Quando si pizzica una corda di chitarra, il suono che si percepisce non è dato da una sola onda sonora, ma da infinite onde di frequenze diverse che si sovrappongono. Ognuna di queste onde, oltre ad una sua specifica frequenza, ha una particolare ampiezza. Quelle con ampiezza minore, indipendentemente dalle loro frequenze specifiche, contribuiscono alla percezione meno di quelle con ampiezza maggiore. Inoltre quelle al di fuori di un certo intervallo di frequenza non sono udibili dall'orecchio umano.
Si comprende dunque che, se si potessero ricavare frequenze e ampiezze almeno di molte delle onde che contribuiscono al fenomeno (tutte no, essendo infinite), si potrebbe costruire con esse un suono molto simile a quello originale, ma usando meno informazione.
Questa è l'idea alla base della trasformazione di un suono nello spazio delle frequenze: rappresentare il segnale attraverso ampiezze e frequenze invece che come sequenza temporale di valori è il primo passo verso la compressione, anche se non è essa stessa una compressione.
Il ragionamento si può fare anche per le immagini. Limitandosi per semplicità ad immagini in bianco e nero, si può pensare all'immagine come una funzione che ad ogni pixel associa un tono di grigio, in una certa scala discreta. Lungo le righe e lungo le colonne l'intensità del grigio varia, proprio come l'intensità di un'onda sonora, che sale e scende nel tempo con una certa frequenza. Anche nel caso delle variazioni del grigio da un pixel all'altro si può rapprentare la variazione come sovrapposizione di variazioni di diverse frequenze, individuando, per ogni frequenza, l'ampiezza corrispondente. Si scopre anche in questo caso che, di solito, molte frequenze sono caratterizzate da ampiezze molto ridotte, e quindi sono ottime candidate per essere scartate successivamente senza perdere troppo in qualità.
Sia nell'audio che nel video è tipico che le frequenze più elevate sono anche quelle con minore ampiezza. Si dice quindi che l'energia è concentrata sulle basse frequenze.
La trasformazione in frequenze sfrutta la trasformata di Fourier discreta (DFT) per l'audio, e la trasformata in coseni discreta (DCT) per il video. Si tratta di trasformazioni molto studiate e consolidate, e soprattutto sono implementate con algoritmi molto efficienti. Tipicamente, queste trasformazioni operano su valori interi e restituiscono valori interi: sono cioè puramente digitali.
Quantizzazione
[modifica | modifica sorgente]Una volta che dispone del dato nello spazio delle frequenze, e quindi delle ampiezze relative alle diverse frequenze, un codec tipicamente procede all'operazione di quantizzazione già vista, la prima di una serie di compressioni vere e proprie. Oggetto della compressione sono i coefficienti delle frequenze, che siano audio o video: ciascun coefficiente di frequenza viene diviso per un fattore fisso, caratteristico di quella particolare frequenza, e che dipende dal codec o dal livello di compressione che si vuole ottenere; il risultato di questa divisione viene poi arrotondato all'intero più vicino. In questo modo i coefficienti non sono più quelli originali: i valori sono ridimensionati, alcuni più, altri meno. Ciascun codec opera in un modo particolare, e spesso è possibile configurare un codec perché utilizzi divisori scelti dall'utente (cosa che fanno solo i più esperti e gli sviluppatori).
La quantizzazione è fatta in modo tale che molti coefficienti, dopo l'arrotondamento, siano semplicemente nulli, e altri siano fortemente ridimensionati. Di solito, visto che la gran parte dell'informazione è normalmente concentrata sulle basse frequenze, la quantizzazione usa divisori maggiori per i coefficienti delle alte frequenze, minori, o comunque prossimi a 1, per gli altri.
Naturalmente, quando i contenuti devono essere riprodotti, saranno disponibili coefficienti quantizzati, quindi più poveri di quelli originali, e quindi non viene invertita l'operazione di quantizzazione (che, per inciso, è per sua natura non invertibile, dato che produce perdita di informazione).
Compressione dei coefficienti
[modifica | modifica sorgente]Quantizzati i coefficienti in frequenza, essi vengono opportunamente organizzati per essere poi compressi con algoritmi senza perdita di informazione, sostanzialmente simili alla maniera di ZIP e simili. L'idea è di lavorare direttamente sui bit, sostitendo lunghe sequenze di zeri con la loro stessa lunghezza. Si parla di 'run-length encoding o variable length coding
Nel caso delle immagini, i coefficienti in frequenza vengono ordinati non per righe e colonne, ma a zig-zag partendo dal coefficiente della frequenza più bassa, perché in questo modo, nelle situazioni più comuni, dopo alcuni di questi passi si incontrano coefficienti dal valore sempre più basso, e quindi ci sono più probabilità, nella compressione run-length, di incontrare sequenze di zeri sempre più lunghe.
Questa forma di compressione, non provocando perdita di informazione, è invertibile, e la relativa decompressione viene eseguita dal decoder.
Percezione sensoriale
[modifica | modifica sorgente]I sensi umani non hanno tutti la stessa sensibilità. L'udito è molto sensibile a variazioni rapide, e per questo la frequenza con cui viene campionato un segnale audio è notevolmente superiore a quella con cui è campionato un segnale video: nel primo caso si parla di migliaia di Hz, nel secondo, almeno nel sistema PAL in uso in Europa, di 50 Hz. Un orecchio allenato si accorge che sta ascoltando un segnale campionato a frequenza ridotta, mentre l'occhio non si accorgerebbe facilmente che un filmato è riprodotto a 100 fotogrammi al secondo invece di 50 (al massimo può percepire una maggiore stabilità delle immagini).
D'altra parte, sia l'orecchio che l'occhio non sono sensibili allo stesso modo a tutte le frequenze. È noto che l'orecchio non percepisce frequenze sopra i 22000 Hz o sotto i 20 Hz. Inoltre, non percepisce suoni di intensità troppo bassa. Questo permette di scartare intenzionalmente molti dei coefficienti in frequenza di cui si è parlato sopra, perché comunque non contribuirebbero alla percezione: si possono scartare quelli corrispondenti a frequenze non udibili e quelli che, pur legati a frequenze udibili, sono troppo piccoli per incidere sulla percezione in fase di decodifica.
Analogamente, si possono sfruttare caratteristiche note della vista per ridurre le informazioni, e quindi il bitrate, senza incidere troppo sulla qualità. È noto ad esempio che l'occhio è più sensibile alle variazioni di intensità luminosa che alle variazioni di colore. Inoltre, i fotorecettori della retina sono di soli tre tipi, e ciascuno è specializzato su un piccolo intervallo di frequenze, grosso modo corrispondenti a rosso, verde e blue. Infine, i fotorecettori del verde sono notevolmente più sensibili di quelli dl rosso, a loro volta nettamente più sensibili di quelli per il blu.
Per questo motivo, già nella televisione tradizionale, le informazioni relative al colore non sono memorizzate in RGB (rosso, verde e blu, i tre colori fondamentali), ma in YUV: una informazione per la cosiddetta luminanza e due per la crominanza, calcolate a partire dall'RGB per sintesi sottrattiva. Esistono trasformazioni invertibili da RGB a YUV, ma la codifica YUV è più vantaggiosa rispetto alla RGB dal punto di vista della compressione, appunto perché mette in risalto parametri più significativi per la vista umana rispetto alla più ovvia codifica RGB.
Più in generale, sia per l'audio che per il video vengono sfruttate diverse caratteristiche dell'udito e della vista per ridurre il bitrate senza troppo incidere sulla qualità. Di solito i codec consentono di specificare quali di queste caratteristiche sfruttare in fase di codifica e come.