{"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\/news\/kak-rabotaet-videokodek-chast-1-osnovy","title":{"rendered":"Come funziona un codec video. Parte 1. Fondamenti","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h3>Seconda parte:<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 raster <b>immagine<\/b> pu\u00f2 essere rappresentata sotto forma di <b>matrice bidimensionale<\/b>. Quando si parla di colori, l'idea pu\u00f2 essere sviluppata considerando l'immagine come una <b>matrice tridimensionale<\/b>, in cui le dimensioni aggiuntive vengono utilizzate per memorizzare i dati per ciascuno dei colori.<\/p>\n<p>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.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/edison\/blog\/481418\/\"><img decoding=\"async\" alt=\"Come funziona un codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/ce37dd683a4c3ed434dae1d488646716.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\nOgni punto in questa matrice sar\u00e0 chiamato pixel (elemento dell'immagine). Ogni pixel contiene informazioni sull'intensit\u00e0 (di solito sotto forma di valore numerico) di ciascun colore. Ad esempio, <b>un pixel rosso<\/b> significa che contiene 0 verde, 0 blu e il massimo di rosso. <b>Un pixel di colore rosa<\/b> pu\u00f2 essere formato da una combinazione dei tre colori. Utilizzando un intervallo numerico da 0 a 255, un pixel rosa \u00e8 definito come <b>Rosso = 255<\/b>, <b>Verde = 192<\/b> e <b>Blu = 203<\/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 un 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 \/>\nL'articolo \u00e8 stato pubblicato con il supporto della compagnia EDISON.<\/p>\n<p>Sviluppiamo <noindex><a rel=\"nofollow\" href=\"https:\/\/www.edsd.ru\/ru\/portfolio\/tehnologiya\/video\">applicazioni per videosorveglianza, video in streaming<\/a><\/noindex>, e ci occupiamo anche di <noindex><a rel=\"nofollow\" href=\"https:\/\/www.edsd.ru\/videozapis-v-bolnichnoj-operacionnoj-s-vozmozhnostyu-obsuzhdeniya-na-forume\">video registrazione in sala operatoria<\/a><\/noindex>.<\/p><\/blockquote>\n<h3>Metodi alternativi di codifica delle immagini a colori<\/h3>\n<p>\nPer rappresentare i colori di cui \u00e8 composta l'immagine, esistono molte altre modelli. Ad esempio, \u00e8 possibile utilizzare una palette indicizzata, in cui \u00e8 necessario solo un byte per rappresentare ogni pixel, invece dei tre necessari utilizzando il modello RGB. In tale modello, \u00e8 possibile utilizzare una matrice 2D invece di una matrice 3D per rappresentare ciascun colore. Questo risparmia memoria, ma offre una gamma di colori inferiore.<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona un codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/573a39c53527b4ec0403f019becf2d22.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>RGB<\/h2>\n<p>Ad esempio, guarda questa immagine qui sotto. Il primo volto \u00e8 completamente colorato. Gli altri sono i piani rosso, verde e blu (l'intensit\u00e0 dei colori corrispondenti \u00e8 mostrata in scala di grigi).<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona un codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/cf1f802d4381e062005490f5f9f26911.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSi vede che le tonalit\u00e0 di rosso nell'originale saranno negli stessi punti in cui si osservano le parti pi\u00f9 luminose del secondo volto. Mentre il contributo del colore blu pu\u00f2 essere visto principalmente solo negli occhi di Mario (l'ultimo volto) e negli elementi dei suoi vestiti. Nota dove tutti e tre i piani di colore contribuiscono meno (le parti pi\u00f9 scure delle immagini) \u2014 ci\u00f2 avviene nei baffi di Mario.<\/p>\n<p>Per memorizzare l'intensit\u00e0 di ogni colore \u00e8 necessario un certo numero di bit: questa quantit\u00e0 \u00e8 chiamata <b>profondit\u00e0 di bit<\/b>. Supponiamo di usare 8 bit (con valori da 0 a 255) per un piano colore. Avremo quindi una profondit\u00e0 di colore di 24 bit (8 bit * 3 piani R\/G\/B).<\/p>\n<p>Un'altra propriet\u00e0 dell'immagine \u00e8 <b>la risoluzione<\/b>, che rappresenta il numero di pixel in una dimensione. Spesso viene indicata come <b>larghezza \u00d7 altezza<\/b>, come nel seguente esempio di immagine 4 su 4.<br \/>\n<img decoding=\"async\" alt=\"Come funziona un codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/51a4d948e6d44e4058e346fdbaf9d6c2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUn'altra propriet\u00e0 con cui abbiamo a che fare quando lavoriamo con immagini\/video \u00e8 <b>il rapporto d'aspetto<\/b>, che descrive la consueta relazione proporzionale tra la larghezza e l'altezza dell'immagine o del pixel.<\/p>\n<p>Quando si dice che un certo film o immagine ha una dimensione di 16 su 9, di solito ci si riferisce al <b>rapporto d'aspetto del display<\/b> (<b>DAR<\/b> \u2014 da <i>Display Aspect Ratio<\/i>). Tuttavia, talvolta possono esistere forme diverse dei singoli pixel: in questo caso si parla di <b>rapporto dei pixel<\/b> (<b>PAR<\/b> \u2014 da <i>Pixel Aspect Ratio<\/i>).<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona un 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 un codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/a610f0f77bdb245c05799d3de4147302.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<blockquote><p>Nota per la padrona di casa: <b>DVD<\/b> corrisponde a <b>DAR 4 su 3<\/b><\/p>\n<p>Sebbene la risoluzione reale di un DVD sia 704\u00d7480, mantiene per\u00f2 un rapporto d'aspetto di 4:3, poich\u00e9 il PAR \u00e8 pari a 10:11 (704\u00d710 \/ 480\u00d711).<\/p><\/blockquote>\n<p>\nE infine, possiamo definire <b>video<\/b> come una sequenza di <b>n<\/b> fotogrammi per periodo <b>di tempo<\/b>, che pu\u00f2 essere considerato una dimensione aggiuntiva. E <b>n<\/b> allora - questa \u00e8 la frequenza dei fotogrammi o il numero di fotogrammi al secondo (<b>FPS<\/b> \u2014 da <i>Frames per Second<\/i>).<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona un codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/f940932bbd66aa361c7966f8b44ed431.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIl numero di bit al secondo necessari per visualizzare un video \u00e8 <b>la sua<\/b> \u2014 <b>velocit\u00e0 di trasmissione<\/b>.<\/p>\n<blockquote><p>bitrate = larghezza * altezza * profondit\u00e0 di bit * fotogrammi al secondo<\/p><\/blockquote>\n<p>\nAd esempio, per un video a 30 fotogrammi al secondo, con 24 bit per pixel, una risoluzione di 480\u00d7240 richiederebbe 82.944.000 bit al secondo o 82,944 Mbit\/s (30x480x240x24) \u2014 ma questo senza utilizzare alcuno dei metodi di compressione.<\/p>\n<p>Se la velocit\u00e0 di trasmissione <i>\u00e8 quasi costante<\/i>, viene chiamata <b>velocit\u00e0 di trasmissione costante<\/b> (<b>CBR<\/b> \u2014 da <i>constant bit rate<\/i>). Tuttavia, pu\u00f2 anche variare, in questo caso viene chiamata <b>velocit\u00e0 di trasmissione variabile<\/b> (<b>VBR<\/b> \u2014 da <i>variable bit rate<\/i>).<\/p>\n<p>Questo grafico dimostra un VBR limitato, quando non vengono sprecati troppi bit in caso di un fotogramma completamente scuro.<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona un 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 video senza utilizzare banda aggiuntiva. Questo metodo \u00e8 conosciuto come <b>video interlacciato<\/b>; principalmente, invia met\u00e0 dello schermo nel primo \"fotogramma\", mentre l'altra met\u00e0 nel successivo \"fotogramma\".<\/p>\n<p>Attualmente, la visualizzazione delle scene avviene principalmente utilizzando <b>la tecnologia di scansione progressiva<\/b>. Questo \u00e8 un modo di visualizzare, memorizzare o trasmettere immagini in movimento, in cui tutte le linee di ciascun fotogramma vengono tracciate in sequenza.<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona un 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 viene rappresentata digitalmente, come sono strutturati i suoi colori, quanti bit al secondo utilizziamo per mostrare il video, se la velocit\u00e0 di trasmissione \u00e8 costante (CBR) o variabile (VBR). Siamo a conoscenza della risoluzione impostata utilizzando una frequenza fotogrammi predeterminata e ci siamo familiarizzati con molti altri termini, come video interlacciato, PAR e altri.<\/p>\n<h2>Eliminazione della ridondanza<\/h2>\n<p>\n\u00c8 noto che \u00e8 impossibile utilizzare video non compressi normalmente. Un'ora di video a risoluzione 720p e 30 fotogrammi al secondo occuperebbe 278 GB. Raggiungiamo questo valore moltiplicando 1280 x 720 x 24 x 30 x 3600 (larghezza, altezza, bit per pixel, FPS e tempo in secondi).<\/p>\n<p>Utilizzo <b>algoritmi di compressione senza perdita<\/b>, come DEFLATE (utilizzato in PKZIP, Gzip e PNG), non dar\u00e0 una riduzione sufficiente della larghezza di banda necessaria. Dobbiamo cercare altri modi per comprimere il video.<\/p>\n<p>Per farlo, possiamo utilizzare le caratteristiche della nostra visione. Siamo pi\u00f9 sensibili alla luminosit\u00e0 che ai colori. Il video \u00e8 un insieme di immagini sequenziali che si ripetono nel tempo. Tra i fotogrammi adiacenti di una scena, le differenze sono minime. Inoltre, ciascun fotogramma contiene molte aree che utilizzano lo stesso (o un colore simile).<\/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 guardando questa immagine.<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona un codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/bf50b7dfd54ebbdb66556bbf5e304090.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Se non noti che nella met\u00e0 sinistra dell'immagine i colori dei quadrati <b>A<\/b> e <b>B<\/b> sono effettivamente identici, va bene. Il nostro cervello ci porta a prestare maggiore attenzione alla luce e all'ombra, piuttosto che al colore. A destra, tra i quadrati segnalati, c'\u00e8 un collegamento dello stesso colore \u2014 quindi noi (cio\u00e8 il nostro cervello) rileviamo facilmente che, in effetti, \u00e8 lo stesso colore.<\/p>\n<blockquote><p>Analizziamo (in modo semplificato) come funzionano i nostri occhi. L'occhio \u00e8 un organo complesso, composto 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>Consideriamo la percezione del colore e della luminosit\u00e0 come funzioni separate di determinate parti dell'occhio (in realt\u00e0, la situazione \u00e8 un po' pi\u00f9 complessa, ma semplifichiamo). Le cellule dei bastoncelli rispondono principalmente alla luminosit\u00e0, mentre le cellule dei coni rispondono al colore. I coni sono suddivisi in tre tipi, a seconda del pigmento presente: coni S (colore blu), coni M (colore verde) e coni L (colore rosso).<\/p>\n<p>Poich\u00e9 abbiamo molti pi\u00f9 bastoncelli (luminosit\u00e0) che coni (colore), si pu\u00f2 dedurre che siamo pi\u00f9 capaci di distinguere i passaggi tra oscurit\u00e0 e luce piuttosto che i colori.<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona un 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 molti altri campi hanno sviluppato numerose teorie sulla visione umana. E una di esse si chiama <b>funzioni di sensibilit\u00e0 al contrasto<\/b>. Queste sono collegate all'illuminazione spaziale e temporale. In breve, si tratta di quanti cambiamenti sono necessari prima che l'osservatore li noti. Nota il plurale della parola \u201cfunzione\u201d. 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 immagini a colori. I risultati di questi esperimenti mostrano che, nella maggior parte dei casi, i nostri occhi sono pi\u00f9 sensibili alla luminosit\u00e0 rispetto al colore.<\/p><\/blockquote>\n<p>Dato che \u00e8 noto che siamo pi\u00f9 sensibili alla luminosit\u00e0 dell'immagine, si pu\u00f2 cercare di sfruttare questo fatto.<\/p>\n<h2>Modello di colore<\/h2>\n<p>\nAbbiamo imparato un po' su come gestire le immagini a colori usando lo schema RGB. Esistono anche altri modelli. Ce n'\u00e8 uno che separa la luminosit\u00e0 dalla cromaticit\u00e0 ed \u00e8 conosciuto come <b>YCbCr<\/b>. A proposito, ci sono anche altri modelli che fanno una divisione simile, ma noi considereremo solo questo.<\/p>\n<p>In questo modello di colore <b>Y<\/b> \u2014 \u00e8 la rappresentazione della luminosit\u00e0, e sono utilizzati due canali di colore: <b>Cb<\/b> (blu intenso) e <b>Cr<\/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, come vediamo di seguito:<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona un codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/e7458471caf7ef071bb0362e96b44f11.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Conversione tra YCbCr e RGB<\/h2>\n<p>\nQualcuno potrebbe obiettare: come \u00e8 possibile ottenere tutti i colori, se non viene utilizzato il verde?<\/p>\n<p>Per rispondere a questa domanda, convertiamo RGB in YCbCr. Utilizzeremo i coefficienti stabiliti negli standard <b>BT.601<\/b>, raccomandato dal dipartimento <b>ITU-R<\/b>. Questo dipartimento definisce gli standard per il video digitale. Ad esempio: cosa significa 4K? Quali dovrebbero essere la frequenza dei fotogrammi, la risoluzione, il modello di colore?<\/p>\n<p>Iniziamo a calcolare la luminosit\u00e0. Utilizziamo le costanti proposte dall'ITU e sostituiamo 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 blu e il rosso:<\/p>\n<p><b>Cb<\/b> = 0.564(<b>B<\/b> \u2014 <b>Y<\/b>)<\/p>\n<p><b>Cr<\/b> = 0.713(<b>R<\/b> \u2014 <b>Y<\/b>) <\/p>\n<p>E possiamo anche convertire indietro e persino ottenere il verde utilizzando YCbCr:<\/p>\n<p><b>R<\/b> = <b>Y<\/b> + 1.402<b>Cr<\/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>Cr<\/b><\/p>\n<p>In generale, i display (monitor, TV, schermi, ecc.) utilizzano solo il modello RGB. Ma questo modello pu\u00f2 essere organizzato in modi diversi:<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona un 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 del sistema visivo umano alla luminosit\u00e0 rispetto alla crominanza, se rimuoviamo selettivamente le informazioni. Il sottocampionamento del colore \u00e8 un metodo di codifica delle immagini, utilizzando una risoluzione inferiore per la crominanza rispetto alla luminosit\u00e0.<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona un codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/11b5b602ab1374896df296f787932ace.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Quanto \u00e8 accettabile ridurre la risoluzione della crominanza?! Si scopre che ci sono gi\u00e0 alcuni 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 sottocampionamento<\/b> e vengono espressi in forma di rapporto 3:1 \u2014 <b>a<\/b>:<b>x<\/b>:<b>y<\/b>, che definisce il numero di campioni di segnali di luminosit\u00e0 e differenza di colore.<\/p>\n<p><b>a<\/b> \u2014 campionamento orizzontale di riferimento (di solito uguale 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 di 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 4 su 4.<\/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 sottocampionamento)<\/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>\nQuesto \u00e8 un frammento dell'immagine unito utilizzando YCbCr 4:2:0. Si noti che utilizziamo solo 12 bit per pixel.<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona un 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 con i principali tipi di sottocampionamento dei colori. La prima riga \u00e8 YCbCr finale, la riga inferiore mostra la risoluzione della crominanza. Risultati piuttosto degni, considerando le piccole perdite di qualit\u00e0.<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona un codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/fb54b6fcdbbb63cb19d19b89df9f6d85.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nRicordate che abbiamo considerato 278 GB di spazio su disco per memorizzare un file video di un'ora a risoluzione 720p e 30 fotogrammi al secondo? Se utilizziamo YCbCr 4:2:0, questa dimensione si ridurr\u00e0 della met\u00e0: 139 GB. Finora siamo ancora lontani da un risultato accettabile.<\/p>\n<p>Potete ottenere un istogramma YCbCr usando FFmpeg. In questa immagine, il blu prevale sul rosso, come \u00e8 chiaramente visibile nell'istogramma.<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona un 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, luminanza, gamma di colori - video panoramica<\/h4>\n<p>\nSi consiglia di guardare questo fantastico video. Qui viene spiegato cos'\u00e8 la luminanza e sono chiariti tutti i punti sulla <i>\u00e8<\/i> luminanza e 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=\"Guarda il 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>\nAndiamo avanti. Proviamo a eliminare la ridondanza temporale. Ma prima, definiamo una certa terminologia di base. Supponiamo di avere un film con 30 fotogrammi al secondo, eccoli i suoi primi 4 fotogrammi:<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona un 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 un 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 un 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 un 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: per esempio, uno sfondo blu che non cambia da un fotogramma all'altro. Per risolvere questo problema, possiamo classificarli astrattamente in tre tipi di fotogrammi.<\/p>\n<h3>I-frame (<b>I<\/b>ntro Frame)<\/h3>\n<p>\nL'I-frame (fotogramma chiave, fotogramma di riferimento, fotogramma interno) \u00e8 autonomo. Indipendentemente da ci\u00f2 che deve essere visualizzato, l'I-frame \u00e8 essenzialmente una fotografia statica. Il primo fotogramma \u00e8 solitamente un I-frame, ma ci aspettiamo di osservare I-frame anche tra fotogrammi non necessariamente all'inizio.<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona un 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>redicted 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'unica modifica \u00e8 la palla che si muove in avanti. Possiamo ottenere il fotogramma 2 semplicemente modificando un po' il fotogramma 1, utilizzando solo la differenza tra questi fotogrammi. Per costruire il fotogramma 2 ci riferiamo al fotogramma precedente, il fotogramma 1.<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona un 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 un 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>i-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, in sostanza, il B-frame (fotogramma bidirezionale).<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona un 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 un 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 un codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/09df4bc5a35df89575c7b51349be4340.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Output intermedio<\/h2>\n<p>\nQuesti tipi di fotogrammi sono utilizzati per garantire la migliore compressione. Esamineremo come avviene, nella prossima sezione. Ma per ora, notiamo che il fotogramma I \u00e8 il pi\u00f9 \"costoso\" in termini di memoria utilizzata, il fotogramma P \u00e8 notevolmente pi\u00f9 economico, mentre il B-frame \u00e8 l'opzione pi\u00f9 vantaggiosa per il video.<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona un 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 inter-frame)<\/h2>\n<p>\nConsideriamo quali possibilit\u00e0 abbiamo per minimizzare le ripetizioni nel tempo. Questo tipo di ridondanza lo risolviamo mediante metodi di previsione reciproca.<\/p>\n<p>Cerchiamo di spendere il minor numero possibile di bit per codificare la sequenza di fotogrammi 0 e 1.<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona un 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 di esso e il fotogramma precedente, codificando effettivamente solo il resto risultante.<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona un codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/c14981c3a3a0459a02620805c4a0f2db.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMa cosa succede se ti dico che c'\u00e8 un metodo ancora migliore, che utilizza ancora meno bit?! Innanzitutto, dividiamo il fotogramma 0 in una griglia chiara composta 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 del movimento a blocchi<\/b><\/p>\n<p>La compensazione del movimento a blocchi divide il fotogramma corrente in blocchi non sovrapposti e i vettori di compensazione del movimento indicano l'origine dei blocchi (un comune equivoco \u00e8 che <i>il fotogramma precedente<\/i> sia suddiviso in blocchi non sovrapposti e i vettori di compensazione del movimento indichino dove si spostano questi blocchi. In realt\u00e0 \u00e8 il contrario: si analizza non il fotogramma precedente, ma quello successivo, si scopre non dove si spostano i blocchi, ma da dove sono arrivati). Di solito, i blocchi originali si sovrappongono nel fotogramma originale. Alcuni algoritmi di compressione video ricompongono il fotogramma corrente da parti di pi\u00f9 fotogrammi precedentemente trasmessi.<\/p><\/blockquote>\n<p><img decoding=\"async\" alt=\"Come funziona un codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/0c34e84b318be2d250bade240fad80ed.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNel processo di valutazione, vediamo che la sfera si \u00e8 spostata da (<b>x<\/b>=0, <b>y<\/b>=25) a (<b>x<\/b>=6, <b>y<\/b>=26), valori <b>x<\/b> e <b>y<\/b> definiscono la direzione del movimento. Un altro passo che possiamo compiere per conservare i bit \u00e8 codificare solo la differenza dei vettori di movimento tra l'ultima posizione del blocco e quella prevista, quindi il vettore finale di movimento sar\u00e0 (x=6-0=6, y=26-25=1).<\/p>\n<p>In una situazione reale, questa sfera sarebbe suddivisa in <b>n<\/b> blocchi, ma non cambia il senso della questione.<\/p>\n<p>Gli oggetti nell'inquadratura si muovono in tre dimensioni, quindi mentre la sfera si muove pu\u00f2 apparire visivamente pi\u00f9 piccola (o pi\u00f9 grande se si avvicina allo spettatore). \u00c8 normale che non ci sia corrispondenza perfetta tra i blocchi. Ecco una vista combinata della nostra stima e dell'immagine reale.<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona un codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/0fb4737e1076221e786fd6a78357422d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMa vediamo che quando applichiamo la stima del movimento, i dati per la codifica sono notevolmente inferiori rispetto all'uso di un metodo pi\u00f9 semplice per calcolare la delta tra i fotogrammi.<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona un 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 apparir\u00e0 la compensazione del movimento<\/h2>\n<p>\nQuesta metodologia viene applicata a tutti i blocchi. Spesso la nostra sfera in movimento sar\u00e0 subito suddivisa in pi\u00f9 blocchi.<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona un codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/978b5612dbd164d2865ccdec4474fdb4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPuoi toccare tu stesso questi concetti utilizzando <noindex><a rel=\"nofollow\" href=\"https:\/\/jupyter.org\/\">Jupyter<\/a><\/noindex>.<\/p>\n<p>Per vedere i vettori di movimento si pu\u00f2 creare un video con una previsione esterna utilizzando <noindex><a rel=\"nofollow\" href=\"https:\/\/www.ffmpeg.org\/\">ffmpeg<\/a><\/noindex>.<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona un 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 limitata solo ai primi dieci fotogrammi).<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona un 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>\nSe analizziamo ogni fotogramma del video, scopriremo molte aree interconnesse.<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona un codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/24bff6d64704cf0c8e1010832ea8f6ea.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEsaminiamo questo esempio. Questa scena \u00e8 principalmente composta da colori blu e bianco.<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona un codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/12edf221c61e064674ad363db9f3342c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nQuesto \u00e8 il fotogramma I. Non possiamo prendere i fotogrammi precedenti per la previsione, ma possiamo comprimerlo. Codificheremo la selezione del blocco rosso. Se guardiamo i suoi vicini, notiamo che ci sono alcune tendenze cromatiche attorno a esso.<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona un codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/b67b3fba3d1792db81d0f1cb52c7c29b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSupponiamo che nel fotogramma i colori si diffondano verticalmente. Questo significa che i colori dei pixel sconosciuti conterranno valori dei loro vicini.<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona un codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/6fe8f6ed7ebc66940fca27b8cd2c5915.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nQuesta previsione potrebbe rivelarsi 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 un codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/52fd77c96aa8445af12fca468c72c844.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSe desideri esercitarti con le previsioni interne, puoi creare un video con i macroblocchi e le loro previsioni utilizzando ffmpeg. Per capire il significato di ogni colore del blocco, dovrai consultare la documentazione di ffmpeg.<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona un 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 ho gi\u00e0 menzionato sopra, la versione di prova gratuita ha un limite sui primi 10 fotogrammi, ma ti baster\u00e0 per iniziare).<\/p>\n<p><img decoding=\"async\" alt=\"Come funziona un codec video. Parte 1. Fondamenti\" src=\"\/wp-content\/uploads\/2019\/12\/abcdf1eb4b7dbdcf2a7a64154f3052ba.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Seconda parte:<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-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.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\/news\/kak-rabotaet-videokodek-chast-1-osnovy\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.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\/news\/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 dei codec video Qualsiasi immagine raster pu\u00f2 essere rappresentata come.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/news\/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\/news\/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}]}}