Ramtyper i en komprimerad videoström är metoder för att koda och lagra information om nästa bildruta , som skiljer sig från varandra i närvaro eller frånvaro av beroenden av denna bildruta på tidigare och efterföljande.
En ram är den grundläggande kodningsstrukturen. Följande parametrar är associerade med en ram: tid, ramtyp, buffertinitieringsflagga, upplösning av rörelsevektorer och deras ordning samt användardata
Vanligtvis är en ram uppdelad i kvadratiska makroblock och länktypen för vart och ett av makroblocken bestäms individuellt, men med en begränsning som ges av typen av hela ramen:
Den nya MPEG-4 AVC/H.264-standarden introducerar också konceptet med SI- och SP-ramar .
I-ramar kodas på samma sätt som JPEG -ramar . I varianten av algoritmen där det bara finns I-frames konverteras videosekvensen till M-JPEG . I-frames kan användas för slumpmässig åtkomst eftersom de inte kräver ytterligare information. I-ramar har det lägsta kompressionsförhållandet.
P-ramar kodas med hjälp av tidigare I- och P-ramar. Till exempel, en ram som omedelbart följer en I-frame använder den oförändrade informationen från den I-ramen och fyller den med sin inter-frame-skillnad. Om denna P-ram följs av en annan P-ram, så tar den i sin tur den oförändrade informationen från den tidigare P-ramen (som i sin tur använde den oförändrade I-raminformationen) och kompletterar den med sin skillnad mellan ramarna.
B-ramar används som en interpolation mellan föregående och följande ramar av både I- och P-typer.
MPEG-1 har en unik ramtyp som inte finns i senare videostandarder. D-ramar refereras aldrig till med I-, P- eller B-ramar. D-frames används bara för snabba videoförhandsvisningar, till exempel när du snabbt söker efter ett önskat videosegment.
Med lite bättre avkodningshårdvara kan förhandsgranskning göras genom att avkoda I-frames istället för D-frames. Detta ger en bättre förhandsvisning eftersom I-frames komprimeras med mindre förlust. Om kodaren kan anta att snabb avkodning av I-frames är tillgänglig i avkodare, kan den spara bitar genom att inte skicka D-frames (och därmed förbättra videoinnehållskomprimeringen). Av denna anledning används D-frames sällan i MPEG-1-videokodning, och D-frame-funktionen har inte inkluderats i några senare videokodningsstandarder.
En grupp bilder (GOP) är den minsta oberoende kodningsstrukturen i en videosekvens. Slumpmässig åtkomst till videosekvensen är möjlig upp till en grupp bildrutor. Den ramgruppsrelaterade informationen inkluderar tidskod, stängd flagga och användarinformation.
GOP-strukturen betecknas ofta med två siffror, såsom M = 3, N = 12. Den första siffran anger avståndet mellan två ankarramar (I eller P). Den andra talar om avståndet mellan två kompletta bilder (I-frames): detta är storleken på GOP. Till exempel M = 3, N = 12, GOP-strukturen är IBBBPBBPBBPBBI. Istället för M-parametern kan du använda det maximala antalet B-ramar mellan två på varandra följande ankarramar.
Till exempel, i en sekvens med mönstret IBBBPBBBBPBBBBBI, är GOP-storleken ( N-värde ) 15 (längden mellan två I-ramar) och avståndet mellan två ankarramar ( M-värde ) är 5 (längden mellan I- och P-ramar, eller längden mellan två på varandra följande P-ramar).
I videoströmmens MJPEG- och DV - codec är alla bildrutor av I-typ.
Familjen MPEG4-codecs av den "tredje versionen" (den mest populära var DivX 3.11, DivX 4.12 och OpenDivX är också kända) har två typer av ramar - I och P. B-ramar tillhandahålls inte. Situationen är densamma i familjen av codecs från On2 : VP3 , VP6 , VP8 .
Dessutom har många moderna codecs möjliga inställningar som stänger av skapandet av B-ramar för att minska kostnaden för processorkraft för realtidsbehandling.
Standarderna för videokomprimering som antagits av ITU-T VCEG och ISO / IEC MPEG komprimerar vanligtvis bara skillnaden mellan bildrutor. Till exempel, i en scen där en person går mot en bakgrund av stationära föremål, krävs det att endast spara information om förändrade områden (till exempel med hjälp av rörelsekompensation , som sparar blockpositionsändringsvektorn eller, om ett liknande område inte är som finns i föregående bildruta, komprimeras detta område som en oberoende bild). Delar av scenen som inte ändras sparas inte i strömmen, vilket kraftigt ökar komprimeringsförhållandet jämfört med format som använder oberoende komprimering av varje bildruta.
Till exempel, för I- och P-ramar i strömmen, bildas IPPPPPPPPPPPPP...- kedjor när den första ramen komprimeras oberoende, och efterföljande komprimeras med referens till den första ramen. Detta är det enklaste exemplet på att använda olika typer av ramar i en ström.
Medan den största fördelen med att använda P-ramar är ökningen av kompressionsförhållandet, är deras största nackdel den dramatiskt ökande ramåtkomsttiden, eftersom hela kedjan av ramar från närmaste I-frame måste dekomprimeras helt för att erhålla den önskade ramen. I synnerhet, om komprimeringen har ställts in på parametrar som maximerar komprimeringsförhållandet, så att I-ramar är sällsynta, kan fördröjningstiden för att visa en godtycklig ram i strömmen vara mycket märkbar.
I en ström komprimerad av en videocodec enligt MPEG-2 , MPEG-4 , H.261 , H.263 och H.264 standarder används tre huvudtyper av ramar : I-frames (från engelska Intra pictures ), P -frames (från Predicted pictures ) och B-frames (från Bi-predictive pictures eller Bi-directional pictures ).
Användningen av B-ramar innebär att en given ram refererar till två intilliggande I- eller P-ramar i strömmen, i vilket fall ramkedjan kan se ut så här: IBPBPBPBPBPBPBPBP . Mer vanligt förekommande kedjor är IBBBPBBPBBPBBPBBPBBPBBPBBP, där B-ramar fortfarande hänvisar till de två närmaste intilliggande I- eller P-ramarna och är oberoende av varandra.
Denna struktur gör det möjligt att snabba upp tiden för att erhålla en godtycklig ram i strömmen med 2–3 gånger, eftersom det för att erhålla det är nödvändigt att packa upp endast varannan (tredje) bildruta (som är en P-ram ), med början från I-ramen. Dessutom ökar hastigheten för "spolning framåt med showen" flera gånger.
Xvid- codec , med lämpliga inställningar, låter dig få 4 eller fler B-ramar i rad. Och en sådan ström kommer att reproduceras korrekt av sig själv, såväl som av ffdshow- avkodaren . Vissa avkodare kan inte korrekt återge mer än en B-bildruta i rad.[ betydelsen av faktum? ]
_ | Kompressionsmetoder|||||||
---|---|---|---|---|---|---|---|
Teori |
| ||||||
Förlust mindre |
| ||||||
Audio |
| ||||||
Bilder |
| ||||||
Video |
|