{"id":501,"date":"2020-07-17T07:53:50","date_gmt":"2020-07-17T05:53:50","guid":{"rendered":"http:\/\/flexray.pl\/?p=501"},"modified":"2020-07-17T08:08:12","modified_gmt":"2020-07-17T06:08:12","slug":"jakosc-video-po-kompresji-czyli-psnr-i-ssim","status":"publish","type":"post","link":"http:\/\/flexray.pl\/jakosc-video-po-kompresji-czyli-psnr-i-ssim\/","title":{"rendered":"Jako\u015b\u0107 video po kompresji czyli PSNR i SSIM"},"content":{"rendered":"\n

Du\u017co pracuj\u0119 z video i zawsze na pierwszym miejscu jest u mnie jako\u015b\u0107 materia\u0142u. Najch\u0119tniej pracowa\u0142bym na kompresji bezstratnej (lossless), ale filmy w 4K zajmuj\u0105 bardzo du\u017co miejsca, a i obr\u00f3bka przy olbrzymich plikach jest bardziej uci\u0105\u017cliwa… Istniej\u0105 mimo to kompromisy na kt\u00f3re mo\u017cna si\u0119 zgodzi\u0107, czyli kompresja stratna (lossy). Sprawd\u017amy kilka popularnych kodek\u00f3w i jako\u015b\u0107 video.<\/p>\n\n\n\n\n\n\n\n

Jako\u015b\u0107 video ma znaczenie<\/h2>\n\n\n\n

Nie jestem profesjonalnym operatorem kamery, wi\u0119kszo\u015b\u0107 rejestruj\u0119 telefonem, st\u0105d kodeki kt\u00f3rych u\u017cywam to w wi\u0119kszo\u015bci x264, x265 oraz czasem mpeg4. Staram si\u0119 zawsze nagrywa\u0107 w maksymalnej rozdzielczo\u015bci jak\u0105 daje telefon i maksymalnym FPS (klatki na sekund\u0119) – co zwykle daje 4K w 60fps. Jest to przede wszystkim p\u0142ynno\u015b\u0107 video, ale tak\u017ce pole do dodatkowej stabilizacji obrazu przy u\u017cyciu oprogramowania, kt\u00f3re odpowiednio kadruj\u0105c i zniekszta\u0142caj\u0105c obraz daje poczucie stabilnego uj\u0119cia kosztem zmniejszenia rozdzielczo\u015bci materia\u0142u – to jest dla mnie zupe\u0142nie akceptowalne. Nagrywanie z „r\u0119ki” telefonem potrafi nie\u017ale drga\u0107.<\/p>\n\n\n\n

O ile do obr\u00f3bki video wykorzystuj\u0119 Davinci Resolve oraz Adobe Premiere Essentials, to pliki wynikowe staram si\u0119 renderowa\u0107 z maksymalnym bitrate aby nie traci\u0107 na jako\u015bci. Ostateczn\u0105 kompresj\u0119 robi\u0119 przez ffmpeg i na nim si\u0119 skupi\u0119 w tym wpisie. U\u017cywam wersji ffmpeg-20200523-26b4509<\/a><\/p>\n\n\n\n

Kodeki kt\u00f3re por\u00f3wnam to x264, x265, VP9 oraz AV1. O ile trzy pierwsze s\u0105 bardzo popularne, to AV1 dopiero zaczyna podb\u00f3j rynku. Jest to nowe podej\u015bcie i nowe algorytmy, kt\u00f3re na mniejszym bitrate potrafi\u0105 uzyska\u0107 lepsz\u0105 jako\u015b\u0107 ni\u017c poprzednicy, co w rezultacie daje mniejsze pliki przy tej samej jako\u015bci. Olbrzymim minusem AV1 jest czas kompresji – oko\u0142o 500-700x d\u0142u\u017cszy ni\u017c x264… Ale \u015bwiat idzie do przodu, algorytm jest optymalizowany i lada moment trafi jako nowy firmware do naszych telewizor\u00f3w i wszystko b\u0119dzie gra\u0142o.<\/p>\n\n\n\n

Czym jest kompresja stratna i bezstratna?<\/h3>\n\n\n\n

Kompresja stratna to taka, w kt\u00f3rej chc\u0105c zredukowa\u0107 wielko\u015b\u0107 pliku, godzimy si\u0119 na utrat\u0119 jako\u015bci – np. szczeg\u00f3\u0142\u00f3w, odwzorowania kolor\u00f3w czy p\u0142ynno\u015bci ruchu. Nowoczesne kodeki pozwalaj\u0105 na p\u0142ynne strojenie tych parametr\u00f3w, oraz wykorzystuj\u0105 algorytmy dostosowane do odbiorcy czyli ludzkiego oka – kt\u00f3re nie zawsze jest w stanie wychwyci\u0107 te ma\u0142e r\u00f3\u017cnice, a dzi\u0119ki temu plik jest znacznie mniejszy.<\/p>\n\n\n\n

Kompresja bezstratna charakteryzuje si\u0119 przenoszeniem obrazu 1:1 wzgl\u0119dem \u017ar\u00f3d\u0142a, zatem plik wyj\u015bciowy jest dok\u0142adnym odwzorowaniem pliku wej\u015bciowego, ale zwykle bardzo du\u017cym. Takie pliki s\u0105 bardzo dobrym jako\u015bciowo materia\u0142em do monta\u017cu i obr\u00f3bki, ale nie nadaj\u0105 si\u0119 do publikowania w Internecie, ze wzgl\u0119du na sw\u00f3j rozmiar.<\/p>\n\n\n\n

Po co mi PSNR i SSIM?<\/h3>\n\n\n\n

PSNR i SSIM to dwa popularne „mierniki” jako\u015bci wzgl\u0119dem materia\u0142u \u017ar\u00f3d\u0142owego. Aby sprawdzi\u0107 jako\u015b\u0107 kompresji u\u017cywaj\u0105c wybranego kodeka i bitrate, musimy plik wynikowy por\u00f3wna\u0107 z plikiem \u017ar\u00f3d\u0142owym. Dwa identyczne pliki powinny mie\u0107 SSIM r\u00f3wny 1.0 oraz PSNR d\u0105\u017c\u0105cy do niesko\u0144czono\u015bci (infinite). Taki wynik daj\u0105 kodeki w kt\u00f3rych wykorzystamy kompresj\u0119 bezstratn\u0105 (lossless)<\/p>\n\n\n

\nSSIM Y:1.000000 (inf) U:1.000000 (inf) V:1.000000 (inf) All:1.000000 (inf)\nPSNR y:inf u:inf v:inf average:inf min:inf max:inf\n<\/pre>\n\n\n

Wykorzystuj\u0105c kompresj\u0119 stratn\u0105, zgadzamy si\u0119 na utrat\u0119 pewnych szczeg\u00f3\u0142\u00f3w obrazu, ale uzyskujemy mniejszy plik wynikowy.<\/p>\n\n\n

\nSSIM Y:0.998753 (29.042157) U:0.999491 (32.934697) V:0.999728 (35.656912) All:0.999039 (30.171505)\nPSNR y:56.750038 u:62.900075 v:65.809073 average:58.129866 min:56.936481 max:inf\n<\/pre>\n\n\n

PSNR okre\u015bla si\u0119 jako Szczytowy stosunek sygna\u0142u do szumu<\/strong>, gdzie sygna\u0142em<\/strong> s\u0105 nieskompresowane dane \u017ar\u00f3d\u0142owe<\/strong>, a szumem<\/strong> \u2013 artefakty<\/a> (zniekszta\u0142cenia) spowodowane zastosowaniem kompresji stratnej.<\/p><\/blockquote>\n\n\n\n

Parametr ten doskonale sprawdza si\u0119 jako liczbowy parametr jako\u015bci kompresji, jednak nie bierze pod uwag\u0119 percepcji ludzkiego oka, co z kolei dok\u0142adniej odwzorowuje SSIM.<\/p>\n\n\n\n

SSIM to miara wska\u017anika podobie\u0144stwa strukturalnego<\/strong> i jest metod\u0105 przewidywania postrzeganej jako\u015bci<\/strong> telewizji cyfrowej i zdj\u0119\u0107 kinowych, a tak\u017ce innych rodzaj\u00f3w obraz\u00f3w cyfrowych i film\u00f3w.<\/p><\/blockquote>\n\n\n\n

Chc\u0105c wykorzysta\u0107 te dwa parametry musimy zrozumie\u0107 jakie warto\u015bci tych parametr\u00f3w charakteryzuj\u0105 jako\u015b\u0107 kompresowanego video. PSNR d\u0105\u017cy do niesko\u0144czono\u015bci – czyli im jest wy\u017cszy tym lepiej. Standardowo waha si\u0119 mi\u0119dzy 30 a 50. Przy kompresji bezstratnej okre\u015blany jako „infinity” – co oznacza \u017ce pliki \u017ar\u00f3d\u0142owy i wynikowe s\u0105 identyczne. SSIM z kolei ma zakres od 0.0 do 1.0 i opisuje podobie\u0144stwo wizualne. Przy warto\u015bci 1.0 plik \u017ar\u00f3d\u0142owy oraz plik wyj\u015bciowy s\u0105 identyczne. Co za tym idzie, mniejsza ni\u017c 1.0 warto\u015b\u0107 SSIM oznacza strat\u0119 jako\u015bci.<\/p>\n\n\n\n

Wielko\u015b\u0107 pliku przy kompresji bezstratnej (lossless)<\/h3>\n\n\n\n

Plik \u017ar\u00f3d\u0142owy 1080p w 30fps kompresja h264 – skopiowane pierwsze 800 klatek z pomini\u0119ciem audio, bo tym si\u0119 nie zajmujemy, rozdzielczo\u015b\u0107 do 720p i lossless x265 jako plik wzorca.<\/p>\n\n\n

\n$ ffmpeg -i "source.mp4" -vframes 800 -vf scale=-1:720 -c:v libx265 -x265-params lossless=1 -an source.mkv\n\nOutput #0, matroska, to 'source.mkv':\n  Metadata:\n    major_brand     : isom\n    minor_version   : 1\n    compatible_brands: isomavc1\n    composer        : Sacha Goedegebure\n    title           : Big Buck Bunny, Sunflower version\n    artist          : Blender Foundation 2008, Janus Bager Kristensen 2013\n    comment         : Creative Commons Attribution 3.0 - http:\/\/bbb3d.renderfarming.net\n    genre           : Animation\n    encoder         : Lavf58.43.100\n    Stream #0:0(und): Video: hevc (libx265), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], q=-1--1, 30 fps, 1k tbn, 30 tbc (default)\n<\/pre>\n\n\n

Nast\u0119pnie plik ten zosta\u0142 skompresowany przy wykorzystaniu x264, x265, VP9 oraz AV1 z opcj\u0105 kompresji bezstratej, komendy poni\u017cej:<\/p>\n\n\n

\n$ ffmpeg -i source.mkv -c:v libx264 -qp 0 x264_lossless.mkv\n$ ffmpeg -i source.mkv -c:v libx265 -x265-params lossless=1 x265_lossless.mkv\n$ ffmpeg -i source.mkv -c:v libvpx-vp9 -b:v 0 -lossless 1 VP9_lossless.mkv\n<\/pre>\n\n\n

Por\u00f3wnujemy x264<\/strong> wzgl\u0119dem \u017ar\u00f3d\u0142a, mamy SSIM = 1.0 oraz PSNR = inf. czyli kompresja by\u0142a bezstratna.<\/p>\n\n\n

\n$ ffmpeg -i x264_lossless.mkv -i source.mkv -lavfi "ssim;[0:v][1:v]psnr" -f null -\nSSIM Y:1.000000 (inf) U:1.000000 (inf) V:1.000000 (inf) All:1.000000 (inf)\nPSNR y:inf u:inf v:inf average:inf min:inf max:inf\n<\/pre>\n\n\n

Nast\u0119pnie kompresujemy z u\u017cyciem x265<\/strong> wzgl\u0119dem \u017ar\u00f3d\u0142a, mamy SSIM = 1.0 oraz PSNR = inf. czyli kompresja by\u0142a bezstratna.<\/p>\n\n\n

\n$ ffmpeg -i x265_lossless.mkv -i source.mkv -lavfi "ssim;[0:v][1:v]psnr" -f null -\nSSIM Y:1.000000 (inf) U:1.000000 (inf) V:1.000000 (inf) All:1.000000 (inf)\nPSNR y:inf u:inf v:inf average:inf min:inf max:inf\n\n<\/pre>\n\n\n

Na koniec kompresujemy VP9<\/strong> wzgl\u0119dem \u017ar\u00f3d\u0142a, mamy SSIM = 1.0 oraz PSNR = inf. czyli kompresja by\u0142a bezstratna.<\/p>\n\n\n

\n$ ffmpeg -i VP9_lossless.mkv -i source.mkv -lavfi "ssim;[0:v][1:v]psnr" -f null -\nSSIM Y:1.000000 (inf) U:1.000000 (inf) V:1.000000 (inf) All:1.000000 (inf)\nPSNR y:inf u:inf v:inf average:inf min:inf max:inf\n<\/pre>\n\n\n

Na sam koniec zostaje nam AV1<\/strong> wzgl\u0119dem \u017ar\u00f3d\u0142a, mamy SSIM = 1.0 oraz PSNR = inf. czyli kompresja by\u0142a bezstratna.<\/p>\n\n\n\n

Podsumujmy kompresj\u0119 bezstratn\u0105 (lossless)<\/h3>\n\n\n\n
Kodek<\/td>Obj\u0119to\u015b\u0107 <\/td><\/tr>
\u017ar\u00f3d\u0142o (x265)<\/td>108,683,556 bajt\u00f3w<\/td><\/tr>
x264<\/td>117,931,148 bajt\u00f3w<\/td><\/tr>
x265<\/td>108,683,556 bajt\u00f3w<\/td><\/tr>
VP9<\/td>171,929,297 bajt\u00f3w<\/td><\/tr>
AV1<\/td>112,405,222 bajt\u00f3w<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n

Przy kompresji bezstratnej r\u00f3\u017cnice w wielko\u015bci plik\u00f3w maj\u0105 znaczenie, gdy\u017c pliki wyj\u015bciowe s\u0105 du\u017co wi\u0119ksze ni\u017c przy kompresji stratnej. W takim wypadku 10-20% r\u00f3\u017cnicy mo\u017ce oznacza\u0107 kilka-kilkadziesi\u0105t gigabajt\u00f3w wi\u0119cej na dysku. <\/p>\n\n\n\n

Jako\u015b\u0107 video przy kompresji stratnej (lossy)<\/h2>\n\n\n\n

Ponownie ten sam plik \u017ar\u00f3d\u0142owy 1080p w 30fps kompresja h264. Po pierwsze skopiowane 800 klatek z pomini\u0119ciem audio. Tym si\u0119 nie zajmujemy. Po drugie rozdzielczo\u015b\u0107 do 720p i lossless x265 jako plik wzorca.<\/p>\n\n\n\n

Tym razem celujemy w bardzo zbli\u017cone warto\u015bci PSNR oraz SSIM dla wszystkich plik\u00f3w wynikowych, pr\u00f3buj\u0105c dostroi\u0107 parametry kompresji. Dzi\u0119ki temu b\u0119dziemy wiedzie\u0107 \u017ce pliki wyj\u015bciowe maj\u0105 bardzo zbli\u017con\u0105 do siebie jako\u015b\u0107 i por\u00f3wnamy stopie\u0144 kompresji czyli wielko\u015b\u0107 pliku wynikowego. <\/p>\n\n\n\n

W pierwszej kolejno\u015bci idzie VP9<\/strong>, ze wzgl\u0119du na brak mo\u017cliwo\u015bci ustawiania parametru -crf<\/em> jako u\u0142amek z cz\u0119\u015bci\u0105 po przecinku. Wynikiem b\u0119dzie nasza jako\u015b\u0107 video do kt\u00f3rej d\u0105\u017cymy, pozosta\u0142e kodeki b\u0119dziemy doprowadza\u0107 do jako\u015bci kodeka VP9. VP9 posiada najlepsz\u0105 jako\u015b\u0107 przy dwu-przebiegowej kompresji, gdzie pozosta\u0142e kodeki maj\u0105 minimalny i wr\u0119cz pomijalny uzysk z dw\u00f3ch przebieg\u00f3w. Jako parametry w kt\u00f3re celujemy to PSNR average:45.321<\/strong> oraz SSIM All:0.992<\/strong>. Wizualnie utracili\u015bmy 0.8% szczeg\u00f3\u0142\u00f3w o czym m\u00f3wi SSIM.<\/p>\n\n\n

\n$ ffmpeg -i source.mkv -y -c:v libvpx-vp9 -pass 1 -crf 32 -b:v 0 -tune psnr -f webm VP9_psnr_pass1.mkv\n$ ffmpeg -i source.mkv -c:v libvpx-vp9 -pass 2 -crf 32 -b:v 0 -tune psnr VP9_psnr_pass2.mkv\n$ ffmpeg -i VP9_psnr_pass2.mkv -i source.mkv -lavfi "ssim;[0:v][1:v]psnr" -f null -\n\nSSIM Y:0.992829 (21.444045) U:0.991546 (20.729279) V:0.991933 (20.932731) All:0.992466 (21.229502)\nPSNR y:44.354215 u:47.979801 v:48.693489 average:45.321377 min:41.582973 max:inf\n<\/pre>\n\n\n

Jako pierwszy dostroi\u0142em x264<\/strong> uzyskuj\u0105c PSNR: 45.358 i SSIM:0.9916<\/p>\n\n\n

\n$ ffmpeg -i source.mkv -c:v libx264 -tune psnr -crf 21.6 x264_psnr.mkv\n$ ffmpeg -i x264_psnr.mkv -i source.mkv -lavfi "ssim;[0:v][1:v]psnr" -f null -\n\nSSIM Y:0.993020 (21.561526) U:0.988144 (19.260510) V:0.989391 (19.743134) All:0.991602 (20.758494)\nPSNR y:44.739910 u:46.548467 v:47.379091 average:45.358051 min:39.754114 max:inf\n\n<\/pre>\n\n\n

Nast\u0119pnie zaj\u0105\u0142em si\u0119 x265<\/strong> i otrzyma\u0142em wynik PSNR: 45.347 i SSIM:0.9919<\/p>\n\n\n

\n$ ffmpeg -i source.mkv -c:v libx265 -tune psnr -crf 20.7 x265_psnr.mkv\n$ ffmpeg -i x265_psnr.mkv -i source.mkv -lavfi "ssim;[0:v][1:v]psnr" -f null -\n\nSSIM Y:0.992588 (21.300356) U:0.990183 (20.080185) V:0.990867 (20.393656) All:0.991900 (20.915107)\nPSNR y:44.520794 u:47.337848 v:48.110384 average:45.347215 min:40.447379 max:inf\n<\/pre>\n\n\n

Na koniec AV1<\/strong> gdzie PSNR:45.361 i SSIM:0.9920<\/p>\n\n\n

\n$ ffmpeg -i source.mkv -c:v libaom-av1 -row-mt 1 -tiles 8x4 -crf 25 -strict experimental AV1_psnr.mkv\n$ ffmpeg.exe -i AV1_psnr.mkv -i source.mkv -lavfi "ssim;[0:v][1:v]psnr" -f null -\n\nSSIM Y:0.996144 (24.138723) U:0.994546 (22.632922) V:0.994623 (22.694995) All:0.992024 (23.589543)\nPSNR y:45.340784 u:45.142517 v:45.210798 average:45.361 min:43.819632 max:inf\n<\/pre>\n\n\n

Podsumujmy jako\u015b\u0107 video przy kompresji stratnej<\/h2>\n\n\n\n
Kodek<\/td>PSNR\/SSIM<\/td>Obj\u0119to\u015b\u0107<\/td>CRF<\/td><\/tr>
\u017ar\u00f3d\u0142o (x265)<\/td>PSNR:inf.
SSIM: 1.0<\/td>
108,683,556 bajt\u00f3w<\/td>0 (lossless)<\/td><\/tr>
x264<\/td>PSNR:45.358
SSIM:0.9916<\/td>
6,628,297 bajt\u00f3w<\/td>21.6<\/td><\/tr>
x265<\/td>PSNR:45.347
SSIM:0.9919<\/td>
5,518,725 bajt\u00f3w<\/td>20.7<\/td><\/tr>
VP9<\/td>PSNR:45.321
SSIM:0.9924<\/td>
4,285,884 bajt\u00f3w<\/td>32.0<\/td><\/tr>
AV1<\/td>PSNR:45.361
SSIM:0.9920<\/td>
3,321,936 bajt\u00f3w<\/td>25<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n

\u0141atwo zauwa\u017cy\u0107 \u017ce pomi\u0119dzy x264 a AV1 jest r\u00f3\u017cnica wielko\u015bci pliku na poziomie 50% przy zachowaniu bardzo zbli\u017conej jako\u015bci. Jest to fantastyczny wynik, gdyby nie to, \u017ce kodowanie x264 czy x265 liczy\u0142em w minutach, a dla tego samego materia\u0142u w AV1 by\u0142y to dos\u0142ownie godziny.<\/p>\n\n\n\n

<\/p>\n\n\n\n

<\/p>\n","protected":false},"excerpt":{"rendered":"

Du\u017co pracuj\u0119 z video i zawsze na pierwszym miejscu jest u mnie jako\u015b\u0107 materia\u0142u. Najch\u0119tniej pracowa\u0142bym na kompresji bezstratnej (lossless), […]<\/p>\n","protected":false},"author":2,"featured_media":561,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[74],"tags":[70,71,72,73,69,67,68],"class_list":["post-501","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-video","tag-av1","tag-ffmpeg","tag-kompresja","tag-video","tag-vp9","tag-x264","tag-x265"],"yoast_head":"\nJako\u015b\u0107 video po kompresji czyli PSNR i SSIM - Flexray<\/title>\n<meta name=\"description\" content=\"Kompresja stratna obni\u017ca jako\u015b\u0107 video i redukuje wielko\u015b\u0107 pliku. Identyczne pliki powinny mie\u0107 SSIM=1.0 i PSNR=inf. Opcje kodek\u00f3w wp\u0142ywaj\u0105 na utrat\u0119 jako\u015bci\" \/>\n<meta name=\"robots\" content=\"index, follow\" \/>\n<meta name=\"googlebot\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta name=\"bingbot\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/flexray.pl\/jakosc-video-po-kompresji-czyli-psnr-i-ssim\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Jako\u015b\u0107 video po kompresji czyli PSNR i SSIM - Flexray\" \/>\n<meta property=\"og:description\" content=\"Kompresja stratna obni\u017ca jako\u015b\u0107 video i redukuje wielko\u015b\u0107 pliku. Identyczne pliki powinny mie\u0107 SSIM=1.0 i PSNR=inf. Opcje kodek\u00f3w wp\u0142ywaj\u0105 na utrat\u0119 jako\u015bci\" \/>\n<meta property=\"og:url\" content=\"http:\/\/flexray.pl\/jakosc-video-po-kompresji-czyli-psnr-i-ssim\/\" \/>\n<meta property=\"og:site_name\" content=\"Flexray\" \/>\n<meta property=\"article:published_time\" content=\"2020-07-17T05:53:50+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-07-17T06:08:12+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/flexray.pl\/wp-content\/uploads\/2020\/07\/big-buck-bunny.png\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"600\" \/>\n<meta name=\"twitter:card\" content=\"summary\" \/>\n<meta name=\"twitter:creator\" content=\"@flexray\" \/>\n<meta name=\"twitter:site\" content=\"@flexray\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"http:\/\/flexray.pl\/#website\",\"url\":\"http:\/\/flexray.pl\/\",\"name\":\"Flexray\",\"description\":\"IT Services and Consulting\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"http:\/\/flexray.pl\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pl-PL\"},{\"@type\":\"ImageObject\",\"@id\":\"http:\/\/flexray.pl\/jakosc-video-po-kompresji-czyli-psnr-i-ssim\/#primaryimage\",\"inLanguage\":\"pl-PL\",\"url\":\"http:\/\/flexray.pl\/wp-content\/uploads\/2020\/07\/big-buck-bunny.png\",\"width\":800,\"height\":600,\"caption\":\"jako\\u015b\\u0107 video big-buck-bunny\"},{\"@type\":\"WebPage\",\"@id\":\"http:\/\/flexray.pl\/jakosc-video-po-kompresji-czyli-psnr-i-ssim\/#webpage\",\"url\":\"http:\/\/flexray.pl\/jakosc-video-po-kompresji-czyli-psnr-i-ssim\/\",\"name\":\"Jako\\u015b\\u0107 video po kompresji czyli PSNR i SSIM - Flexray\",\"isPartOf\":{\"@id\":\"http:\/\/flexray.pl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\/\/flexray.pl\/jakosc-video-po-kompresji-czyli-psnr-i-ssim\/#primaryimage\"},\"datePublished\":\"2020-07-17T05:53:50+00:00\",\"dateModified\":\"2020-07-17T06:08:12+00:00\",\"author\":{\"@id\":\"http:\/\/flexray.pl\/#\/schema\/person\/5c55106ae0528899700cd7b427cdd780\"},\"description\":\"Kompresja stratna obni\\u017ca jako\\u015b\\u0107 video i redukuje wielko\\u015b\\u0107 pliku. Identyczne pliki powinny mie\\u0107 SSIM=1.0 i PSNR=inf. Opcje kodek\\u00f3w wp\\u0142ywaj\\u0105 na utrat\\u0119 jako\\u015bci\",\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/flexray.pl\/jakosc-video-po-kompresji-czyli-psnr-i-ssim\/\"]}]},{\"@type\":[\"Person\"],\"@id\":\"http:\/\/flexray.pl\/#\/schema\/person\/5c55106ae0528899700cd7b427cdd780\",\"name\":\"Maciej Stopa\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"http:\/\/flexray.pl\/#personlogo\",\"inLanguage\":\"pl-PL\",\"url\":\"http:\/\/0.gravatar.com\/avatar\/fc9e5f87bff4fd721f9f5c790edb2483?s=96&d=mm&r=g\",\"caption\":\"Maciej Stopa\"},\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/maciejstopa\",\"https:\/\/twitter.com\/flexray\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","_links":{"self":[{"href":"http:\/\/flexray.pl\/wp-json\/wp\/v2\/posts\/501"}],"collection":[{"href":"http:\/\/flexray.pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/flexray.pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/flexray.pl\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/flexray.pl\/wp-json\/wp\/v2\/comments?post=501"}],"version-history":[{"count":58,"href":"http:\/\/flexray.pl\/wp-json\/wp\/v2\/posts\/501\/revisions"}],"predecessor-version":[{"id":560,"href":"http:\/\/flexray.pl\/wp-json\/wp\/v2\/posts\/501\/revisions\/560"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/flexray.pl\/wp-json\/wp\/v2\/media\/561"}],"wp:attachment":[{"href":"http:\/\/flexray.pl\/wp-json\/wp\/v2\/media?parent=501"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/flexray.pl\/wp-json\/wp\/v2\/categories?post=501"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/flexray.pl\/wp-json\/wp\/v2\/tags?post=501"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}