Videokoodekit vertailussa, miten avoimet pakkaajat ja purkajat pärjäävät?

28.09.2015 21:06 | Petrus Laine | 18

Videokoodekkien maailmassa taistelevat tällä hetkellä lähinnä H.264, H.265 eli HEVC ja Googlen VP9. H.265 ja VP9 kuuluvat kumpikin ns. uusimman sukupolven koodekeihin, joiden luvataan tarjoavan huomattavasti parempaa laatua aiempiin verrattuna, kun videon bitrate on sama.

GNOME:n eli GNU Network Object Model Enviromentin, Linuxin suositun käyttöliittymän kehittäjiin kuuluva Ronald Bultje on pistänyt nyt suositus videokoodekit riviin, ja testannut paljonko uusista koodekeista todellisuudessa onkaan hyötyä. Videoiden pakkaajina käytettiin avoimen lähdekoodin vaihtoehtoja, eli VP9:lle libvpx:ää, H.264:lle x264:ää ja H.265:lle x265:ttä.

Ensimmäinen testi on videon laatu tietyllä bitratella. Laadun mittarina Bultje käytti SSIM:iä eli Structural similarityä. Uudet koodekit täyttävät laatulupauksensa ainakin suurin piirtein, bitraten keskivaiheilla vajaassa 2000 Kbps:ssä ero uusien koodekkien eduksi on vajaa 50 %. Mitä pienempi bitrate, sitä paremmin uudet koodekit suoriutuvat H.264:ään verrattuna. H.265 ja VP9 ovat varsin tasaväkisiä bitratesta riippummatta.

Laadulla on kuitenkin hintansa, kuten käy ilmi videon pakkauksen nopeustestissä. Uudet koodekit ovat 10 – 20 kertaa hitaampia pakattavia kuin H.264. Mikäli pakkaukseen käytetyllä ajalla on merkitystä, H.264 voi tarjota jopa parempaa laatua kuin kilpailijansa.

Videoiden purkunopeus riippuu huomattavasti käytetystä videokoodekin purkuohjelmistosta. Bultje vertaili avoimen lähdekoodin ffh264:ää, ffvp9:iä, libvpx-vp9:iä, ffhevciä ja openhevciä keskenään. Alustana oli Intelin Sandy Bridge -arkkitehtuuria käyttävä tarkemmin määrittelemätön prosessori 3,4 GHz:n kellotaajuudella ja Ubuntu 12 -käyttöjärjestelmä. Videot oli pakattu siten, että niiden laatu vastasi toisiaan bitraten sijasta.

Testatuista koodekeista nopein oli ffvp9, joka peittosi noin 115 FPS:n tuloksellaan ffh264:n noin 5 prosentilla. libvpx-vp9 sai tuloksekseen vajaat 90 FPS, openhevc reilu 80 FPS ja ffhevc noin 70 FPS. Koodekeista libvpx-vp9 ei hyödy käytännössä lainkaan useammasta prosessorisäikeestä, mutta muilla koodekeilla suorituskyky kasvaa suurin piirtein lineaarisesti kun säikeiden määrää nostetaan.

Ronald S. Bultje, VP9 encoding/decoding performance vs. HEVC/H.264

Phoronix, How VP9 Video Encode/Decode Compares To H.264/H.265

Keskustelu

Artikkelista lainattua: "Uudet koodekit täyttävät laatulupauksensa ainakin suurin piirtein, bitraten keskivaiheilla vajaassa 2000 Kbps:ssä ero uusien koodekkien eduksi on vajaa 50 %".

Millä kaavalla em. ero lieneekään laskettu, kun ao. kuviossa ero ko. bitratella on absoluuttisesti alle 1 db, ja suhteellisesti n. 18,2/17,5 eli prosenteissa uudemmat koodekit ovat vain n. 5% parempia.

tyyta

Artikkelista lainattua: "Uudet koodekit täyttävät laatulupauksensa ainakin suurin piirtein, bitraten keskivaiheilla vajaassa 2000 Kbps:ssä ero uusien koodekkien eduksi on vajaa 50 %".

