{"id":54312,"date":"2019-12-23T00:00:00","date_gmt":"2019-12-22T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/kak-rabotaet-videokodek-chast-1-osnovy"},"modified":"2020-02-18T14:02:18","modified_gmt":"2020-02-18T11:02:18","slug":"kak-rabotaet-videokodek-chast-1-osnovy","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/novosti-interneta\/kak-rabotaet-videokodek-chast-1-osnovy","title":{"rendered":"Come funziona il codec video. Parte 1. Fondamenti","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h3>Secondo capitolo:<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/edison\/blog\/480430\/\"> Principi di funzionamento del codec video<\/a><\/noindex><\/h3>\n<p>Qualsiasi immagine raster <b>pu\u00f2 essere rappresentata come<\/b> una matrice bidimensionale <b>. Quando parliamo di colori, l'idea pu\u00f2 essere sviluppata considerando l'immagine come<\/b>una matrice tridimensionale <b>, dove le dimensioni aggiuntive vengono utilizzate per memorizzare i dati per ciascun colore.<\/b>Se consideriamo il colore finale come una combinazione dei cosiddetti colori primari (rosso, verde e blu), nella nostra matrice tridimensionale definiamo tre piani: il primo per il colore rosso, il secondo per il verde e l'ultimo per il blu.<\/p>\n<p>Chiamiamo ogni punto in questa matrice pixel (elemento dell'immagine). Ogni pixel contiene informazioni sull'intensit\u00e0 (solitamente sotto forma di valore numerico) di ciascun colore. Ad esempio,<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/edison\/blog\/481418\/\"><img decoding=\"async\" alt=\"Come funziona il codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/ce37dd683a4c3ed434dae1d488646716.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\nun pixel rosso <b>significa che contiene 0 verde, 0 blu e massimo rosso.<\/b> Un pixel di colore rosa <b>pu\u00f2 essere formato utilizzando una combinazione dei tre colori. Utilizzando un intervallo numerico da 0 a 255, un pixel rosa \u00e8 definito come<\/b> Rosso = 255 <b>Verde = 192<\/b>, <b>Blu = 203<\/b> e <b>L'articolo \u00e8 pubblicato con il supporto di EDISON.<\/b>.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<blockquote><p><noindex><a rel=\"nofollow\" href=\"https:\/\/www.edsd.ru\/\" title=\"EDISON Software - sviluppo web\"><img decoding=\"async\" alt=\"Come funziona il codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/e5063b9a32248767cb0702e7aa2e7f9e.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br clear=\"right\"><br \/>\nSviluppiamo<\/p>\n<p>applicazioni per videosorveglianza, streaming video <noindex><a rel=\"nofollow\" href=\"https:\/\/www.edsd.ru\/ru\/portfolio\/tehnologiya\/video\">, e ci occupiamo<\/a><\/noindex>della registrazione video in sala operatoria <noindex><a rel=\"nofollow\" href=\"https:\/\/www.edsd.ru\/videozapis-v-bolnichnoj-operacionnoj-s-vozmozhnostyu-obsuzhdeniya-na-forume\">Metodi alternativi di codifica di un'immagine a colori<\/a><\/noindex>.<\/p><\/blockquote>\n<h3>Per rappresentare i colori di cui \u00e8 composta l'immagine, ci sono molte altre modalit\u00e0. Ad esempio, si pu\u00f2 utilizzare una palette indicizzata, dove \u00e8 sufficiente un solo byte per rappresentare ciascun pixel, invece dei tre necessari utilizzando il modello RGB. In questo modello si pu\u00f2 utilizzare una matrice 2D al posto di una matrice 3D per rappresentare ciascun colore. Questo risparmia memoria, ma offre una gamma di colori ridotta.<\/h3>\n<p>\nRGB<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona il codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/573a39c53527b4ec0403f019becf2d22.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Ad esempio, guarda questa immagine qui sotto. Il primo volto \u00e8 completamente colorato. Gli altri sono i piani di rosso, verde e blu (l'intensit\u00e0 dei colori corrispondenti \u00e8 mostrata in scala di grigi).<\/h2>\n<p>Vediamo che le sfumature di rosso nell'originale saranno negli stessi luoghi in cui si osservano le parti pi\u00f9 luminose del secondo volto. Mentre il contributo del blu pu\u00f2 essere visto principalmente solo negli occhi di Mario (l'ultimo volto) e negli elementi del suo abbigliamento. Nota dove tutti e tre i piani colorati contribuiscono di meno (le parti pi\u00f9 scure delle immagini) \u2014 sono nei baffi di Mario.<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona il codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/cf1f802d4381e062005490f5f9f26911.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPer memorizzare l'intensit\u00e0 di ciascun colore \u00e8 necessario un certo numero di bit \u2014 questa grandezza \u00e8 chiamata<\/p>\n<p>profondit\u00e0 di colore <b>. Supponiamo di impiegare 8 bit (partendo da un valore da 0 a 255) per un piano di colore. Allora abbiamo una profondit\u00e0 di colore di 24 bit (8 bit * 3 piani R\/G\/B).<\/b>Un'altra propriet\u00e0 dell'immagine \u00e8<\/p>\n<p>la risoluzione <b>, che rappresenta il numero di pixel in una dimensione. Spesso \u00e8 indicata come<\/b>larghezza \u00d7 altezza <b>, come in questo esempio di immagine 4 per 4.<\/b>Un'altra propriet\u00e0 con cui ci confrontiamo quando lavoriamo con immagini\/video \u00e8<br \/>\n<img decoding=\"async\" alt=\"Come funziona il codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/51a4d948e6d44e4058e346fdbaf9d6c2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nil rapporto d'aspetto <b>, che descrive la relazione proporzionale normale tra larghezza e altezza dell'immagine o del pixel.<\/b>Quando si dice che un certo film o immagine ha una dimensione di 16 per 9, di solito si fa riferimento a<\/p>\n<p>rapporto d'aspetto del display <b>DAR<\/b> (<b>Display Aspect Ratio<\/b> \u2014 da <i>rapporto di pixel<\/i>PAR <b>Pixel Aspect Ratio<\/b> (<b>Nota per la padrona di casa:<\/b> \u2014 da <i>DVD<\/i>).<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona il codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/1158c6e98247a1a1084440969f9400c6.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"Come funziona il codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/a610f0f77bdb245c05799d3de4147302.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<blockquote><p>DAR 4 per 3 <b>Sebbene la risoluzione reale del DVD sia 704\u00d7480, mantiene comunque un rapporto d'aspetto di 4:3, poich\u00e9 il PAR \u00e8 di 10:11 (704\u00d710 \/ 480\u00d711).<\/b> corrisponde a <b>Infine, possiamo definire<\/b><\/p>\n<p>Sebbene la risoluzione reale del DVD sia di 704&#215;480, mantiene comunque un rapporto di aspetto di 4:3, poich\u00e9 il PAR \u00e8 di 10:11 (704&#215;10 \/ 480&#215;11).<\/p><\/blockquote>\n<p>\nframe nel tempo <b>video<\/b> , che pu\u00f2 essere considerato una dimensione aggiuntiva. E <b>n<\/b> poi \u2014 \u00e8 la frequenza dei fotogrammi o il numero di fotogrammi al secondo ( <b>tempo<\/b>Frames per Second <b>n<\/b> Il numero di bit al secondo necessario per visualizzare un video \u00e8 il suo<b>bitrate<\/b> \u2014 da <i>bitrate = larghezza * altezza * profondit\u00e0 di bit * fotogrammi al secondo<\/i>).<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona il codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/f940932bbd66aa361c7966f8b44ed431.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAd esempio, per un video con 30 fotogrammi al secondo, 24 bit per pixel, una risoluzione di 480\u00d7240 saranno necessari 82.944.000 bit al secondo o 82,944 Mbit\/s (30x480x240x24) \u2014 ma solo se non viene utilizzato alcuno dei metodi di compressione. <b>Se il bitrate<\/b> \u2014 <b>\u00e8 quasi costante<\/b>.<\/p>\n<blockquote><p>, allora si chiama<\/p><\/blockquote>\n<p>\nAd esempio, per un video a 30 fotogrammi al secondo, con 24 bit per pixel, una risoluzione di 480&#215;240 richiederebbe 82.944.000 bit al secondo o 82.944 Mbit\/s (30x480x240x24) \u2014 ma questo senza alcun metodo di compressione.<\/p>\n<p>CBR <i>constant bit rate<\/i>). Ma pu\u00f2 anche variare, in questo caso si chiama <b>bitrate variabile<\/b> (<b>VBR<\/b> \u2014 da <i>variable bit rate<\/i>Questo grafico mostra un VBR limitato, dove vengono utilizzati pochi bit in caso di un fotogramma completamente scuro. <b>Inizialmente, gli ingegneri hanno sviluppato un metodo per raddoppiare la frequenza percepita del frame del display video senza utilizzare ulteriore larghezza di banda. Questo metodo \u00e8 conosciuto come<\/b> (<b>video interlacciato<\/b> \u2014 da <i>bit rate variabile<\/i>).<\/p>\n<p>Questo grafico dimostra un VBR limitato, quando non vengono spesi troppi bit in caso di fotogramma completamente scuro.<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona il codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/f307dde8da9ef1e017646ebcad0c4062.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nInizialmente, gli ingegneri hanno sviluppato un metodo per raddoppiare la frequenza percepita dei fotogrammi del display video senza utilizzare larghezza di banda aggiuntiva. Questo metodo \u00e8 conosciuto come <b>video interlacciato<\/b>; principalmente, invia met\u00e0 dello schermo nel primo \u00abframe\u00bb e l'altra met\u00e0 nel successivo \u00abframe\u00bb.<\/p>\n<p>Attualmente, la visualizzazione delle scene avviene principalmente utilizzando <b>la tecnologia di scansione progressiva<\/b>. Questo \u00e8 un metodo per visualizzare, memorizzare o trasmettere immagini in movimento in cui tutte le linee di ogni fotogramma vengono disegnate in sequenza.<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona il codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/434afd828d803ec1e4c87a3827c07dde.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nBene! Ora sappiamo come un'immagine \u00e8 rappresentata digitalmente, come sono composti i suoi colori, quanti bit al secondo utilizziamo per mostrare video, sia che la velocit\u00e0 di trasmissione sia costante (CBR) o variabile (VBR). Abbiamo compreso la risoluzione assegnata utilizzando una determinata frequenza di fotogrammi e ci siamo familiarizzati con molti altri termini come video interlacciato, PAR e alcuni altri.<\/p>\n<h2>Rimozione della ridondanza<\/h2>\n<p>\n\u00c8 noto che non \u00e8 possibile utilizzare video non compressi in modo pratico. Un'ora di video in risoluzione 720p e a 30 fotogrammi al secondo occuperebbe 278 GB. Questo valore si ottiene moltiplicando 1280 x 720 x 24 x 30 x 3600 (larghezza, altezza, bit per pixel, FPS e tempo in secondi).<\/p>\n<p>L'utilizzo di <b>algoritmi di compressione senza perdita<\/b>, come DEFLATE (utilizzato in PKZIP, Gzip e PNG), non offrirebbe una riduzione sufficiente della larghezza di banda necessaria. Dobbiamo cercare altri modi per comprimere il video.<\/p>\n<p>Per fare questo, possiamo sfruttare le peculiarit\u00e0 della nostra visione. Riusciamo a percepire meglio la luminosit\u00e0 rispetto ai colori. Il video \u00e8 un insieme di immagini sequentiali che si ripetono nel tempo. Tra fotogrammi adiacenti di una stessa scena, le differenze sono minime. Inoltre, ogni fotogramma contiene molte aree che utilizzano lo stesso (o simile) colore.<\/p>\n<h2>Colore, luminosit\u00e0 e i nostri occhi<\/h2>\n<p>\nI nostri occhi sono pi\u00f9 sensibili alla luminosit\u00e0 che al colore. Puoi verificarlo tu stesso osservando questa immagine.<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona il codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/bf50b7dfd54ebbdb66556bbf5e304090.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Se non riesci a vedere che nella met\u00e0 sinistra dell'immagine i colori dei quadrati <b>A<\/b> e <b>B<\/b> sono in realt\u00e0 uguali, va tutto bene. Il nostro cervello ci fa prestare pi\u00f9 attenzione alle tonalit\u00e0 che ai colori. A destra, tra i quadrati contrassegnati, c'\u00e8 un ponte dello stesso colore \u2014 quindi noi (cio\u00e8 il nostro cervello) identifichiamo facilmente che in realt\u00e0 c'\u00e8 lo stesso colore.<\/p>\n<blockquote><p>Analizziamo (semplificando) come funzionano i nostri occhi. L'occhio \u00e8 un organo complesso, costituito da molte parti. Tuttavia, ci\u00f2 che ci interessa di pi\u00f9 sono i coni e i bastoncelli. L'occhio contiene circa 120 milioni di bastoncelli e 6 milioni di coni.<\/p>\n<p>Esaminiamo la percezione del colore e della luminosit\u00e0 come funzioni separate di alcune parti dell'occhio (in realt\u00e0, la situazione \u00e8 un po' pi\u00f9 complessa, ma semplificheremo). Le cellule a bastoncino sono principalmente responsabili della luminosit\u00e0, mentre le cellule a cono si occupano del colore. I coni si dividono in tre tipi, a seconda del pigmento presente: coni S (blu), coni M (verde) e coni L (rosso).<\/p>\n<p>Poich\u00e9 abbiamo molte pi\u00f9 cellule a bastoncino (luminosit\u00e0) rispetto ai coni (colore), si pu\u00f2 dedurre che siamo pi\u00f9 capaci di distinguere le transizioni tra scuro e chiaro piuttosto che tra colori.<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona il codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/d344365d45e43b36635ce29baa1132b4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Funzioni di sensibilit\u00e0 al contrasto<\/h2>\n<p>\nI ricercatori di psicologia sperimentale e di molte altre aree hanno sviluppato numerose teorie sulla visione umana. E una di esse \u00e8 chiamata <b>funzioni di sensibilit\u00e0 al contrasto<\/b>. Sono collegate all'illuminazione spaziale e temporale. In breve, si tratta di quante variazioni servono prima che l'osservatore le noti. Si noti il plurale della parola \u00abfunzione\u00bb. Questo \u00e8 dovuto al fatto che possiamo misurare le funzioni di sensibilit\u00e0 al contrasto non solo per immagini in bianco e nero, ma anche per quelle a colori. I risultati di questi esperimenti mostrano che, nella maggior parte dei casi, i nostri occhi sono pi\u00f9 sensibili alla luminosit\u00e0 che al colore.<\/p><\/blockquote>\n<p>Poich\u00e9 \u00e8 noto che siamo pi\u00f9 sensibili alla luminosit\u00e0 dell'immagine, possiamo tentare di sfruttare questo fatto.<\/p>\n<h2>Modello di colore<\/h2>\n<p>\nAbbiamo accennato a come lavorare con immagini a colori utilizzando lo schema RGB. Esistono anche altri modelli. Ce n'\u00e8 uno che separa la luminosit\u00e0 dalla cromaticit\u00e0 ed \u00e8 noto come <b>YCbCr<\/b>. A proposito, esistono altri modelli che fanno una separazione simile, ma noi ci concentreremo solo su questo.<\/p>\n<p>In questo modello di colore <b>Y<\/b> \u2014 \u00e8 la rappresentazione della luminosit\u00e0, e vengono utilizzati due canali di colore: <b>Cb<\/b> (blu saturo) e <b>(rosso saturo). YCbCr pu\u00f2 essere ottenuto da RGB, cos\u00ec come \u00e8 possibile la trasformazione inversa. Utilizzando questo modello, possiamo creare immagini a colori pieni, come vediamo qui sotto:<\/b> (rosso intenso). YCbCr pu\u00f2 essere ottenuto da RGB, cos\u00ec come \u00e8 possibile anche la conversione inversa. Utilizzando questo modello, possiamo creare immagini a colori completi, come vediamo di seguito:<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona il codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/e7458471caf7ef071bb0362e96b44f11.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Trasformazione tra YCbCr e RGB<\/h2>\n<p>\nQualcuno potrebbe obiettare: come \u00e8 possibile ottenere tutti i colori se il verde non \u00e8 utilizzato?<\/p>\n<p>Per rispondere a questa domanda, convertiamo RGB in YCbCr. Utilizziamo i coefficienti stabiliti nello standard <b>BT.601<\/b>, raccomandato dall'agenzia <b>ITU-R<\/b>. Questa agenzia definisce gli standard per il video digitale. Ad esempio: che cos'\u00e8 il 4K? Quali dovrebbero essere la frequenza dei fotogrammi, la risoluzione, il modello di colore?<\/p>\n<p>Per prima cosa calcoliamo la luminosit\u00e0. Utilizziamo le costanti proposte dall'ITU e sostituitiamo i valori RGB.<\/p>\n<p><b>Y<\/b> = 0.299<b>R<\/b> + 0.587<b>G<\/b> + 0.114<b>B<\/b> <\/p>\n<p>Dopo aver ottenuto la luminosit\u00e0, separiamo il colore blu e rosso:<\/p>\n<p><b>Cb<\/b> = 0.564(<b>B<\/b> \u2014 <b>Y<\/b>)<\/p>\n<p><b>(rosso saturo). YCbCr pu\u00f2 essere ottenuto da RGB, cos\u00ec come \u00e8 possibile la trasformazione inversa. Utilizzando questo modello, possiamo creare immagini a colori pieni, come vediamo qui sotto:<\/b> = 0.713(<b>R<\/b> \u2014 <b>Y<\/b>) <\/p>\n<p>E possiamo anche convertire di nuovo e persino ottenere il verde usando YCbCr:<\/p>\n<p><b>R<\/b> = <b>Y<\/b> + 1.402<b>(rosso saturo). YCbCr pu\u00f2 essere ottenuto da RGB, cos\u00ec come \u00e8 possibile la trasformazione inversa. Utilizzando questo modello, possiamo creare immagini a colori pieni, come vediamo qui sotto:<\/b><\/p>\n<p><b>B<\/b> = <b>Y<\/b> + 1.772<b>Cb<\/b><\/p>\n<p><b>G<\/b> = <b>Y<\/b> \u2014 0.344<b>Cb<\/b> \u2014 0.714<b>(rosso saturo). YCbCr pu\u00f2 essere ottenuto da RGB, cos\u00ec come \u00e8 possibile la trasformazione inversa. Utilizzando questo modello, possiamo creare immagini a colori pieni, come vediamo qui sotto:<\/b><\/p>\n<p>In generale, i dispositivi (monitor, televisori, schermi, ecc.) utilizzano solo il modello RGB. Tuttavia, questo modello pu\u00f2 essere organizzato in modi diversi:<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona il codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/8736e59d3a7606494fe6a7718d5b4aa2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Sottocampionamento del colore<\/h2>\n<p>\nCon un'immagine rappresentata come una combinazione di luminosit\u00e0 e crominanza, possiamo sfruttare la maggiore sensibilit\u00e0 della visione umana alla luminosit\u00e0 rispetto alla crominanza, eliminando informazioni in modo selettivo. La subsampling del colore \u00e8 un metodo di codifica delle immagini che utilizza una risoluzione pi\u00f9 bassa per la crominanza rispetto alla luminosit\u00e0.<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona il codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/11b5b602ab1374896df296f787932ace.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Fino a che punto \u00e8 accettabile ridurre la risoluzione della crominanza?! Si scopre che ci sono gi\u00e0 schemi che descrivono come gestire la risoluzione e la fusione (Colore finale = Y + Cb + Cr).<\/p>\n<p>Questi schemi sono noti come <b>sistemi di subsampling<\/b> e si esprimono in un rapporto 3:1 \u2014 <b>a<\/b>:<b>x<\/b>:<b>y<\/b>, che definisce il numero di campioni dei segnali di luminosit\u00e0 e crominanza.<\/p>\n<p><b>a<\/b> \u2014 campionamento orizzontale di riferimento (di solito pari a 4)<br \/>\n<b>x<\/b> \u2014 numero di campioni di crominanza nella prima riga di pixel (risoluzione orizzontale rispetto a <b>a<\/b>)<br \/>\n<b>y<\/b> \u2014 numero di cambiamenti nei campioni di crominanza tra la prima e la seconda riga di pixel.<\/p>\n<blockquote><p>L'eccezione \u00e8 <b>4<\/b>:<b>1<\/b>:<b>0<\/b>, che fornisce un campione di crominanza in ogni blocco di risoluzione di luminosit\u00e0 4x4.<\/p><\/blockquote>\n<p>Schemi comuni utilizzati nei codec moderni:<\/p>\n<ul>\n<li><b>4<\/b>:<b>4<\/b>:<b>4<\/b> (senza subsampling)<\/li>\n<li><b>4<\/b>:<b>2<\/b>:<b>2<\/b><\/li>\n<li><b>4<\/b>:<b>1<\/b>:<b>1<\/b><\/li>\n<li><b>4<\/b>:<b>2<\/b>:<b>0<\/b><\/li>\n<li><b>4<\/b>:<b>1<\/b>:<b>0<\/b><\/li>\n<li><b>3<\/b>:<b>1<\/b>:<b>1<\/b><\/li>\n<\/ul>\n<blockquote>\n<h3>YCbCr 4:2:0 \u2014 esempio di fusione<\/h3>\n<p>\nEcco un frammento combinato dell'immagine usando YCbCr 4:2:0. Nota che utilizziamo solo 12 bit per pixel.<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona il codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/67e288b0a46fca88452addaef736f4cd.png\" style=\"display:block;margin: 0 auto;\" \/><\/p><\/blockquote>\n<p>Ecco come appare la stessa immagine codificata nei principali tipi di subsampling del colore. La prima riga \u00e8 il finale YCbCr, la riga in basso mostra la risoluzione della crominanza. Risultati piuttosto buoni, considerando le minime perdite di qualit\u00e0.<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona il codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/fb54b6fcdbbb63cb19d19b89df9f6d85.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nRicordi, abbiamo calcolato 278 GB di spazio su disco per memorizzare un file video di un'ora con risoluzione 720p e 30 fotogrammi al secondo? Se utilizziamo YCbCr 4:2:0, questa dimensione si ridurr\u00e0 a met\u00e0: 139 GB. Siamo comunque lontani da un risultato accettabile.<\/p>\n<p>Puoi creare tu stesso un istogramma YCbCr utilizzando FFmpeg. In questa immagine, il blu prevale sul rosso, il che \u00e8 ben visibile nell'istogramma stesso.<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona il codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/6e74cb646cabc77079aea7eaee846fd1.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<blockquote>\n<h4>Crominanza, luminosit\u00e0, gamma di colori \u2014 video recensione<\/h4>\n<p>\nTi consiglio di guardare questo fantastico video. Spiega cos'\u00e8 la luminosit\u00e0 e chiarisce diversi punti sulla <i>e<\/i> la luminosit\u00e0 e il colore.<\/p>\n<p><center><div class=\"youtube-placeholder\" data-id=\"Ymt47wXUDEU\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/Ymt47wXUDEU\/hqdefault.jpg\" alt=\"Riproduci video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><\/p><\/blockquote>\n<h2>Tipi di fotogrammi<\/h2>\n<p>\nProcediamo. Proviamo a eliminare la ridondanza temporale. Ma prima definiamo una terminologia di base. Supponiamo di avere un film a 30 fotogrammi al secondo, ecco i suoi primi 4 fotogrammi:<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona il codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/103dc714d756d014e1d2c1bfb33751b1.png\" style=\"display:block;margin: 0 auto;\" \/> <img decoding=\"async\" alt=\"Come funziona il codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/fdd7d89b884b2f77fea7c386c0d29fef.png\" style=\"display:block;margin: 0 auto;\" \/> <img decoding=\"async\" alt=\"Come funziona il codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/61746b829025d5abcb7db072a54400c0.png\" style=\"display:block;margin: 0 auto;\" \/> <img decoding=\"async\" alt=\"Come funziona il codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/c65ee526ec4539996f6bb94463d0cf2d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPossiamo vedere molte ripetizioni nei fotogrammi: ad esempio, uno sfondo blu che non cambia da un fotogramma all'altro. Per risolvere questo problema, possiamo astrattamente classificarli in tre tipi di fotogrammi.<\/p>\n<h3>I-frame (<b>I<\/b>Intro Frame)<\/h3>\n<p>\nL'I-frame (fotogramma di riferimento, fotogramma chiave, fotogramma interno) \u00e8 autonomo. Indipendentemente da ci\u00f2 che deve essere visualizzato, l'I-frame \u00e8 fondamentalmente una fotografia statica. Il primo fotogramma \u00e8 solitamente un I-frame, anche se continueremo a vedere I-frame tra fotogrammi non di apertura.<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona il codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/44f2a7d6154f1a40fdb1174a443a9c3f.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>P-frame (<b>P<\/b>Predicted Frame)<\/h3>\n<p>\nIl P-frame (fotogramma previsto) sfrutta il fatto che quasi sempre l'immagine attuale pu\u00f2 essere riprodotta utilizzando il fotogramma precedente. Ad esempio, nel secondo fotogramma, l'unico cambiamento \u00e8 la palla che si muove in avanti. Possiamo ottenere il fotogramma 2 semplicemente modificando leggermente il fotogramma 1, utilizzando solo la differenza tra questi fotogrammi. Per costruire il fotogramma 2 ci riferiamo al fotogramma che lo precede, il fotogramma 1.<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona il codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/1245857fd8406a24da02d0c71beb7b4d.png\" style=\"display:block;margin: 0 auto;\" \/> \u2190 <img decoding=\"async\" alt=\"Come funziona il codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/ab8e8f6020825830c4d03004528af1a4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>B-frame (<b>B<\/b>Bi-predictive Frame)<\/h3>\n<p>\nE che dire dei riferimenti non solo ai fotogrammi passati, ma anche a quelli futuri, per garantire una compressione ancora migliore?! Questo \u00e8, fondamentalmente, ci\u00f2 che fa il B-frame (fotogramma bidirezionale).<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona il codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/f28d4e02836e9b37f0f21937dd1ba660.png\" style=\"display:block;margin: 0 auto;\" \/> \u2190 <img decoding=\"async\" alt=\"Come funziona il codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/7a6b3a329db155c94a91f58a99874bb9.png\" style=\"display:block;margin: 0 auto;\" \/> \u2192 <img decoding=\"async\" alt=\"Come funziona il codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/09df4bc5a35df89575c7b51349be4340.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Conclusione intermedia<\/h2>\n<p>\nQuesti tipi di fotogrammi vengono utilizzati per garantire la migliore compressione. Esamineremo come avviene questo nel prossimo paragrafo. Per ora, notiamo che il fotogramma pi\u00f9 'costoso' in termini di spazio \u00e8 l'I-frame, il P-frame costa notevolmente meno, mentre il B-frame risulta essere l'opzione pi\u00f9 vantaggiosa per i video.<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona il codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/97b9177ffff302881deb1c86ce416166.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Ridondanza temporale (previsione interfotogrammi)<\/h2>\n<p>\nEsploriamo quali sono le nostre opzioni per ridurre le ripetizioni temporali. Questo tipo di ridondanza sar\u00e0 affrontato con metodi di previsione reciproca.<\/p>\n<p>Cerchiamo di spendere il minor numero possibile di bit per codificare una sequenza di fotogrammi 0 e 1.<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona il codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/f0dc2df33a5297622a77a4ca09b19af8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPossiamo effettuare <b>una sottrazione<\/b>, semplicemente sottraendo il fotogramma 1 dal fotogramma 0. Otteniamo il fotogramma 1 utilizzando solo la differenza tra esso e il fotogramma precedente, codificando effettivamente solo il residuo risultante.<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona il codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/c14981c3a3a0459a02620805c4a0f2db.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMa cosa direste se vi dicessi che esiste un metodo ancora migliore che utilizza ancora meno bit?! Iniziamo a suddividere il fotogramma 0 in una griglia chiara formata da blocchi. E poi cerchiamo di abbinare i blocchi del fotogramma 0 con il fotogramma 1. In altre parole, valutiamo il movimento tra i fotogrammi.<\/p>\n<blockquote><p> Da Wikipedia \u2014 <b>compensazione di movimento a blocchi<\/b><\/p>\n<p>La compensazione di movimento a blocchi suddivide il fotogramma corrente in blocchi non sovrapposti e il vettore di compensazione di movimento indica l'origine dei blocchi (un errore comune \u00e8 pensare che <i>il fotogramma precedente<\/i> sia suddiviso in blocchi non sovrapposti, mentre i vettori di compensazione di movimento indicano dove si muovono questi blocchi. In realt\u00e0, \u00e8 l'opposto: non si analizza il fotogramma precedente, ma quello successivo; non si determina dove si muovono i blocchi, ma da dove sono apparsi). Di solito, i blocchi di origine si sovrappongono nel fotogramma originale. Alcuni algoritmi di compressione video ricompongono il fotogramma corrente a partire da parti di pi\u00f9 fotogrammi precedentemente trasmessi.<\/p><\/blockquote>\n<p><img decoding=\"async\" alt=\"Come funziona il codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/0c34e84b318be2d250bade240fad80ed.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDurante la valutazione, vediamo che la palla si \u00e8 spostata da (<b>x<\/b>=0, <b>y<\/b>=25) a (<b>x<\/b>=6, <b>y<\/b>=26), i valori <b>x<\/b> e <b>y<\/b> definiscono il vettore di movimento. Un ulteriore passo che possiamo compiere per risparmiare bit \u00e8 codificare solo la differenza tra il vettore di movimento della posizione finale del blocco e quella prevista, quindi il vettore di movimento finale sar\u00e0 (x=6-0=6, y=26-25=1).<\/p>\n<p>Nella realt\u00e0, questo pallina sarebbe suddivisa in <b>n<\/b> blocchi, ma questo non cambia il concetto.<\/p>\n<p>Gli oggetti nel fotogramma si muovono in tre dimensioni, quindi quando la palla si muove, essa pu\u00f2 apparire visivamente pi\u00f9 piccola (o pi\u00f9 grande, se si muove verso lo spettatore). \u00c8 normale che non ci sia corrispondenza perfetta tra i blocchi. Ecco una vista sovrapposta della nostra valutazione rispetto alla realt\u00e0.<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona il codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/0fb4737e1076221e786fd6a78357422d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVediamo per\u00f2 che quando applichiamo la valutazione del movimento, i dati da codificare sono notevolmente inferiori rispetto all'utilizzo di un metodo pi\u00f9 semplice per calcolare la delta tra i fotogrammi.<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona il codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/319507ad7197b7693efff11dcd7e4df4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Come apparirebbe la vera compensazione di movimento<\/h2>\n<p>\nQuesta metodologia si applica a tutti i blocchi contemporaneamente. Spesso la nostra palla in movimento sar\u00e0 suddivisa in pi\u00f9 blocchi.<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona il codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/978b5612dbd164d2865ccdec4474fdb4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPuoi stesso verificare queste concetti utilizzando <noindex><a rel=\"nofollow\" href=\"https:\/\/jupyter.org\/\">Jupyter<\/a><\/noindex>.<\/p>\n<p>Per visualizzare i vettori di movimento, puoi creare un video con previsione esterna utilizzando <noindex><a rel=\"nofollow\" href=\"https:\/\/www.ffmpeg.org\/\">ffmpeg<\/a><\/noindex>.<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona il codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/056d6dfd2c18baaabc70655edfe3d609.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPuoi anche utilizzare <noindex><a rel=\"nofollow\" href=\"https:\/\/software.intel.com\/en-us\/video-pro-analyzer\">Intel Video Pro Analyzer<\/a><\/noindex> (\u00e8 a pagamento, ma c'\u00e8 una versione di prova gratuita che \u00e8 limitata ai primi dieci fotogrammi).<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona il codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/5e28ccc6e6101b8d613f94d326a685f2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Ridondanza spaziale (previsione interna)<\/h2>\n<p>\nAnalizzando ogni fotogramma in un video, scopriamo molte aree interconnesse.<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona il codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/24bff6d64704cf0c8e1010832ea8f6ea.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nFacciamo un esempio. Questa scena consiste principalmente di colori blu e bianco.<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona il codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/12edf221c61e064674ad363db9f3342c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nQuesto \u00e8 un I-frame. Non possiamo utilizzare i fotogrammi precedenti per la previsione, ma possiamo comprimerlo. Codifichiamo l'area del blocco rosso. Se osserviamo i suoi vicini, notiamo che ci sono alcune tendenze cromatiche attorno ad esso.<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona il codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/b67b3fba3d1792db81d0f1cb52c7c29b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSupponiamo che i colori nel fotogramma si diffondano verticalmente. Questo significa che i colori dei picchetti sconosciuti conterranno i valori dei vicini.<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona il codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/6fe8f6ed7ebc66940fca27b8cd2c5915.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTale previsione potrebbe anche essere errata. Proprio per questo motivo \u00e8 necessario applicare questo metodo (previsione interna) e poi sottrarre i valori reali. Questo ci dar\u00e0 un blocco residuo, il che porter\u00e0 a una matrice molto pi\u00f9 compressa rispetto all'originale.<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona il codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/52fd77c96aa8445af12fca468c72c844.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSe vuoi praticare con le previsioni interne, puoi creare un video con macroblocchi e le loro previsioni usando ffmpeg. Per capire il significato di ciascun colore del blocco, dovrai consultare la documentazione di ffmpeg.<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona il codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/0399473c538a550f9317fd59c347a565.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIn alternativa, puoi utilizzare Intel Video Pro Analyzer (come menzionato sopra, la versione di prova gratuita \u00e8 limitata ai primi 10 fotogrammi, ma questo dovrebbe essere sufficiente per le prime volte).<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona il codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/abcdf1eb4b7dbdcf2a7a64154f3052ba.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Secondo capitolo:<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/edison\/blog\/480430\/\"> Principi di funzionamento del codec video<\/a><\/noindex><\/h3>\n<p>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/edison\/blog\/481418\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0442\u043e\u0440\u0430\u044f \u0447\u0430\u0441\u0442\u044c: \u041f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u0438\u0434\u0435\u043e\u043a\u043e\u0434\u0435\u043a\u0430 \u041b\u044e\u0431\u043e\u0435 \u0440\u0430\u0441\u0442\u0440\u043e\u0432\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432 \u0432\u0438\u0434\u0435 \u0434\u0432\u0443\u043c\u0435\u0440\u043d\u043e\u0439 \u043c\u0430\u0442\u0440\u0438\u0446\u044b. \u041a\u043e\u0433\u0434\u0430 \u0440\u0435\u0447\u044c \u0437\u0430\u0445\u043e\u0434\u0438\u0442 \u043e \u0446\u0432\u0435\u0442\u0430\u0445, \u0438\u0434\u0435\u044e \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u0432\u0438\u0442\u044c, \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432 \u0432\u0438\u0434\u0435 \u0442\u0440\u0435\u0445\u043c\u0435\u0440\u043d\u043e\u0439 \u043c\u0430\u0442\u0440\u0438\u0446\u044b, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0438\u0437 \u0446\u0432\u0435\u0442\u043e\u0432. \u0415\u0441\u043b\u0438 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0438\u0442\u043e\u0433\u043e\u0432\u044b\u0439 \u0446\u0432\u0435\u0442 \u043a\u0430\u043a \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044e \u0442.\u043d. \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0446\u0432\u0435\u0442\u043e\u0432 (\u043a\u0440\u0430\u0441\u043d\u043e\u0433\u043e, \u0437\u0435\u043b\u0435\u043d\u043e\u0433\u043e \u0438 \u0441\u0438\u043d\u0435\u0433\u043e), \u0432 \u043d\u0430\u0448\u0435\u0439 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-54312","post","type-post","status-publish","format-standard","hentry","category-novosti-interneta"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0442\u043e\u0440\u0430\u044f \u0447\u0430\u0441\u0442\u044c: \u041f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u0438\u0434\u0435\u043e\u043a\u043e\u0434\u0435\u043a\u0430 \u041b\u044e\u0431\u043e\u0435 \u0440\u0430\u0441\u0442\u0440\u043e\u0432\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432 \u0432\u0438\u0434\u0435.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/it\/blog\/novosti-interneta\/kak-rabotaet-videokodek-chast-1-osnovy\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432\u0438\u0434\u0435\u043e\u043a\u043e\u0434\u0435\u043a. \u0427\u0430\u0441\u0442\u044c 1. \u041e\u0441\u043d\u043e\u0432\u044b | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0442\u043e\u0440\u0430\u044f \u0447\u0430\u0441\u0442\u044c: \u041f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u0438\u0434\u0435\u043e\u043a\u043e\u0434\u0435\u043a\u0430 \u041b\u044e\u0431\u043e\u0435 \u0440\u0430\u0441\u0442\u0440\u043e\u0432\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432 \u0432\u0438\u0434\u0435.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/novosti-interneta\/kak-rabotaet-videokodek-chast-1-osnovy\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-12-22T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:02:18+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Come funziona il codec video. Parte 1. Fondamenti | ProHoster","description":"Seconda parte: Principi di funzionamento del codec video Qualsiasi immagine raster pu\u00f2 essere rappresentata come.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/novosti-interneta\/kak-rabotaet-videokodek-chast-1-osnovy","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432\u0438\u0434\u0435\u043e\u043a\u043e\u0434\u0435\u043a. \u0427\u0430\u0441\u0442\u044c 1. \u041e\u0441\u043d\u043e\u0432\u044b | ProHoster","og:description":"\u0412\u0442\u043e\u0440\u0430\u044f \u0447\u0430\u0441\u0442\u044c: \u041f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u0438\u0434\u0435\u043e\u043a\u043e\u0434\u0435\u043a\u0430 \u041b\u044e\u0431\u043e\u0435 \u0440\u0430\u0441\u0442\u0440\u043e\u0432\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432 \u0432\u0438\u0434\u0435.","og:url":"https:\/\/prohoster.info\/it\/blog\/novosti-interneta\/kak-rabotaet-videokodek-chast-1-osnovy","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-12-22T21:00:00+00:00","article:modified_time":"2020-02-18T11:02:18+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"54312","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-24 10:53:20","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 15:31:31","updated":"2026-01-24 10:53:20","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/54312","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=54312"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/54312\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=54312"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=54312"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=54312"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}