Ciao a tutti
Su richiesta di Maxcon sono andato a ripescare un testo che scrissi nel 2007 riguardo alla formato mpeg2.
All'epoca avevo deciso di fare una serie di articoli "Didattici" ma siccome non ebbero molto riscontro dovetti lasciar perdere il progetto.
Si tratta comunque di un progetto che non ha smesso di interessarmi, quindi, se il testo che trovate di seguito solletica la vostra materia grigia in maniera positiva, postatemi pure le vostre domande, temi o termini e procedure, curiositá ecc.ecc. ovviamente sono aperto anche alle critiche più aspre .
:)
Di seguito trovate l'articolo che mi ha richiesto Maxcon.
Il significato della parola MPEG
La sigla MPEG é l'acronimo di Moving Pictures Experts Group.
il Formato MPEG é stato inventato/definito da un gruppo di esperti, non nasce dal nulla ma è il frutto di decisioni prese su basi tecnico/scientifiche ed economiche (sopratutto economiche) .
Maggiori info al riguardo le trovate sul sito ufficale ai link
Come ormati tutti sanno esistono diversi tipi di mpeg(nati in diverse stagioni dello sviluppo delle rete internet).
Sui siti citati poc'anzi troverete le descrizioni dei singoli formati MPEG.
In questo articolo mi soffermo solo sulla "teoria generale" della compressione MPEG2, la quale com'é ormai noto, serve "per fare i dvd" ed é ancora il formato di masterizzazione più diffuso nelle case degli italiani anche se piano piano il Bluray e le media box stanno prendendo sempre piú piede..
Il Formato mpeg2 può essere creato con differenti estensioni, per esempio i file video con estensione MOD, MPA(audio Mpeg), MPV, VOB ecc. ecc.
Lo standard MPEG-2 utilizza tecniche di compressione basate sulla riduzione della ridondanza spaziale e temporale della sequenza video. (praticamente dai singoli frame codificati vengono eliminate quelle parti dell'immagine che NON sono variate da un fotogramma all'altro registrando quindi le sole modifiche nell'immagine)
Lo standard MPEG definisce tre tipi di immagini
- Immagini codificate senza riferimento ad altre immagini (Frame I)
- Immagini codificate mediante motocompensazione del movimento da immagini precedenti (Frame P)
- Immagini codificate mediante motocompensazione bidirezionale (Frame B)
Frame I
I Frame I sono dei punti di accesso alla sequenza codificata,in corrispondenza dei quali può iniziare la decodifica; sono caratterizzate da un modesto rapporto di compressione, si tratta quindi dei frame che contengono nella norma la prima o l'ultima immagine di un "Gruppo di immagini" che crea il fotogramma video.
Si tratta in sostanza di immagini di riferimento cui il codec si appoggia per la creazione della struttura di compressione.
Gli I frame sono conosciuti anche con il nome di intra frame o più comunemente Key frame(immagine chiave)
Frame P
I frame P sono Immagini codificate mediante motocompensazione del movimento da immagini precedenti e vengono usate come riferimento per i fotogrammi successivi.
in sostanza si tratta di immagini "ponte" nel senso che vengono in parte compresse sulla base del contenuto del frame i e in parte sulla previsione della posizione dei singoli elementi dell'immagine al termine della sequenza temporale coperta dall'immagine stessa.
Frame B
I frame B sono invece Immagini codificate mediante motocompensazione bidirezionale ovvero prendeno le informazioni giá filtrate dal Frame P e calcolano sulla base di queste informazioni le posizioni finali nell'immagine dei vari oggetti in movimento.
In realtá quindi sono i frame B a "fare" la compressione vera e proprio del filmato.
Durante la codifica del filmato ogni fotogramma viene suddiviso in blocchi 16x16, detti macroblocchi.
Tutti i macroblocchi di un frame I sono codificati senza predizione.
Ciascun macroblocco di un frame P può essere predetto a partire da un Frame I o P precedente (macroblocco P), oppure può essere codificato senza predizione (macroblocco di tipo I).
Ciascun macroblocco di un Frame B può essere predetto bidirezionalmente rispetto al Frame I o P precedente e al Frame I o P successivo (macroblocco B ), ovvero predetto rispetto al Frame I o P precedente (macroblocco P), oppure codificato senza predizione (macroblocco I).
Il modo di codifica di ciascun macroblocco dei Frame P o B è scelto in modo da minimizzare il numero di bit richiesti per il calcolo.
Poiché i vettori di moto di macroblocchi adiacenti sono correlati, sono codificati in modo differenziale (registrano solo le differenze tra un Frame e l'altro) rispetto al vettore di moto del precedente macroblocco adiacente.
La quantizzazione comporta una perdita irreversibile di informazione ed è adattata alle caratteristiche dell'apparato visivo umano, mediante la scelta di opportune matrici di quantizzazione.
Le matrici di quantizzazione possono variare da un immagine ad un'altra e sono trasmesse all'inizio di ogni immagine; inoltre la matrice di quantizzazione può essere scalata da macroblocco a macroblocco mediante un fattore di scala (Scala di quantizzazione).
I quadri della sequenza sono raggruppati in Group of Picture (GOP), il cui primo quadro è, sempre , di tipo I oppure P.
Il frame sará sempre I all'inizio del primo GOP di un dato video, sucessavemente possono essere tralasciati i frame I per utilizzare solo Frame P fino alla fine del film.
Tale organizzazione dei dati codificati consente la sincronizzazione del decoder con un ritardo al più pari alla durata del Gop.
Di seguito trovate un esempio di GOP.
I BBB P BBB P BBB P
In questo esmepio Il frame I apre il gruppo di immagini mentre quello P lo chiude.
I frame B presenti fra la I e la P sono quelli maggiormente compressi e contengono solo le informazioni prese dal frame I e le predizioni sullo spostamento degli elementi dell'immagini nello spazio(dell'immagine) e nel tempo (di riproduzione dell'immagine)fino ad arrivare al Frame P.
Ovviamente maggiore sará la compressione minore sará la qualitá del video, per questo motivo la prassi quotidiana a mostrato che non é consigliabile lavorare solo con il primo Frame I seguito solo da B e P.
Si preferisce invece assumere una struttura dove vi siano più di un frame I; il file mpeg2 avrá dimensioni maggiori al termine della codifica ma la qualitá dell'immagine sará migliore.
Esempio della struttura standard di un dvd:
I BBB P BBB P BBB Iecc ecc
Nel programma magix:
I frame 12 indica la dimensione del GOP.
Abbiamo detto che in GOP deve sempre iniziare con un I frame no?
Il valore 12 li inserito ci dice che ogni 12 frame ci dovrá essere per forza un I che indica l'inizio del GOP successivo.
Il valore P frame indica quanti P vogliamo avere nel nostro GOP, il resto saranno B.
Per esmepio l'impostazione standard dei videodeluxe su indicata ci porta ad una struttura del GOP di questo tipo:
I (perché abbiamo detto che deve iniziare con I)
BB P (abbiamo indicato il valore 3 sparso su 12 frame meno uno I)
e segue con
BB P BBP BB...
Nel complesso appare quindi cosi:
I BB P BB P BB P BB e chiu si chiude il primo GOP
Il GOp successivo inizierá nuovamente con I ecc ecc
e quindi per due GOP avremo
I BB P BB P BB P BB - I BB P BB P BB P BB
I valore del I frame non deve essere per forza quello indicato nel software.
In passato nei programmi MAGIX lo standard era 15 I frame.
La sequenza di frame non deve essere per forza di 15 o 12 elementi, è stato però appurato che con questi valori non si sovraccaricano i processi dei lettori dvd di comune utilizzo.
Volendo potreste anche diminuire il numero di P (automaticamente aumenta il numero di B).
Per verificare eventuali migliorie alla qualitá del video in seguito al cambio di queste impostazioni vi invito a fare tanti piccoli file mpeg a partire dallo stesso video originale (di breve durata) potrete cosi verificare l'impatto della modifica sulla qualitá del lavoro.
Concludo qui questa mio primo articolo sperando che vi piaccia e che lo troviate interessante e relativamente semplice.
Per qualsiasi dubbio non esitate a scrivermi.
Ps per maxcon
Il testo no é uguale a quello vecchio del forum, l'ho editato e integrato di un paio di extra.
Un salutone a tutti
GPM