Millä kaavalla em. ero lieneekään laskettu, kun ao. kuviossa ero ko. bitratella on absoluuttisesti alle 1 db, ja suhteellisesti n. 18,2/17,5 eli prosenteissa uudemmat koodekit ovat vain n. 5% parempia.

H.264 tarvitsee vajaa 50% korkeamman bitraten saadakseen samanlaatuista videota

tyyta

Artikkelista lainattua: "Uudet koodekit täyttävät laatulupauksensa ainakin suurin piirtein, bitraten keskivaiheilla vajaassa 2000 Kbps:ssä ero uusien koodekkien eduksi on vajaa 50 %".

Millä kaavalla em. ero lieneekään laskettu, kun ao. kuviossa ero ko. bitratella on absoluuttisesti alle 1 db, ja suhteellisesti n. 18,2/17,5 eli prosenteissa uudemmat koodekit ovat vain n. 5% parempia.

Kuviossa on logaritminen asteikko

Ja missä viipyy vertailu hi10bit ja standardi 8bit välillä? Ja pyysin jo useampi kuukausi sitten ylläpidolta että tilini ja viestini poistettaisiin mutta ei taida ylläpitö lukea viestejään kovin tarkasti?

Kaotika

H.264 tarvitsee vajaa 50% korkeamman bitraten saadakseen samanlaatuista videota

Tästä ei voi olla kyse, sillä artikkelissa on asetettu vertailukohdaksi kiinteä 2000 Kbps bitrate.

^^ Logaritminen bitrate asteikko on x-akselilla. Kuvanlaatu y-akselilla. Kun kuvanlaatu on sama, bitrate on 50% korkeampi x264:llä versus x265.

Crom

Kuviossa on logaritminen asteikko

