{"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\/cs\/blog\/news\/kak-rabotaet-videokodek-chast-1-osnovy","title":{"rendered":"Jak funguje video kodek. \u010c\u00e1st 1. Z\u00e1klady","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h3>Druh\u00e1 \u010d\u00e1st:<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/edison\/blog\/480430\/\"> Principy fungov\u00e1n\u00ed video kodeku<\/a><\/noindex><\/h3>\n<p>Jak\u00fdkoli rastrov\u00fd <b>obraz<\/b> m\u016f\u017eeme p\u0159edstavit jako <b>dvourozm\u011brnou matici<\/b>. Kdy\u017e se mluv\u00ed o barv\u00e1ch, my\u0161lenku lze rozvinout, pokud se na obr\u00e1zek pod\u00edv\u00e1me jako na <b>t\u0159\u00edrozm\u011brnou matici<\/b>, ve kter\u00e9 se dal\u0161\u00ed rozm\u011bry pou\u017e\u00edvaj\u00ed k ukl\u00e1d\u00e1n\u00ed dat pro ka\u017edou z barev.<\/p>\n<p>Pokud pova\u017eujeme kone\u010dnou barvu za kombinaci tzv. z\u00e1kladn\u00edch barev (\u010derven\u00e9, zelen\u00e9 a modr\u00e9), ur\u010dujeme v na\u0161\u00ed t\u0159\u00edrozm\u011brn\u00e9 matici t\u0159i roviny: prvn\u00ed pro \u010dervenou barvu, druhou pro zelenou a posledn\u00ed pro modrou.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/edison\/blog\/481418\/\"><img decoding=\"async\" alt=\"Jak funguje video kodek. \u010c\u00e1st 1. Z\u00e1klady\" src=\"\/wp-content\/uploads\/2019\/12\/ce37dd683a4c3ed434dae1d488646716.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\nKa\u017ed\u00fd bod v t\u00e9to matici budeme naz\u00fdvat pixelem (elementem obr\u00e1zku). Ka\u017ed\u00fd pixel obsahuje informace o intenzit\u011b (obvykle ve form\u011b \u010d\u00edseln\u00e9 hodnoty) ka\u017ed\u00e9 barvy. Nap\u0159\u00edklad, <b>\u010derven\u00fd pixel<\/b> znamen\u00e1, \u017ee v n\u011bm je 0 zelen\u00e9, 0 modr\u00e9 a maximum \u010derven\u00e9. <b>Pixel r\u016f\u017eov\u00e9 barvy<\/b> m\u016f\u017ee b\u00fdt vytvo\u0159en pomoc\u00ed kombinace t\u0159ech barev. Pou\u017eit\u00edm \u010d\u00edseln\u00e9ho rozsahu od 0 do 255 je r\u016f\u017eov\u00fd pixel definov\u00e1n jako <b>\u010cerven\u00e1 = 255<\/b>, <b>Zelen\u00e1 = 192<\/b> a <b>Modr\u00e1 = 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 - v\u00fdvoj webov\u00fdch aplikac\u00ed\"><img decoding=\"async\" alt=\"Jak funguje video kodek. \u010c\u00e1st 1. Z\u00e1klady\" src=\"\/wp-content\/uploads\/2019\/12\/e5063b9a32248767cb0702e7aa2e7f9e.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br clear=\"right\"><br \/>\n\u010cl\u00e1nek byl publikov\u00e1n za podpory spole\u010dnosti EDISON.<\/p>\n<p>Vyv\u00edj\u00edme <noindex><a rel=\"nofollow\" href=\"https:\/\/www.edsd.ru\/ru\/portfolio\/tehnologiya\/video\">aplikace pro video sledov\u00e1n\u00ed, streaming video<\/a><\/noindex>, stejn\u011b jako se zab\u00fdv\u00e1me <noindex><a rel=\"nofollow\" href=\"https:\/\/www.edsd.ru\/videozapis-v-bolnichnoj-operacionnoj-s-vozmozhnostyu-obsuzhdeniya-na-forume\">videonahr\u00e1v\u00e1n\u00edm v chirurgick\u00e9 m\u00edstnosti<\/a><\/noindex>.<\/p><\/blockquote>\n<h3>Alternativn\u00ed zp\u016fsoby k\u00f3dov\u00e1n\u00ed barevn\u00e9ho obrazu<\/h3>\n<p>\nPro zobrazen\u00ed barev, z nich\u017e se obraz skl\u00e1d\u00e1, existuje mnoho dal\u0161\u00edch model\u016f. Nap\u0159\u00edklad lze pou\u017e\u00edt indexovanou paletu, kter\u00e1 vy\u017eaduje pouze jeden bajt pro reprezentaci ka\u017ed\u00e9ho pixelu, m\u00edsto t\u0159\u00ed, kter\u00e9 jsou pot\u0159ebn\u00e9 p\u0159i pou\u017eit\u00ed modelu RGB. V takov\u00e9m modelu lze pou\u017e\u00edt 2D matici m\u00edsto 3D matice pro zobrazen\u00ed ka\u017ed\u00e9 barvy. To \u0161et\u0159\u00ed pam\u011b\u0165, ale poskytuje men\u0161\u00ed barevn\u00fd rozsah.<\/p>\n<p><img decoding=\"async\" alt=\"Jak funguje video kodek. \u010c\u00e1st 1. Z\u00e1klady\" src=\"\/wp-content\/uploads\/2019\/12\/573a39c53527b4ec0403f019becf2d22.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>RGB<\/h2>\n<p>Nap\u0159\u00edklad se pod\u00edvejte na tento obr\u00e1zek n\u00ed\u017ee. Prvn\u00ed tv\u00e1\u0159 je zcela vybarvena. Ostatn\u00ed jsou \u010derven\u00e9, zelen\u00e9 a modr\u00e9 roviny (intenzita odpov\u00eddaj\u00edc\u00edch barev je zobrazena na stupnici \u0161ed\u00e9).<\/p>\n<p><img decoding=\"async\" alt=\"Jak funguje video kodek. \u010c\u00e1st 1. Z\u00e1klady\" src=\"\/wp-content\/uploads\/2019\/12\/cf1f802d4381e062005490f5f9f26911.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVid\u00edme, \u017ee odst\u00edny \u010derven\u00e9 v origin\u00e1le budou na stejn\u00fdch m\u00edstech, kde se nach\u00e1zej\u00ed nejjasn\u011bj\u0161\u00ed \u010d\u00e1sti druh\u00e9 osoby. Zat\u00edmco p\u0159\u00ednos modr\u00e9 barvy je v\u011bt\u0161inou vid\u011bt pouze v o\u010d\u00edch Maria (posledn\u00ed osoba) a prvc\u00edch jeho oble\u010den\u00ed. V\u0161imn\u011bte si, kde v\u0161echny t\u0159i barevn\u00e9 plochy p\u0159isp\u00edvaj\u00ed nejm\u00e9n\u011b (nejtmav\u0161\u00ed \u010d\u00e1sti obr\u00e1zk\u016f) \u2014 to jsou kn\u00edry Maria.<\/p>\n<p>Pro uchov\u00e1n\u00ed intenzity ka\u017ed\u00e9 barvy je pot\u0159eba ur\u010dit\u00e9 mno\u017estv\u00ed bit\u016f \u2014 toto mno\u017estv\u00ed se naz\u00fdv\u00e1 <b>bitov\u00e1 hloubka<\/b>. \u0158ekn\u011bme, \u017ee se pou\u017e\u00edv\u00e1 8 bit\u016f (na z\u00e1klad\u011b hodnoty od 0 do 255) na jednu barevnou plochu. Pak m\u00e1me hloubku barvy 24 bit\u016f (8 bit\u016f * 3 plochy R\/G\/B).<\/p>\n<p>Dal\u0161\u00ed vlastnost\u00ed obr\u00e1zku je <b>rozli\u0161en\u00ed<\/b>, kter\u00e9 p\u0159edstavuje mno\u017estv\u00ed pixel\u016f v jednom rozm\u011bru. \u010casto se ozna\u010duje jako <b>\u0161\u00ed\u0159ka \u00d7 v\u00fd\u0161ka<\/b>, jak je n\u00ed\u017ee na obr\u00e1zku s p\u0159\u00edkladem 4 na 4.<br \/>\n<img decoding=\"async\" alt=\"Jak funguje video kodek. \u010c\u00e1st 1. Z\u00e1klady\" src=\"\/wp-content\/uploads\/2019\/12\/51a4d948e6d44e4058e346fdbaf9d6c2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJe\u0161t\u011b jedna vlastnost, se kterou se setk\u00e1v\u00e1me p\u0159i pr\u00e1ci s obr\u00e1zky\/videem \u2014 to je <b>pom\u011br stran<\/b>, popisuj\u00edc\u00ed obvykl\u00fd proporcion\u00e1ln\u00ed vztah mezi \u0161\u00ed\u0159kou a v\u00fd\u0161kou obr\u00e1zku nebo pixelu.<\/p>\n<p>Kdy\u017e se \u0159\u00edk\u00e1, \u017ee n\u011bjak\u00fd film nebo obr\u00e1zek m\u00e1 rozm\u011br 16 na 9, obvykle se t\u00edm mysl\u00ed <b>pom\u011br stran displeje<\/b> (<b>DAR<\/b> \u2014 ze <i>Display Aspect Ratio<\/i>). Ale n\u011bkdy mohou m\u00edt r\u016fzn\u00e9 tvary jednotliv\u00e9 pixely \u2014 v tomto p\u0159\u00edpad\u011b mluv\u00edme o <b>pom\u011bru pixel\u016f<\/b> (<b>PAR<\/b> \u2014 ze <i>Pixel Aspect Ratio<\/i>).<\/p>\n<p><img decoding=\"async\" alt=\"Jak funguje video kodek. \u010c\u00e1st 1. Z\u00e1klady\" src=\"\/wp-content\/uploads\/2019\/12\/1158c6e98247a1a1084440969f9400c6.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"Jak funguje video kodek. \u010c\u00e1st 1. Z\u00e1klady\" src=\"\/wp-content\/uploads\/2019\/12\/a610f0f77bdb245c05799d3de4147302.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<blockquote><p>Dom\u00e1c\u00ed hospody\u0148ce na pam\u011bti: <b>DVD<\/b> odpov\u00edd\u00e1 <b>DAR 4 na 3<\/b><\/p>\n<p>A\u010dkoli skute\u010dn\u00e9 rozli\u0161en\u00ed DVD je 704&nbsp;\u00d7&nbsp;480, zachov\u00e1v\u00e1 pom\u011br stran 4:3, proto\u017ee PAR m\u00e1 hodnotu 10:11 (704&nbsp;\u00d7&nbsp;10 \/ 480&nbsp;\u00d7&nbsp;11).<\/p><\/blockquote>\n<p>\nA nakonec m\u016f\u017eeme definovat <b>video<\/b> jako sekvenci <b>n<\/b> sn\u00edmk\u016f v pr\u016fb\u011bhu <b>\u010dasu<\/b>, kterou lze pova\u017eovat za dal\u0161\u00ed rozm\u011br. A <b>n<\/b> potom \u2014 to je sn\u00edmkov\u00e1 frekvence nebo po\u010det sn\u00edmk\u016f za sekundu (<b>FPS<\/b> \u2014 ze <i>Frames per Second<\/i>).<\/p>\n<p><img decoding=\"async\" alt=\"Jak funguje video kodek. \u010c\u00e1st 1. Z\u00e1klady\" src=\"\/wp-content\/uploads\/2019\/12\/f940932bbd66aa361c7966f8b44ed431.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPo\u010det byt\u016f za sekundu pot\u0159ebn\u00fdch pro zobrazen\u00ed videa je jeho <b>p\u0159enosov\u00e1 rychlost<\/b> \u2014 <b>bitrate<\/b>.<\/p>\n<blockquote><p>bitrate = \u0161\u00ed\u0159ka * v\u00fd\u0161ka * bitov\u00e1 hloubka * sn\u00edmky za sekundu<\/p><\/blockquote>\n<p>\nNap\u0159\u00edklad pro video s 30 sn\u00edmky za sekundu, 24 bity na pixel, bude rozli\u0161en\u00ed 480&nbsp;\u00d7&nbsp;240 vy\u017eadovat 82 944 000 bit\u016f za sekundu nebo 82,944 Mbit\/s (30x480x240x24) \u2014 ale to plat\u00ed, pokud nen\u00ed pou\u017eit \u017e\u00e1dn\u00fd z metod komprese.<\/p>\n<p>Pokud je p\u0159enosov\u00e1 rychlost <i>t\u00e9m\u011b\u0159 konstantn\u00ed<\/i>, pak se naz\u00fdv\u00e1 <b>konstantn\u00ed p\u0159enosov\u00e1 rychlost<\/b> (<b>CBR<\/b> \u2014 ze <i>constant bit rate<\/i>). M\u016f\u017ee se v\u0161ak tak\u00e9 li\u0161it, v takov\u00e9m p\u0159\u00edpad\u011b se naz\u00fdv\u00e1 <b>prom\u011bnn\u00e1 rychlost p\u0159enosu<\/b> (<b>VBR<\/b> \u2014 ze <i>prom\u011bnn\u00e1 bitov\u00e1 rychlost<\/i>).<\/p>\n<p>Graf ukazuje omezen\u00e9 VBR, kdy se netr\u00e1v\u00ed p\u0159\u00edli\u0161 mnoho bit\u016f v p\u0159\u00edpad\u011b zcela tmav\u00e9ho sn\u00edmku.<\/p>\n<p><img decoding=\"async\" alt=\"Jak funguje video kodek. \u010c\u00e1st 1. Z\u00e1klady\" src=\"\/wp-content\/uploads\/2019\/12\/f307dde8da9ef1e017646ebcad0c4062.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIn\u017een\u00fd\u0159i p\u016fvodn\u011b vyvinuli metodu zdvojen\u00ed vn\u00edman\u00e9 sn\u00edmkov\u00e9 frekvence video displeje bez pou\u017eit\u00ed dal\u0161\u00ed \u0161\u00ed\u0159ky p\u00e1sma. Tato metoda je zn\u00e1ma jako <b>prokl\u00e1dan\u00e9 video<\/b>; p\u0159ev\u00e1\u017en\u011b odes\u00edl\u00e1 polovinu obrazovky v prvn\u00ed \"sn\u00edmk\u011b\" a druhou polovinu v dal\u0161\u00edm \"sn\u00edmk\u011b\".<\/p>\n<p>V sou\u010dasnosti vizualizace sc\u00e9n p\u0159ev\u00e1\u017en\u011b prob\u00edh\u00e1 za pou\u017eit\u00ed <b>technologie progresivn\u00edho skenov\u00e1n\u00ed<\/b>. Je to zp\u016fsob zobrazen\u00ed, uchov\u00e1v\u00e1n\u00ed nebo p\u0159enosu pohybliv\u00fdch obr\u00e1zk\u016f, kde se v\u0161echny \u0159\u00e1dky ka\u017ed\u00e9ho sn\u00edmku kresl\u00ed za sebou.<\/p>\n<p><img decoding=\"async\" alt=\"Jak funguje video kodek. \u010c\u00e1st 1. Z\u00e1klady\" src=\"\/wp-content\/uploads\/2019\/12\/434afd828d803ec1e4c87a3827c07dde.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTak\u017ee! Nyn\u00ed v\u00edme, jak je obraz prezentov\u00e1n v digit\u00e1ln\u00ed podob\u011b, jak jsou uspo\u0159\u00e1d\u00e1ny jeho barvy, kolik bit\u016f za sekundu utr\u00e1c\u00edme na zobrazen\u00ed videa, pokud je p\u0159enosov\u00e1 rychlost konstantn\u00ed (CBR) nebo variabiln\u00ed (VBR). V\u00edme o ur\u010den\u00e9m rozli\u0161en\u00ed s pou\u017eit\u00edm ur\u010den\u00e9 sn\u00edmkov\u00e9 frekvence, sezn\u00e1mili jsme se s mnoha dal\u0161\u00edmi term\u00edny, jako je prokl\u00e1dan\u00e9 video, PAR a n\u011bkter\u00e9 dal\u0161\u00ed.<\/p>\n<h2>Odstran\u011bn\u00ed redundancy<\/h2>\n<p>\nJe zn\u00e1mo, \u017ee video bez komprese se obvykle pou\u017e\u00edvat ned\u00e1. Hodinov\u00e9 video o rozli\u0161en\u00ed 720p a sn\u00edmkov\u00e9 frekvenci 30 sn\u00edmk\u016f za sekundu by zab\u00edralo 278 GB. K tomuto \u010d\u00edslu dosp\u011bjeme, pokud vyn\u00e1sob\u00edme 1280 x 720 x 24 x 30 x 3600 (\u0161\u00ed\u0159ka, v\u00fd\u0161ka, bity na pixel, FPS a \u010das v sekund\u00e1ch).<\/p>\n<p>Pou\u017eit\u00ed <b>algoritm\u016f bezztr\u00e1tov\u00e9 komprese<\/b>, jako je DEFLATE (pou\u017e\u00edvan\u00fd v PKZIP, Gzip a PNG), nep\u0159inese dostate\u010dn\u00e9 zmen\u0161en\u00ed pot\u0159ebn\u00e9 \u0161\u00ed\u0159ky p\u00e1sma. Mus\u00edme hledat jin\u00e9 zp\u016fsoby komprese videa.<\/p>\n<p>K tomu lze vyu\u017e\u00edt zvl\u00e1\u0161tnosti na\u0161eho zraku. L\u00e9pe rozli\u0161ujeme jasnost ne\u017e barvy. Video je soubor sekven\u010dn\u00edch obr\u00e1zk\u016f opakuj\u00edc\u00edch se v \u010dase. Mezi sousedn\u00edmi sn\u00edmky jedn\u00e9 sc\u00e9ny jsou rozd\u00edly mal\u00e9. Krom\u011b toho ka\u017ed\u00fd sn\u00edmek obsahuje mnoho oblast\u00ed, kter\u00e9 pou\u017e\u00edvaj\u00ed stejnou (nebo podobnou) barvu.<\/p>\n<h2>Barva, jasnost a na\u0161e o\u010di<\/h2>\n<p>\nNa\u0161e o\u010di jsou citliv\u011bj\u0161\u00ed na jasnost ne\u017e na barvu. M\u016f\u017eete se o tom sami p\u0159esv\u011bd\u010dit, kdy\u017e se pod\u00edv\u00e1te na tento obr\u00e1zek.<\/p>\n<p><img decoding=\"async\" alt=\"Jak funguje video kodek. \u010c\u00e1st 1. Z\u00e1klady\" src=\"\/wp-content\/uploads\/2019\/12\/bf50b7dfd54ebbdb66556bbf5e304090.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Pokud nevid\u00edte, co je na lev\u00e9 polovin\u011b obr\u00e1zku barevn\u00fdch \u010dtverc\u016f <b>A<\/b> a <b>B<\/b> Pokud jsou ve skute\u010dnosti stejn\u00e9, je to norm\u00e1ln\u00ed. N\u00e1\u0161 mozek n\u00e1s nut\u00ed v\u011bnovat v\u00edce pozornosti sv\u011btlu a st\u00ednu ne\u017e barv\u00e1m. Na prav\u00e9 stran\u011b mezi ozna\u010den\u00fdmi \u010dtverci je p\u0159ep\u00e1\u017eka stejn\u00e9 barvy \u2014 proto snadno rozpozn\u00e1v\u00e1me, \u017ee ve skute\u010dnosti maj\u00ed stejnou barvu.<\/p>\n<blockquote><p>Pod\u00edvejme se na to, jak na\u0161e o\u010di funguj\u00ed (zjednodu\u0161en\u011b). Oko je slo\u017eit\u00fd org\u00e1n slo\u017een\u00fd z mnoha \u010d\u00e1st\u00ed. Nejv\u00edce n\u00e1s v\u0161ak zaj\u00edmaj\u00ed \u010d\u00edpky a ty\u010dinky. Oko obsahuje p\u0159ibli\u017en\u011b 120 milion\u016f ty\u010dinek a 6 milion\u016f \u010d\u00edpk\u016f.<\/p>\n<p>Zva\u017eme vn\u00edm\u00e1n\u00ed barev a jasu jako odd\u011blen\u00e9 funkce ur\u010dit\u00fdch \u010d\u00e1st\u00ed oka (ve skute\u010dnosti je to trochu slo\u017eit\u011bj\u0161\u00ed, ale zjednodu\u0161\u00edme to). Ty\u010dinkov\u00e9 bu\u0148ky hlavn\u011b odpov\u00eddaj\u00ed za jas, zat\u00edmco \u010d\u00edpkov\u00e9 bu\u0148ky odpov\u00eddaj\u00ed za barvu. \u010c\u00edpky se d\u011bl\u00ed do t\u0159\u00ed typ\u016f, podle obsa\u017een\u00e9ho pigmentu: S-\u010d\u00edpky (modr\u00e1 barva), M-\u010d\u00edpky (zelen\u00e1 barva) a L-\u010d\u00edpky (\u010derven\u00e1 barva).<\/p>\n<p>Proto\u017ee m\u00e1me mnohem v\u00edce ty\u010dinek (jas) ne\u017e \u010d\u00edpk\u016f (barva), lze usuzovat, \u017ee jsme schopni l\u00e9pe rozli\u0161ovat p\u0159echody mezi tmou a sv\u011btlem ne\u017e barvami.<\/p>\n<p><img decoding=\"async\" alt=\"Jak funguje video kodek. \u010c\u00e1st 1. Z\u00e1klady\" src=\"\/wp-content\/uploads\/2019\/12\/d344365d45e43b36635ce29baa1132b4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Funkce kontrastn\u00ed citlivosti<\/h2>\n<p>\nV\u00fdzkumn\u00edci experiment\u00e1ln\u00ed psychologie a mnoha dal\u0161\u00edch obor\u016f vyvinuli mnoho teori\u00ed lidsk\u00e9ho vid\u011bn\u00ed. A jedna z nich se naz\u00fdv\u00e1 <b>funkcemi kontrastn\u00ed citlivosti<\/b>. Ty souvis\u00ed s prostorov\u00fdm a \u010dasov\u00fdm osv\u011btlen\u00edm. Zjednodu\u0161en\u011b \u0159e\u010deno, jde o to, kolik zm\u011bn je pot\u0159eba, ne\u017e je pozorovatel zaznamen\u00e1. V\u0161imn\u011bte si mno\u017en\u00e9ho \u010d\u00edsla slova \u201efunkce\u201c. To souvis\u00ed s t\u00edm, \u017ee m\u016f\u017eeme m\u011b\u0159it funkce citlivosti na kontrast nejen na \u010dernob\u00edl\u00e9m, ale i barevn\u00e9m obraze. V\u00fdsledky t\u011bchto experiment\u016f ukazuj\u00ed, \u017ee v mnoha p\u0159\u00edpadech jsou na\u0161e o\u010di citliv\u011bj\u0161\u00ed na jas ne\u017e na barvu.<\/p><\/blockquote>\n<p>Jeliko\u017e v\u00edme, \u017ee jsme citliv\u011bj\u0161\u00ed na jas obrazu, m\u016f\u017eeme se pokusit tento fakt vyu\u017e\u00edt.<\/p>\n<h2>Barevn\u00fd model<\/h2>\n<p>\nTrochu jsme se sezn\u00e1mili s t\u00edm, jak pracovat s barevn\u00fdmi obr\u00e1zky pomoc\u00ed RGB sch\u00e9matu. Existuj\u00ed i jin\u00e9 modely. Existuje model, kter\u00fd odd\u011bluje jas od barevnosti a je zn\u00e1m jako <b>YCbCr<\/b>. Mimochodem, existuj\u00ed i dal\u0161\u00ed modely, kter\u00e9 d\u011blaj\u00ed podobn\u00e9 odd\u011blen\u00ed, ale zam\u011b\u0159\u00edme se pouze na tento.<\/p>\n<p>V tomto barevn\u00e9m modelu <b>Y<\/b> \u2014 to je zn\u00e1zorn\u011bn\u00ed jasu, a tak\u00e9 se pou\u017e\u00edvaj\u00ed dva barevn\u00e9 kan\u00e1ly: <b>Cb<\/b> (syt\u011b modr\u00e1) a <b>Cr<\/b> (syt\u011b \u010derven\u00e1). YCbCr m\u016f\u017ee b\u00fdt z\u00edsk\u00e1n z RGB, stejn\u011b jako m\u016f\u017ee b\u00fdt provedena inverzn\u00ed transformace. Pou\u017eit\u00edm tohoto modelu m\u016f\u017eeme vytv\u00e1\u0159et obr\u00e1zky v pln\u00fdch barv\u00e1ch, jak vid\u00edme n\u00ed\u017ee:<\/p>\n<p><img decoding=\"async\" alt=\"Jak funguje video kodek. \u010c\u00e1st 1. Z\u00e1klady\" src=\"\/wp-content\/uploads\/2019\/12\/e7458471caf7ef071bb0362e96b44f11.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Transformace mezi YCbCr a RGB<\/h2>\n<p>\nN\u011bkdo by mohl nam\u00edtnout: jak je mo\u017en\u00e9 z\u00edskat v\u0161echny barvy, pokud se zelen\u00e1 nepou\u017e\u00edv\u00e1?<\/p>\n<p>Abychom odpov\u011bd\u011bli na tuto ot\u00e1zku, p\u0159evedeme RGB na YCbCr. Vyu\u017eijeme koeficienty stanoven\u00e9 ve standardu <b>BT.601<\/b>, kter\u00fd byl doporu\u010den org\u00e1nem <b>ITU-R<\/b>. Tento org\u00e1n stanovuje standardy pro digit\u00e1ln\u00ed video. Nap\u0159\u00edklad: Co je 4K? Jak\u00e9 by m\u011bly b\u00fdt sn\u00edmkov\u00e9 frekvence, rozli\u0161en\u00ed, barevn\u00fd model?<\/p>\n<p>Nejprve vypo\u010d\u00edt\u00e1me jas. Vyu\u017eijeme konstanty navr\u017een\u00e9 ITU a nahrad\u00edme hodnoty 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>Jakmile m\u00e1me jas, odd\u011bl\u00edme modrou a \u010dervenou barvu:<\/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>A tak\u00e9 m\u016f\u017eeme prov\u00e9st inverzi a dokonce z\u00edskat zelenou pomoc\u00ed 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>Obecn\u011b plat\u00ed, \u017ee displeje (monitory, televizory, obrazovky atd.) pou\u017e\u00edvaj\u00ed pouze model RGB. Ale tento model m\u016f\u017ee b\u00fdt organizov\u00e1n r\u016fzn\u00fdmi zp\u016fsoby:<\/p>\n<p><img decoding=\"async\" alt=\"Jak funguje video kodek. \u010c\u00e1st 1. Z\u00e1klady\" src=\"\/wp-content\/uploads\/2019\/12\/8736e59d3a7606494fe6a7718d5b4aa2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Barevn\u00e1 subsamplov\u00e1n\u00ed<\/h2>\n<p>\nS obrazem p\u0159edstavuj\u00edc\u00edm kombinaci jasu a barevnosti, m\u016f\u017eeme vyu\u017e\u00edt v\u011bt\u0161\u00ed citlivost lidsk\u00e9ho zrakov\u00e9ho syst\u00e9mu na jas ne\u017e na barevnost, pokud selectively eliminujeme informace. Barevn\u00e1 subsamplov\u00e1n\u00ed je metoda k\u00f3dov\u00e1n\u00ed obraz\u016f, p\u0159i kter\u00e9 se pou\u017e\u00edv\u00e1 ni\u017e\u0161\u00ed rozli\u0161en\u00ed pro barevnost ne\u017e pro jas.<\/p>\n<p><img decoding=\"async\" alt=\"Jak funguje video kodek. \u010c\u00e1st 1. Z\u00e1klady\" src=\"\/wp-content\/uploads\/2019\/12\/11b5b602ab1374896df296f787932ace.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Jak moc je povoleno sni\u017eovat rozli\u0161en\u00ed barevnosti?! Ukazuje se, \u017ee u\u017e existuj\u00ed ur\u010dit\u00e9 sch\u00e9mata, kter\u00e1 popisuj\u00ed, jak zpracov\u00e1vat rozli\u0161en\u00ed a slou\u010den\u00ed (Kone\u010dn\u00e1 barva = Y + Cb + Cr).<\/p>\n<p>Tato sch\u00e9mata jsou zn\u00e1m\u00e1 jako <b>syst\u00e9my subsamplov\u00e1n\u00ed<\/b> a jsou vyj\u00e1d\u0159ena jako pom\u011br 3:1 \u2014 <b>a<\/b>:<b>x<\/b>:<b>y<\/b>, kter\u00fd ur\u010duje po\u010det vzork\u016f jasov\u00fdch a barevnostn\u00edch sign\u00e1l\u016f.<\/p>\n<p><b>a<\/b> \u2014 standardn\u00ed horizont\u00e1ln\u00ed vzorek (obvykle roven 4)<br \/>\n<b>x<\/b> \u2014 po\u010det vzork\u016f barevnosti v prvn\u00edm \u0159\u00e1dku pixel\u016f (horizont\u00e1ln\u00ed rozli\u0161en\u00ed vzhledem k <b>a<\/b>)<br \/>\n<b>y<\/b> \u2014 po\u010det zm\u011bn vzork\u016f barevnosti mezi prvn\u00edm a druh\u00fdm \u0159\u00e1dkem pixel\u016f.<\/p>\n<blockquote><p>V\u00fdjimku tvo\u0159\u00ed <b>4<\/b>:<b>1<\/b>:<b>0<\/b>, zaji\u0161\u0165uj\u00edc\u00ed jeden vzorek barevnosti v ka\u017ed\u00e9m bloku jasov\u00e9ho rozli\u0161en\u00ed 4 na 4.<\/p><\/blockquote>\n<p>Obecn\u00e9 sch\u00e9ma pou\u017e\u00edvan\u00e1 v modern\u00edch kodec\u00edch:<\/p>\n<ul>\n<li><b>4<\/b>:<b>4<\/b>:<b>4<\/b> (bez subdiskretizace)<\/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 p\u0159\u00edklad slou\u010den\u00ed<\/h3>\n<p>\nToto je slou\u010den\u00fd fragment obr\u00e1zku pou\u017eit\u00edm YCbCr 4:2:0. V\u0161imn\u011bte si, \u017ee vyu\u017e\u00edv\u00e1me pouze 12 bit\u016f na pixel.<\/p>\n<p><img decoding=\"async\" alt=\"Jak funguje video kodek. \u010c\u00e1st 1. Z\u00e1klady\" src=\"\/wp-content\/uploads\/2019\/12\/67e288b0a46fca88452addaef736f4cd.png\" style=\"display:block;margin: 0 auto;\" \/><\/p><\/blockquote>\n<p>Takto vypad\u00e1 stejn\u00fd obr\u00e1zek zak\u00f3dovan\u00fd z\u00e1kladn\u00edmi typy barevn\u00e9 subdiskretizace. Prvn\u00ed \u0159ada je kone\u010dn\u00fd YCbCr, doln\u00ed \u0159ada ukazuje rozli\u0161en\u00ed barevnosti. V\u00fdsledky jsou velmi slu\u0161n\u00e9, vzhledem k mal\u00fdm ztr\u00e1t\u00e1m na kvalit\u011b.<\/p>\n<p><img decoding=\"async\" alt=\"Jak funguje video kodek. \u010c\u00e1st 1. Z\u00e1klady\" src=\"\/wp-content\/uploads\/2019\/12\/fb54b6fcdbbb63cb19d19b89df9f6d85.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPamatujete, \u017ee jsme spo\u010d\u00edtali 278 GB diskov\u00e9ho prostoru pro uchov\u00e1n\u00ed hodinov\u00e9ho video souboru s rozli\u0161en\u00edm 720p a 30 sn\u00edmky za sekundu? Pokud pou\u017eijeme YCbCr 4:2:0, velikost se sn\u00ed\u017e\u00ed na polovinu \u2014 139 GB. P\u0159esto jsme st\u00e1le daleko od p\u0159ijateln\u00e9ho v\u00fdsledku.<\/p>\n<p>M\u016f\u017eete si sami z\u00edskat histogram YCbCr pomoc\u00ed FFmpeg. V tomto obr\u00e1zku p\u0159evl\u00e1d\u00e1 modr\u00e1 nad \u010dervenou, co\u017e je dob\u0159e vid\u011bt na samotn\u00e9m histogramu.<\/p>\n<p><img decoding=\"async\" alt=\"Jak funguje video kodek. \u010c\u00e1st 1. Z\u00e1klady\" src=\"\/wp-content\/uploads\/2019\/12\/6e74cb646cabc77079aea7eaee846fd1.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<blockquote>\n<h4>Barevnost, jas, barevn\u00e1 \u0161k\u00e1la \u2014 video p\u0159ehled<\/h4>\n<p>\nDoporu\u010duje se shl\u00e9dnout tohle \u00fa\u017easn\u00e9 video. Vysv\u011btluje, co je to jas, a celkov\u011b d\u00e1v\u00e1 v\u011bci do po\u0159\u00e1dku. <i>o jasu a barv\u011b.<\/i> Typy sn\u00edmk\u016f<\/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=\"P\u0159ehr\u00e1t 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>Pokra\u010dujeme d\u00e1l. Pokus\u00edme se eliminovat \u010dasovou redundantnost. Ale nejprve definujme n\u011bjakou z\u00e1kladn\u00ed terminologii. P\u0159edpokl\u00e1dejme, \u017ee m\u00e1me film s 30 sn\u00edmky za sekundu, tady jsou jeho prvn\u00ed 4 sn\u00edmky:<\/h2>\n<p>\nM\u016f\u017eeme vid\u011bt mnoho opakov\u00e1n\u00ed ve sn\u00edmc\u00edch: nap\u0159\u00edklad modr\u00e9 pozad\u00ed, kter\u00e9 se od sn\u00edmku ke sn\u00edmku nem\u011bn\u00ed. Abychom tento probl\u00e9m vy\u0159e\u0161ili, m\u016f\u017eeme je abstraktn\u011b klasifikovat jako t\u0159i typy sn\u00edmk\u016f.<\/p>\n<p><img decoding=\"async\" alt=\"Jak funguje video kodek. \u010c\u00e1st 1. Z\u00e1klady\" src=\"\/wp-content\/uploads\/2019\/12\/103dc714d756d014e1d2c1bfb33751b1.png\" style=\"display:block;margin: 0 auto;\" \/> <img decoding=\"async\" alt=\"Jak funguje video kodek. \u010c\u00e1st 1. Z\u00e1klady\" src=\"\/wp-content\/uploads\/2019\/12\/fdd7d89b884b2f77fea7c386c0d29fef.png\" style=\"display:block;margin: 0 auto;\" \/> <img decoding=\"async\" alt=\"Jak funguje video kodek. \u010c\u00e1st 1. Z\u00e1klady\" src=\"\/wp-content\/uploads\/2019\/12\/61746b829025d5abcb7db072a54400c0.png\" style=\"display:block;margin: 0 auto;\" \/> <img decoding=\"async\" alt=\"Jak funguje video kodek. \u010c\u00e1st 1. Z\u00e1klady\" src=\"\/wp-content\/uploads\/2019\/12\/c65ee526ec4539996f6bb94463d0cf2d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nI-sn\u00edmek (<\/p>\n<h3>ntro Frame)<b>I<\/b>I-sn\u00edmek (sn\u00edmek-odkaz, kl\u00ed\u010dov\u00fd sn\u00edmek, vnit\u0159n\u00ed sn\u00edmek) je autonomn\u00ed. Bez ohledu na to, co je pot\u0159eba vizualizovat, I-sn\u00edmek je v podstat\u011b statick\u00fd obr\u00e1zek. Prvn\u00ed sn\u00edmek je obvykle I-sn\u00edmek, nicm\u00e9n\u011b i mezi sn\u00edmky, kter\u00e9 nejsou na za\u010d\u00e1tku, budeme pravideln\u011b pozorovat I-sn\u00edmky.<\/h3>\n<p>\nP-sn\u00edmek (<\/p>\n<p><img decoding=\"async\" alt=\"Jak funguje video kodek. \u010c\u00e1st 1. Z\u00e1klady\" src=\"\/wp-content\/uploads\/2019\/12\/44f2a7d6154f1a40fdb1174a443a9c3f.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>P<b>redicted Frame)<\/b>P-sn\u00edmek (p\u0159edpov\u011bzen\u00fd sn\u00edmek) vyu\u017e\u00edv\u00e1 v\u00fdhodu toho, \u017ee t\u00e9m\u011b\u0159 v\u017edy m\u016f\u017ee b\u00fdt aktu\u00e1ln\u00ed obr\u00e1zek reprodukov\u00e1n pomoc\u00ed p\u0159edchoz\u00edho sn\u00edmku. Nap\u0159\u00edklad ve druh\u00e9m sn\u00edmku je jedinou zm\u011bnou pohybuj\u00edc\u00ed se m\u00ed\u010d vp\u0159ed. M\u016f\u017eeme z\u00edskat sn\u00edmek 2 pouh\u00fdm drobn\u00fdm p\u0159etvo\u0159en\u00edm sn\u00edmku 1, p\u0159i\u010dem\u017e vyu\u017e\u00edv\u00e1me rozd\u00edl mezi t\u011bmito sn\u00edmky. Pro sestaven\u00ed sn\u00edmku 2 se odkazujeme na p\u0159edch\u00e1zej\u00edc\u00ed sn\u00edmek 1.<\/h3>\n<p>\nP-sn\u00edmek (predikovan\u00fd sn\u00edmek) vyu\u017e\u00edv\u00e1 v\u00fdhodu toho, \u017ee aktu\u00e1ln\u00ed obr\u00e1zek obvykle m\u016f\u017ee b\u00fdt reprodukov\u00e1n s pou\u017eit\u00edm p\u0159edchoz\u00edho sn\u00edmku. Nap\u0159\u00edklad ve druh\u00e9m sn\u00edmku je jedinou zm\u011bnou m\u00ed\u010d, kter\u00fd se pohybuje vp\u0159ed. M\u016f\u017eeme z\u00edskat sn\u00edmek 2 jednoduch\u00fdm m\u00edrn\u00fdm upraven\u00edm sn\u00edmku 1, pouze pomoc\u00ed rozd\u00edlu mezi t\u011bmito sn\u00edmky. Pro ztv\u00e1rn\u011bn\u00ed sn\u00edmku 2 se odvol\u00e1v\u00e1me na p\u0159edchoz\u00ed sn\u00edmek 1.<\/p>\n<p><img decoding=\"async\" alt=\"Jak funguje video kodek. \u010c\u00e1st 1. Z\u00e1klady\" src=\"\/wp-content\/uploads\/2019\/12\/1245857fd8406a24da02d0c71beb7b4d.png\" style=\"display:block;margin: 0 auto;\" \/> \u2190 <img decoding=\"async\" alt=\"Jak funguje video kodek. \u010c\u00e1st 1. Z\u00e1klady\" src=\"\/wp-content\/uploads\/2019\/12\/ab8e8f6020825830c4d03004528af1a4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>B-sn\u00edmek (<b>B<\/b>i-predictive Frame)<\/h3>\n<p>\nA co odkazy nejen na minul\u00e9, ale i na budouc\u00ed sn\u00edmky, abychom zajistili je\u0161t\u011b lep\u0161\u00ed kompresi?! To je v podstat\u011b B-sn\u00edmek (obousm\u011brn\u00fd sn\u00edmek).<\/p>\n<p><img decoding=\"async\" alt=\"Jak funguje video kodek. \u010c\u00e1st 1. Z\u00e1klady\" src=\"\/wp-content\/uploads\/2019\/12\/f28d4e02836e9b37f0f21937dd1ba660.png\" style=\"display:block;margin: 0 auto;\" \/> \u2190 <img decoding=\"async\" alt=\"Jak funguje video kodek. \u010c\u00e1st 1. Z\u00e1klady\" src=\"\/wp-content\/uploads\/2019\/12\/7a6b3a329db155c94a91f58a99874bb9.png\" style=\"display:block;margin: 0 auto;\" \/> \u2192 <img decoding=\"async\" alt=\"Jak funguje video kodek. \u010c\u00e1st 1. Z\u00e1klady\" src=\"\/wp-content\/uploads\/2019\/12\/09df4bc5a35df89575c7b51349be4340.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Meziv\u00fdstup<\/h2>\n<p>\nTyto typy sn\u00edmk\u016f se pou\u017e\u00edvaj\u00ed k zaji\u0161t\u011bn\u00ed nejlep\u0161\u00ed komprese. V n\u00e1sleduj\u00edc\u00ed \u010d\u00e1sti si rozebere, jak to funguje. Prozat\u00edm si pov\u0161imn\u011bte, \u017ee nejv\u00edce \u201en\u00e1kladn\u00fdm\u201c podle pam\u011b\u0165ov\u00e9 z\u00e1t\u011b\u017ee je I-sn\u00edmek, P-sn\u00edmek je v\u00fdrazn\u011b levn\u011bj\u0161\u00ed, ale nejv\u00fdhodn\u011bj\u0161\u00ed varianta pro video je B-sn\u00edmek.<\/p>\n<p><img decoding=\"async\" alt=\"Jak funguje video kodek. \u010c\u00e1st 1. Z\u00e1klady\" src=\"\/wp-content\/uploads\/2019\/12\/97b9177ffff302881deb1c86ce416166.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>\u010casov\u00e1 redundantnost (mezi-sn\u00edmov\u00e9 predikce)<\/h2>\n<p>\nPoj\u010fme se pod\u00edvat, jak\u00e9 m\u00e1me mo\u017enosti pro minimalizaci \u010dasov\u00fdch opakov\u00e1n\u00ed. Tento typ redundantnosti vy\u0159e\u0161\u00edme pomoc\u00ed metod vz\u00e1jemn\u00e9ho predikov\u00e1n\u00ed.<\/p>\n<p>Budeme se sna\u017eit vynalo\u017eit co nejm\u00e9n\u011b bit\u016f na k\u00f3dov\u00e1n\u00ed sekvence sn\u00edmk\u016f 0 a 1.<\/p>\n<p><img decoding=\"async\" alt=\"Jak funguje video kodek. \u010c\u00e1st 1. Z\u00e1klady\" src=\"\/wp-content\/uploads\/2019\/12\/f0dc2df33a5297622a77a4ca09b19af8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nM\u016f\u017eeme prov\u00e9st <b>od\u010d\u00edt\u00e1n\u00ed<\/b>, jednodu\u0161e ode\u010dteme sn\u00edmek 1 od sn\u00edmku 0. Z\u00edsk\u00e1v\u00e1me sn\u00edmek 1, pouze pou\u017e\u00edv\u00e1me rozd\u00edl mezi n\u00edm a p\u0159edchoz\u00edm sn\u00edmkem, v podstat\u011b k\u00f3dujeme pouze vznikl\u00fd zbytek.<\/p>\n<p><img decoding=\"async\" alt=\"Jak funguje video kodek. \u010c\u00e1st 1. Z\u00e1klady\" src=\"\/wp-content\/uploads\/2019\/12\/c14981c3a3a0459a02620805c4a0f2db.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAle co kdy\u017e v\u00e1m \u0159eknu, \u017ee existuje je\u0161t\u011b lep\u0161\u00ed metoda, kter\u00e1 pou\u017e\u00edv\u00e1 je\u0161t\u011b m\u00e9n\u011b bit\u016f?! Nejd\u0159\u00edve rozd\u011blme sn\u00edmek 0 na jasnou s\u00ed\u0165 slo\u017eenou z blok\u016f. A pot\u00e9 se pokus\u00edme p\u0159i\u0159adit bloky ze sn\u00edmku 0 k sn\u00edmku 1. Jin\u00fdmi slovy, zhodnot\u00edme pohyb mezi sn\u00edmky.<\/p>\n<blockquote><p> Z Wikipedie \u2014 <b>blokov\u00e1 kompenzace pohybu<\/b><\/p>\n<p>Blokov\u00e1 kompenzace pohybu d\u011bl\u00ed aktu\u00e1ln\u00ed sn\u00edmek na nep\u0159ekr\u00fdvaj\u00edc\u00ed se bloky a vektor kompenzace pohybu uv\u00e1d\u00ed p\u016fvod blok\u016f (roz\u0161\u00ed\u0159en\u00e1 chyba spo\u010d\u00edv\u00e1 v tom, \u017ee <i>p\u0159edchoz\u00ed<\/i> sn\u00edmek je d\u011blen na nep\u0159ekr\u00fdvaj\u00edc\u00ed se bloky, a vektory kompenzace pohybu \u0159\u00edkaj\u00ed, kam tyto bloky odch\u00e1zej\u00ed. A ve skute\u010dnosti je to naopak \u2014 neanalyzuje se p\u0159edchoz\u00ed sn\u00edmek, ale n\u00e1sleduj\u00edc\u00ed, zji\u0161\u0165uje se ne kam bloky putuj\u00ed, ale odkud se vzaly). Obvykle jsou p\u016fvodn\u00ed bloky p\u0159ekryty v p\u016fvodn\u00edm sn\u00edmku. N\u011bkter\u00e9 video kompresn\u00ed algoritmy shroma\u017e\u010fuj\u00ed aktu\u00e1ln\u00ed sn\u00edmek z \u010d\u00e1st\u00ed nejen z jednoho, ale tak\u00e9 z n\u011bkolika p\u0159edchoz\u00edch sn\u00edmk\u016f.<\/p><\/blockquote>\n<p><img decoding=\"async\" alt=\"Jak funguje video kodek. \u010c\u00e1st 1. Z\u00e1klady\" src=\"\/wp-content\/uploads\/2019\/12\/0c34e84b318be2d250bade240fad80ed.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nB\u011bhem hodnocen\u00ed vid\u00edme, \u017ee m\u00ed\u010d se p\u0159esunul z (<b>x<\/b>=0, <b>y<\/b>=25) na (<b>x<\/b>=6, <b>y<\/b>=26), hodnoty <b>x<\/b> a <b>y<\/b> ur\u010duj\u00ed sm\u011br pohybu. Dal\u0161\u00ed krok, kter\u00fd m\u016f\u017eeme podniknout, abychom uchovali bity, je k\u00f3dovat pouze rozd\u00edl vektor\u016f pohybu mezi posledn\u00ed pozic\u00ed bloku a p\u0159edpokl\u00e1danou, tak\u017ee kone\u010dn\u00fd vektor pohybu bude (x=6-0=6, y=26-25=1).<\/p>\n<p>V re\u00e1ln\u00e9 situaci by tato koule byla rozd\u011blena na <b>n<\/b> bloky, ale to nijak nem\u011bn\u00ed podstatu v\u011bci.<\/p>\n<p>Objekty v z\u00e1b\u011bru se pohybuj\u00ed ve t\u0159ech dimenz\u00edch, tak\u017ee p\u0159i pohybu koule se m\u016f\u017ee jevit jako vizu\u00e1ln\u011b men\u0161\u00ed (nebo v\u011bt\u0161\u00ed, pokud se pohybuje sm\u011brem k div\u00e1kovi). Je norm\u00e1ln\u00ed, \u017ee mezi bloky nebude dokonal\u00e9 shodov\u00e1n\u00ed. Tady je kombinovan\u00fd pohled na na\u0161i estimaci a skute\u010dn\u00fd obraz.<\/p>\n<p><img decoding=\"async\" alt=\"Jak funguje video kodek. \u010c\u00e1st 1. Z\u00e1klady\" src=\"\/wp-content\/uploads\/2019\/12\/0fb4737e1076221e786fd6a78357422d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVid\u00edme v\u0161ak, \u017ee kdy\u017e aplikujeme odhad pohybu, dat pro k\u00f3dov\u00e1n\u00ed je v\u00fdrazn\u011b m\u00e9n\u011b ne\u017e p\u0159i pou\u017eit\u00ed jednodu\u0161\u0161\u00ed metody v\u00fdpo\u010dtu delta mezi sn\u00edmky.<\/p>\n<p><img decoding=\"async\" alt=\"Jak funguje video kodek. \u010c\u00e1st 1. Z\u00e1klady\" src=\"\/wp-content\/uploads\/2019\/12\/319507ad7197b7693efff11dcd7e4df4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Jak by vypadala skute\u010dn\u00e1 kompenzace pohybu<\/h2>\n<p>\nTato metoda se aplikuje okam\u017eit\u011b na v\u0161echny bloky. \u010casto bude n\u00e1\u0161 hypotetick\u00fd pohybuj\u00edc\u00ed se m\u00ed\u010dek rozd\u011blen najednou na n\u011bkolik blok\u016f.<\/p>\n<p><img decoding=\"async\" alt=\"Jak funguje video kodek. \u010c\u00e1st 1. Z\u00e1klady\" src=\"\/wp-content\/uploads\/2019\/12\/978b5612dbd164d2865ccdec4474fdb4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nM\u016f\u017eete si tyto koncepty sami vyzkou\u0161et, pomoc\u00ed <noindex><a rel=\"nofollow\" href=\"https:\/\/jupyter.org\/\">Jupyter<\/a><\/noindex>.<\/p>\n<p>Abychom vid\u011bli vektory pohybu, m\u016f\u017eeme vytvo\u0159it video s extern\u00edm p\u0159edpokladem pomoc\u00ed <noindex><a rel=\"nofollow\" href=\"https:\/\/www.ffmpeg.org\/\">ffmpeg<\/a><\/noindex>.<\/p>\n<p><img decoding=\"async\" alt=\"Jak funguje video kodek. \u010c\u00e1st 1. Z\u00e1klady\" src=\"\/wp-content\/uploads\/2019\/12\/056d6dfd2c18baaabc70655edfe3d609.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nM\u016f\u017eete tak\u00e9 vyu\u017e\u00edt <noindex><a rel=\"nofollow\" href=\"https:\/\/software.intel.com\/en-us\/video-pro-analyzer\">Intel Video Pro Analyzer<\/a><\/noindex> (je placen\u00fd, ale je k dispozici bezplatn\u00e1 zku\u0161ebn\u00ed verze, kter\u00e1 je omezena pouze na prvn\u00edch deset sn\u00edmk\u016f).<\/p>\n<p><img decoding=\"async\" alt=\"Jak funguje video kodek. \u010c\u00e1st 1. Z\u00e1klady\" src=\"\/wp-content\/uploads\/2019\/12\/5e28ccc6e6101b8d613f94d326a685f2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Prostorov\u00e1 redundance (vnit\u0159n\u00ed predikce)<\/h2>\n<p>\nPokud analyzujeme ka\u017ed\u00fd sn\u00edmek ve videu, objev\u00edme mnoho vz\u00e1jemn\u011b propojen\u00fdch oblast\u00ed.<\/p>\n<p><img decoding=\"async\" alt=\"Jak funguje video kodek. \u010c\u00e1st 1. Z\u00e1klady\" src=\"\/wp-content\/uploads\/2019\/12\/24bff6d64704cf0c8e1010832ea8f6ea.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPoj\u010fme se pod\u00edvat na tento p\u0159\u00edklad. Tato sc\u00e9na se p\u0159ev\u00e1\u017en\u011b skl\u00e1d\u00e1 z modr\u00e9 a b\u00edl\u00e9 barvy.<\/p>\n<p><img decoding=\"async\" alt=\"Jak funguje video kodek. \u010c\u00e1st 1. Z\u00e1klady\" src=\"\/wp-content\/uploads\/2019\/12\/12edf221c61e064674ad363db9f3342c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nToto je I-sn\u00edmek. P\u0159edchoz\u00ed sn\u00edmky pro predikci nem\u016f\u017eeme pou\u017e\u00edt, ale poda\u0159\u00ed se n\u00e1m ho zkomprimovat. Zak\u00f3dujeme vymezen\u00ed \u010derven\u00e9ho bloku. Pokud se pod\u00edv\u00e1me na jeho sousedy, v\u0161imneme si, \u017ee kolem n\u011bj jsou n\u011bjak\u00e9 barevn\u00e9 tendence.<\/p>\n<p><img decoding=\"async\" alt=\"Jak funguje video kodek. \u010c\u00e1st 1. Z\u00e1klady\" src=\"\/wp-content\/uploads\/2019\/12\/b67b3fba3d1792db81d0f1cb52c7c29b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nP\u0159edpokl\u00e1d\u00e1me, \u017ee v z\u00e1b\u011bru se barvy \u0161\u00ed\u0159\u00ed svisle. Co\u017e znamen\u00e1, \u017ee barvy nezn\u00e1m\u00fdch pixel\u016f budou obsahovat hodnoty sv\u00fdch soused\u016f.<\/p>\n<p><img decoding=\"async\" alt=\"Jak funguje video kodek. \u010c\u00e1st 1. Z\u00e1klady\" src=\"\/wp-content\/uploads\/2019\/12\/6fe8f6ed7ebc66940fca27b8cd2c5915.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTato predikce m\u016f\u017ee b\u00fdt tak\u00e9 chybn\u00e1. Pr\u00e1v\u011b proto je t\u0159eba aplikovat tuto metodu (vnit\u0159n\u00ed predikce) a pot\u00e9 je\u0161t\u011b ode\u010d\u00edst skute\u010dn\u00e9 hodnoty. To n\u00e1m d\u00e1 zbytkov\u00fd blok, co\u017e povede k mnohem komprimovan\u011bj\u0161\u00ed matici ve srovn\u00e1n\u00ed s origin\u00e1lem.<\/p>\n<p><img decoding=\"async\" alt=\"Jak funguje video kodek. \u010c\u00e1st 1. Z\u00e1klady\" src=\"\/wp-content\/uploads\/2019\/12\/52fd77c96aa8445af12fca468c72c844.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPokud chcete praktikovat intern\u00ed predikce, m\u016f\u017eete vytvo\u0159it video s makrobloky a jejich predikcemi pomoc\u00ed ffmpeg. Abyste porozum\u011bli v\u00fdznamu ka\u017ed\u00e9 barvy bloku, budete si muset prostudovat dokumentaci ffmpeg.<\/p>\n<p><img decoding=\"async\" alt=\"Jak funguje video kodek. \u010c\u00e1st 1. Z\u00e1klady\" src=\"\/wp-content\/uploads\/2019\/12\/0399473c538a550f9317fd59c347a565.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNebo m\u016f\u017eete pou\u017e\u00edt Intel Video Pro Analyzer (jak jsem ji\u017e zm\u00ednil v\u00fd\u0161e, v zku\u0161ebn\u00ed bezplatn\u00e9 verzi je omezen\u00ed na prvn\u00edch 10 sn\u00edmk\u016f, ale na za\u010d\u00e1tku v\u00e1m to sta\u010d\u00ed).<\/p>\n<p><img decoding=\"async\" alt=\"Jak funguje video kodek. \u010c\u00e1st 1. Z\u00e1klady\" src=\"\/wp-content\/uploads\/2019\/12\/abcdf1eb4b7dbdcf2a7a64154f3052ba.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Druh\u00e1 \u010d\u00e1st:<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/edison\/blog\/480430\/\"> Principy fungov\u00e1n\u00ed video kodeku<\/a><\/noindex><\/h3>\n<p>Zdroj: <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.3 - 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\/cs\/blog\/news\/kak-rabotaet-videokodek-chast-1-osnovy\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\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\/cs\/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\udd47Jak funguje video kodek. \u010c\u00e1st 1. Z\u00e1klady | ProHoster","description":"Druh\u00e1 \u010d\u00e1st: Principy pr\u00e1ce video kodeku Jak\u00e9koli rastrov\u00e9 obr\u00e1zky lze p\u0159edstavit ve form\u011b.","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/news\/kak-rabotaet-videokodek-chast-1-osnovy","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","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\/cs\/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\/cs\/wp-json\/wp\/v2\/posts\/54312","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=54312"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/54312\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=54312"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=54312"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=54312"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}