Streaming i 4K är den nya normen, men med information för mer än 8,2 miljoner pixlar som sänds var 16:e millisekund – att lagra och överföra 4K-video på internet är ingen lätt uppgift.
En två timmar lång film skulle få över 1,7 terabyte lagringsutrymme när den okomprimerades. Så, hur lyckas streamingjättar som YouTube och Netflix lagra och strömma videor som tar så mycket utrymme?
Det gör de inte eftersom de använder videocodec för att minska storleken på filmer, men vad är en videocodec och vilken är bäst?
Vad är en videocodec?
Innan du dyker djupt in i komplexiteten med videocodecs är det viktigt att förstå hur en video skapas. Enkelt uttryckt är video inget annat än en uppsättning stillbilder som snabbt ersätter varandra.
På grund av denna höga växlingshastighet tror den mänskliga hjärnan att bilderna rör sig, vilket skapar en illusion av att titta på en video. Därför, när du tittar på en video i 4K, tittar du bara på en uppsättning bilder med en upplösning på 2160x3840. Denna höga upplösning av bilder gör att en video som är tagen i 4K ger en fantastisk videoupplevelse. Som sagt, denna höga upplösning av bilder ökar storleken på videon, vilket gör det omöjligt att streama över kanaler med begränsad bandbredd, som internet.
För att lösa detta problem har vi videocodec. Förkortning för coder/decoder eller compression/decompression, en videocodec komprimerar strömmen av bilder till databitar. Denna komprimering kan antingen minska kvaliteten på videon eller inte ha någon effekt på den baserat på de använda komprimeringsalgoritmerna.
Som namnet antyder minskar komprimeringsbiten i en codec storleken på varje bild. För att göra detsamma utnyttjar komprimeringsalgoritmen nyanserna i det mänskliga ögat – vilket hindrar människor från att veta att videorna de tittar på är komprimerade.
Dekompressionen, tvärtom, fungerar motsatt och renderar videon med hjälp av den komprimerade informationen.
Även om codecs gör ett bra jobb när det gäller att komprimera information, kan det vara belastande för din CPU att utföra samma sak. På grund av detta är det normalt att se fluktuationer i systemets prestanda när du kör videokomprimeringsalgoritmer på ditt system.
För att lösa detta problem kommer CPU: er och GPU: er med speciell hårdvara som kan köra dessa komprimeringsalgoritmer. Gör det möjligt för CPU: n att utföra uppgifterna till hands medan den dedikerade hårdvaran bearbetar videokodekarna, vilket förbättrar effektiviteten.
Hur fungerar en videocodec?
Nu när vi har en grundläggande förståelse för vad en videocodec gör, kan vi titta på hur en codec fungerar.
Chroma Subsampling
Som förklarats tidigare består videor av bilder och chroma subsampling minskar informationen i varje bild. För att göra detta minskar den färginformationen i varje bild, men hur upptäcks denna minskning av färginformation av det mänskliga ögat?
Jo, du förstår, mänskliga ögon är bra på att upptäcka förändringar i ljusstyrka, men detsamma kan inte sägas om färger. Detta beror på att det mänskliga ögat har fler stavar (fotoreceptorceller som är ansvariga för att upptäcka förändringar i ljusstyrka) jämfört med koner (fotoreceptorceller som är ansvariga för att differentiera färger). Skillnaden i stavar och kottar hindrar ögonen från att upptäcka färgförändringar när man jämför komprimerade och okomprimerade bilder.
För att utföra chroma subsampling konverterar videokomprimeringsalgoritmen pixelinformationen i RGB till ljusstyrka och färgdata. Därefter minskar algoritmen mängden färg i bilden baserat på komprimeringsnivåer.
Ta bort redundant raminformation
Videor består av flera bildrutor, och i de flesta fall innehåller alla dessa ramar samma information. Föreställ dig till exempel en video med en person som talar mot en fast bakgrund. I ett sådant fall har alla bildrutor i videon en liknande sammansättning. Därför behövs inte alla bilder för att rendera videon. Allt vi behöver är en basbild som innehåller all information och data relaterad till förändringar när man flyttar från en bildruta till en annan.
För att reducera videostorleken delar komprimeringsalgoritmen upp videoramarna i I- och P-ramar (förutspådda bildrutor). Här är I-ramar grundsanningen och används för att skapa P-ramar. P-ramarna renderas sedan med användning av informationen i I-ramarna och ändringsinformationen för den specifika ramen. Med den här metoden bryts en video upp i en uppsättning I-ramar sammanflätade i P-ramar och komprimerar videon ytterligare.
Rörelsekompression
Nu när vi har delat upp videon i I- och P-ramar måste vi titta på rörelsekompression. En del av videokomprimeringsalgoritmen som hjälper till att skapa P-bildrutorna med I-bildrutorna. För att göra detta bryter komprimeringsalgoritmen I-ramen i block som kallas makroblock. Dessa block ges sedan rörelsevektorer som definierar riktningen i vilken dessa block rör sig när de övergår från en ram till en annan.
Denna rörelseinformation för varje block hjälper videokomprimeringsalgoritmen att förutsäga varje blocks plats i en kommande bildruta.
Ta bort högfrekvent bilddata
Precis som förändringar i färgdata kan det mänskliga ögat inte upptäcka subtila förändringar i högfrekventa element i en bild, men vad är högfrekventa element? Jo, du förstår, bilden som renderas på din skärm består av flera pixlar, och värdena för dessa pixlar ändras baserat på bilden som visas.
I vissa delar av bilden ändras pixelvärdena gradvis, och sådana områden sägs ha en låg frekvens. Å andra sidan, om det sker en snabb förändring i pixeldata, kategoriseras området som att ha högfrekventa data. Videokomprimeringsalgoritmer använder den diskreta kosinustransformen för att reducera högfrekvenskomponenten.
Så här fungerar det. Först körs DCT-algoritmen på varje makroblock och detekterar sedan de områden där förändringen i pixelintensitet är mycket snabb. Den tar sedan bort dessa datapunkter från bilden – vilket minskar storleken på videon.
Kodning
Nu när all redundant information i videon har tagits bort kan vi lagra de återstående databitarna. För att göra detta använder videokomprimeringsalgoritmen ett kodningsschema som Huffman-kodning, som länkar alla databitar i en bildruta till antalet gånger de förekommer i videon och kopplar dem sedan på ett trädliknande sätt. Denna kodade data lagras i ett system, vilket gör att det enkelt kan rendera en video.
Olika videocodecs använder olika tekniker för att komprimera videor, men på en mycket grundläggande nivå använder de de fem grundläggande metoderna som definieras ovan för att minska storleken på videor.
AV1 vs. HEVC vs. VP9: Vilken codec är bäst?
Nu när vi förstår hur codecs fungerar kan vi avgöra vilket som är bäst av AV1, HEVC och VP9.
Kompressibilitet och kvalitet
Om du har en 4K-video som tar upp mycket utrymme på ditt system och inte kan ladda upp den till din favoritströmningsplattform, kanske du letar efter en videocodec som erbjuder den bästa komprimeringen förhållande. Men du måste också tänka på att kvaliteten som den levererar minskar när du fortsätter att komprimera videon. När du väljer en komprimeringsalgoritm är det därför viktigt att titta på kvaliteten som den levererar vid en viss bithastighet, men vad är bithastigheten för en video?
Enkelt uttryckt definieras bithastigheten för en video som antalet bitar som videon behöver spela upp i en sekund. Till exempel har en 24-bitars okomprimerad 4K-video som körs med 60 bildrutor en bithastighet på 11,9 Gb/s. Därför, om du streamar en okomprimerad 4K-video på internet, måste din Wi-Fi leverera 11,9 gigabit data varje sekund, vilket tar ut din månatliga datakvot på några minuter.
Att använda en komprimeringsalgoritm minskar tvärtom bithastigheten till en mycket liten mängd baserat på den bithastighet du väljer utan att försämra kvaliteten.
När det gäller siffror för kompressibilitet/kvalitet är AV1 ledande och erbjuder 28,1 procent bättre kompression jämfört med H.265 och 27,3 procents besparing jämfört med VP9 samtidigt som den levererar liknande kvalitet.
Därför, om du letar efter den bästa kompressionen utan kvalitetsförsämring, är AV1 kompressionsförhållandet för dig. På grund av det stora komprimerings-till-kvalitetsförhållandet för AV1-codec, används den av Google i sin videokonferensapplikation Google Duo och genom att Netflix medan du överför video på en dataanslutning med låg bandbredd.
Kompatibilitet
Som förklarats tidigare kodar en videokomprimeringsalgoritm en video när den väl har komprimerats. För att spela upp den här videon måste din enhet avkoda densamma. Därför, om din enhet inte har stöd för hårdvara/mjukvara för att dekomprimera en video, kommer den inte att kunna köra den.
Därför är det viktigt att förstå kompatibilitetsaspekten av en komprimeringsalgoritm för vad är poängen med att skapa och komprimera innehåll som inte kan köras på många enheter?
Så om kompatibilitet är något du letar efter, så borde VP9 vara codec för dig som den stöds på över två miljarder slutpunkter och kan köras på alla webbläsare, smartphones och smarta enheter TV.
Detsamma kan inte sägas om AV1 eftersom den använder nyare, mer komplexa algoritmer för att minska filstorleken på en video och inte kan spelas upp på äldre enheter. När det gäller webbläsarstöd kan Safari inte spela AV1, men webbläsare som Firefox och Chrome kan spela AV1-videor utan problem.
När det gäller hårdvarustöd, nya SoC: er och GPU: er som Snapdragon 8 Gen 2, Samsung Exynos 2200, MediaTek Dimensity 1000 5G, Google Tensor G2, Nvidias RTX 4000-serie och Intel Xe och Arc GPU stöder accelererad hårdvaruavkodning för AV1-codec. Därför, om du äger enheter som drivs av dessa styrkretsar, kan du njuta av strömmande innehåll komprimerat med AV1-codec utan att tömma dina CPU: er/GPU: er.
När det kommer till H.265-codec kan de flesta populära webbläsare som Safari, Firefox och Google Chrome köra videor kodade med hjälp av komprimeringsalgoritmen utan problem. Som sagt, jämfört med AV1 och VP9, är H.265 inte öppen källkod, och licenser måste införskaffas för att använda H.265-codec. Av denna anledning kan appar som Microsofts film- och TV-videospelare, som följer med operativsystemet, inte köra videor som kodats med H.265 som standard. Istället måste användare installera ytterligare tillägg från Windows-butiken för att köra sådana videor.
Kodningshastighet
Videocodecs minskar storleken på en video avsevärt, men för att minska storleken på en video måste den okomprimerade videon bearbetas med programvara, vilket tar tid. Därför, om du vill minska storleken på en video, måste du titta på den tid det tar att komprimera videon med hjälp av en komprimeringsalgoritm.
När det gäller kodningseffektivitet är VP9 ledande, och kodningstiden för att komprimera videor är mycket lägre än H.265 och AV1. AV1, å andra sidan, är den långsammaste i kodningstid och kan ta över tre gånger längre tid att koda en video jämfört med H.265.
Vilken codec ska du välja?
När det kommer till video-codec är det väldigt subjektivt att hitta den perfekta codec, eftersom varje codec erbjuder olika funktioner.
Om du letar efter den bästa videokvaliteten, välj AV1. Å andra sidan, om du letar efter den mest kompatibla videocodec, skulle VP9 vara den bästa passformen för dig.
Slutligen är H.265-codec en perfekt passform om du behöver bra kvalitet och komprimering utan kodningskostnader.