Tästäkään ei voi olla kyse, sillä kuviion perusteella ero 2000 Kbps kohdalla on vain n. 0,7 dB uudempien koodekkien eduksi, mutta yhdenkin desibelin ero tarkoittaisi vain n. 1,26 kertaista tehollista arvoa, eli vain n. 26%:n paremmuutta (https://en.wikipedia.org/wiki/Decibel).

Nut

^^ Logaritminen bitrate asteikko on x-akselilla. Kuvanlaatu y-akselilla. Kun kuvanlaatu on sama, bitrate on 50% korkeampi x264:llä versus x265.

Tämä, eli alla vielä tuolta lähteestä pitempi selitys.

Artikkelin lähde

So, we typically try to estimate how much more bits “blue” needs to accomplish the same quality as (e.g.) “red”, by comparing an actual point of red to an interpolated point (at the same SSIM score) of the blue line. For example, the red point at 1960kbps has an SSIM score of 18.16. The blue line has two points at 17.52 (1950) and 18.63 (3900kbps). Interpolation gives an estimated point for SSIM=18.16 around 2920kbps, which is 49% larger. So, to accomplish the same SSIM score (quality), x264 needs 49% more bitrate than libvpx. Ergo, libvpx is 49% better than x264 at this bitrate, this is called the bitrate improvement (%). x265 gets approximately the same improvement over x264 as libvpx at this bitrate.

Mikäli videota ei tuijota kännykän tai tabletin pikkuruudusta, bittivirran pitää olla reippaasti yli 10 000 kbps ja silloin ero vanhaan H.264 pakkaajaan kutistuu paljon. Hyvin pakattu Blu-ray on aina yli 20 000 kbps, joten mitä H.265 voisi siellä tarjota? Käsittääkseni H.265 suoriutuu paljon paremmin kun videon tarkkuus on 4K

Videon sisältö myös ratkaisee. Puhdas digitaalinen piirretty pakkautuu huimasti hyvällä laadulla ja tuollaisessa 10-bittinen H.264 auttaa kaikista parhaiten, kun taas vaikein video olisi paljon kohinaa sisältävä, koska kohinassa on paljon tapahtuvia muutoksia.

Miksei artikkelissa puhuta ollenkaan videon vaatimasta tilasta? X265 on tehty juurikin sitä varten että se vie kovolta vähemmän tilaa ja streamauksessa vähemmän kaistaa kuvan laadun pysyessä about x264:n kanssa about samoissa.

Laadulla on kuitenkin hintansa, kuten käy ilmi videon pakkauksen nopeustestissä. Uudet koodekit ovat 10 – 20 kertaa hitaampia pakattavia kuin H.264.

Graafinen esitys asiasta näyttäisi kertovan, että kun puhutaan suurimmasta bittinopeuden parannuksesta, joka H.264:llä on saavutettavissa, ovat VP9 ja H.265 yhtä nopeita kuin se. Vai ymmärsinkö kuvaajat tai asteikot (tai jotain muuta) väärin?

Eikö "bitrate" ole suomeksi "bittinopeus" (tässä asiayhteydessä)?

Ademeion: Bitrate kyllä tarkoittaa bittinopeutta, mutta muutta selvennätkö vielä tuota edeltävää kysymystä. Mitä tarkoitat nyt suurimmalla bittinopeuden parannuksella?

EDIT: Ilmeisesti meinaat tietyn mitatun kuvanlaadun saavuttamiseen tarvittavaa bittivirtaa? Eli siihen suhteutettuna VP9 koodekin tapauksessa on näin. h265 dekooderit eivät vielä nopeudessa pärjää h.264:lle ja VP9:lle ko. tapauksessa. Encooderit ovat sitten täysin oma lukunsa, jotka eivät millän mittarilla pärjää h.264:lle tällä hetkellä, eivätkä todennäköisesti tule koskaan pärjäämäänkään.

adder

Ademeion: Bitrate kyllä tarkoittaa bittinopeutta, mutta muutta selvennätkö vielä tuota edeltävää kysymystä. Mitä tarkoitat nyt suurimmalla bittinopeuden parannuksella?

Sekoilin "maallikkona" hiukan termien kanssa :-/ Jos tulkitsen artikkelin toista kuvaa oikein, niin lähtöarvoksi valitulla laadulla (0% pystyakselilla) kooderit ovat karkeasti ottaen yhtä nopeita, mutta kaikilla muilla laatutasoilla, joille löytyy mittausarvo sekä x264:lle että libvpx:lle, libvpx on x264:ää nopeampi. Tämän vuoksi on mielestäni harhaanjohtavaa sanoa, että uudet koodekit ovat 10–20 kertaa hitaammin pakattavia. Hitaus syntyy vasta silloin, kun mennään sellaisille pakkauksen laatutasoille, joihin x264 ei yllä. Silloinkin on hyvä huomata, että noin 30 %:n laatuparannus x264:n maksimilaatuun nähden näyttäisi olevan saavutettavissa libvpx:llä melko siedettävällä, ei lähimainkaan 10-kertaisella (oikeammin "kymmenesosaan") hidastumisella. Mikä on siedettävää riippuu tietysti käyttäjästä ja tilanteesta; moni ei kaipaa edes x264:n parasta pakkauslaatua.

The Stilt

VP9 kuoli siinä vaiheessa kun HEVC valittiin UHD Blu-Rayn formaatiksi, joten koodekilla ei ole oikein tulevaisuutta.
Puhdasta VP9 rautapurkua ei ole kukaan tainnut myöskään implementoida SoC ratkaisuiden ulkopuolelle (Tegra), kun sen sijaan HEVC rautapurku on tuettu AMD:lla, Intelillä ja nVidialla.

Uskoisin että youtubea katsotaan enemmän kuin blu-ray leffoja yhteensä, puhumattakaan UHD blu-raystä. Pakko tosin myöntää että todella ärsyttävää ettei google ole tehnyt opencl purkajaa vp9:lle että olisi ainakin teoriassa mahdollisuus purkaa vp9 videot näyttiksellä.

VP9 ei kyllä ihan hetkeen katoa minnekkään, tähän suurin syy on omistaja, eli Google.

VP9 on Youtuben 4K codecci. He ovat sanoneet että "eivät sano että eivät tule koskaan tukemaan HEVC:tä", mutta tällä hetkellä ymmärtääkseni VP9 only.
Eli jos on 4k telkka jossa on youtube appina (lähes jokainen 4k smart telkka) niin se tekee VP9 kodekkia. Sony, LG, Samsung jne jne. ovat kaikki joko lisänneet tai demonstroineet VP9 tukea telkoissa.

Tämän lisäksi Google on laittanut VP9 vaatimukseksi kaikkiin telkkoihin jotka käyttää Android käyttöjärjestelmää, ja en ollenkaan ihmettelis jossei se vaatimus tulisi tulevaisuudessa myös puhelimien tiettyihin Android versioihin.

Tähän sitten lisäksi se että HEVC on tällä hetkellä kallis kodekki lisenssoida ja VP9 on ilmainen, ja kun Google painaa päälle niin voi olla satavarma että se ei ihan heti katoa.

Max-

Eli jos on 4k telkka jossa on youtube appina (lähes jokainen 4k smart telkka) niin se tekee VP9 kodekkia. Sony, LG, Samsung jne jne. ovat kaikki joko lisänneet tai demonstroineet VP9 tukea telkoissa.

Hyvä kysymys lienee myös, että miksi pitäisi väkisin palata CD ja DVD ajoille jolloin soittimet tukivat vain yhtä ainoaa oikeaa tiedostotyyppiä? Tai vielä paremmin vain ja ainoastaan yhtä levytyyppiä kuten DvD+ tai DvD- ? Tosiaan, onko se joltain muka pois, että älytelkkari tukisi muutamaa ylimääräistä ja vähän harvinaisempaakin tiedostomuotoa?

X264 ei poista kaista ongelmaa. Kun puhutaan Netflixin, HBOn, HULUn, Viaplayn jne. kaltaisista pelureista niin alempi bitrate ja/tai parempi laatu ovat erittäin tärkeitä asioita.

Myöskin lisenssointi on tärkeä huomioida. MPEG-LA ymmärtääkseni vaatii 0.20 dollaria per laite joka decodaa HEVC kodekkia. Tämän lisäksi on toinen patenttipooli joka haluaa vaatia 0.5% brutto tuloista jotka muodostuvat HEVC streamauksesta. Varsinkin tuo prosenttiosuus tuossa toisessa patenttipoolissa on myrkkyä isoille toimijoille kuten Netflixille. VP9 on ilmainen.

Taas SoC puolella niin esim. Nvidian Tegra X1 tukee jo täysin VP9 dekoodausta, ja ei ole ainoa. Kannattaa muistaa että esim. Sony on laittamassa 4K telkkansa AndroidOS:ää käyttämään, joka tarkoittaa että he tarvitsevat SoCit jotka tukee sitä. Eli kyllä siellä SoC valmistajat alkavat sitä tukemaan raudassa kun isot pelurit sitä vaativat. Myös Microsoft Edge tulee tukemaan VP9:ää tulevaisuudessa jne. Eli kyllä se ecosysteemi sielä kasvaa.

The Stilt

Tein mikkihiiritason vertailun uusimmilla versioilla X264, X265 ja VP9 koodekeista.

Mielenkiintoinen vertailu. Kun vertaan HEVC:in (H.265) ja VP9:n tuottamia 4K-resoluution kuvia toisiinsa, niin ne näyttävät tosiaankin jossain määrin erilaisilta, mutta myös aika lailla yhtä hyviltä. Toisaalta alkuperäiseen raw-kuvaan verrattuna näyttää VP9 kuitenkin mielestäni tuottavan hieman oikeamman lopputuloksen. Yksityiskohdat ovat enemmän kohdallaan, paitsi muodoltaan, myös väriensä puolesta. Ero on tosiaankin aika pieni, enkä tiedä huomaisinko sitä lainkaan liikkuvassa kuvassa.

Muropaketin uusimmat