Videoencoding (encoding) är processen att komprimera en digital videosignal till ett format som är lämpligt för lagring och överföring över nätverk med minimal kvalitetsförlust. Utan encoding tar en minut okomprimerad video i 4K-upplösning cirka 30 GB i anspråk, vilket gör överföring över internet omöjlig. Enligt Sandvine Global Internet Phenomena-rapporten (2025) utgör video 65% av all internettrafik, och encoding är nyckelteknologin som gör detta möjligt.
Sammanfattning
Videoencoding (encoding) är processen att omvandla en okomprimerad videosignal till digitalt format med hjälp av komprimeringsalgoritmer. Algoritmerna som implementeras i videocodecs tar bort redundant information både i den rumsliga domänen (inom en bildruta) och i den tidsmässiga domänen (mellan på varandra följande bildrutor).
Okomprimerad video är en sekvens av bildrutor, där varje bildruta lagras som en pixelmatris i RGB- eller YUV-format. Utan komprimering kräver en sekund 1080p-video vid 30 FPS cirka 1,5 GB minne. H.264-codecen komprimerar denna ström till 3–5 Mbit/s, vilket är 2500 gånger mindre än den ursprungliga volymen.
Videocodecs använder två typer av komprimering: intra-frame och inter-frame. Intra-frame-komprimering tillämpas på varje bildruta oberoende med hjälp av algoritmer som liknar JPEG: diskret cosinustransform (DCT), kvantisering och entropikodning.
Inter-frame-komprimering analyserar skillnaden mellan på varandra följande bildrutor och kodar endast förändringarna. Om bakgrunden är statisk skickar codecen den fullständiga bildrutan endast en gång (I-frame) och sedan endast skillnaden (P- och B-bildrutor), vilket avsevärt minskar datamängden för scener med låg dynamik.
Valet av videocodec bestämmer förhållandet mellan kvalitet och filstorlek, kompatibilitet med enheter och licensavgifter. På marknaden för mobila appar dominerar fyra huvudsakliga codecs: H.264 (AVC), H.265 (HEVC), VP9 och AV1.
| Codec | Standard | År | Komprimering vs H.264 | Licensiering |
|---|---|---|---|---|
| H.264/AVC | MPEG-4 Part 10 | 2003 | 1x (grundläggande) | Royaltybelagd (MPEG LA) |
| H.265/HEVC | MPEG-H Part 2 | 2013 | 40–50% effektivare | Royaltybelagd (två pooler) |
| VP9 | 2013 | 30–40% effektivare | Gratis | |
| AV1 | AOM | 2018 | 50–60% effektivare | Gratis (Royaltyfri) |
H.264 (AVC — Advanced Video Coding) förblir den mest kompatibla videocodecen: den stöds av alla mobila enheter, webbläsare och smart-TV sedan 2005. Hårdvaruacceleration av H.264-avkodning finns även på budgetenheter, vilket gör den idealisk för universell strömning.
Den största nackdelen med H.264 — relativt låg komprimeringseffektivitet jämfört med moderna codecs. Vid samma bitrate ger H.265 och AV1 märkbart högre kvalitet, vilket är särskilt viktigt för HDR- och 4K-innehåll.
H.265 (HEVC — High Efficiency Video Coding) ger 40–50% bättre komprimering än H.264 vid samma visuella kvalitet. Detta uppnås genom en mer flexibel uppdelning av bildrutan i block (CTU upp till 64×64 pixlar istället för 16×16) och förbättrade algoritmer för rörelseprediktion.
HEVC stöds på alla Apple-enheter (från iPhone 6), på Android (från version 5.0 med hårdvaruavkodning) och på de flesta smart-TV-apparater. Licensavgifterna för HEVC är högre än för H.264 och hanteras av två patentpooler, vilket komplicerar laglig användning.
AV1 — videocodec utvecklad av Alliance for Open Media (AOM), ett konsortium lett av Google, Netflix, Amazon, Intel och Mozilla. AV1 ger 50–60% bättre komprimering än H.264 och är helt royaltyfri, vilket gör den attraktiv för streamingtjänster.
Den största nackdelen med AV1 — hög beräkningskomplexitet vid kodning. AV1-kodning kan vara 5–10 gånger långsammare än H.264 på samma hårdvara, även om hårdvaruavkodning redan börjar dyka upp på enheter från 2024–2025 (Snapdragon 8 Gen 3, Apple A17 Pro).
Ljudcodecs i mobila appar är inte mindre viktiga än videocodecs. För videostreaming krävs ljud med minimal latens, hög kvalitet och kompatibilitet med MP4- och WebM-behållare. Tre huvudsakliga ljudcodecs täcker 99% av mobila streamingappar.
AAC (Advanced Audio Coding) — efterträdaren till MP3, utvecklad av MPEG 1997 och blev standard ljudcodec för iTunes, YouTube och Android. AAC ger samma kvalitet som MP3 vid 30% lägre bitrate och stöder flerkanaligt ljud upp till 7.1.
För mobila appar rekommenderas AAC-LC vid bitrate 128–192 kbps för stereo och AAC-HE för låga bitrates 32–64 kbps. Hårdvaruavkodning av AAC finns på alla moderna enheter, vilket minimerar energiförbrukningen.
Opus — öppen ljudcodec från IETF (RFC 6716), som ger bästa kvalitet bland alla ljudcodecs vid bitrates från 6 till 510 kbps. Opus kombinerar SILK (algoritm för tal) och CELT (för musik) och växlar automatiskt lägen beroende på innehåll.
Opus används i WebRTC för videosamtal, i apparna Spotify och Discord, och stöds i HLS från iOS 11 och Android 5.0. Opus låga latens (5–26 ms jämfört med 40–100 ms för AAC) gör den till det föredragna valet för livesändningar och videokonferenser.
Encodeparametrar bestämmer slutlig filstorlek, videokvalitet och kompatibilitet med enheter. Utvecklaren av en mobil app måste välja optimala inställningar för varje typ av innehåll: filmer, sportevenemang, användargenererat innehåll.
Bitrate — antalet bitar som används för att koda en sekund video. Man skiljer på CBR (Constant Bitrate) — konstant bitrate för livesändningar, VBR (Variable Bitrate) — variabel med målkvalitet för arkivlagring och ABR (Average Bitrate) — genomsnittlig för streaming.
| Upplösning | H.264 (rekommenderas) | H.265/HEVC | AV1 |
|---|---|---|---|
| 360p | 400–800 kbps | 250–500 kbps | 200–400 kbps |
| 720p | 1,5–4 Mbit/s | 1–2,5 Mbit/s | 0,8–2 Mbit/s |
| 1080p | 3–8 Mbit/s | 2–5 Mbit/s | 1,5–4 Mbit/s |
| 4K (2160p) | 15–40 Mbit/s | 10–25 Mbit/s | 8–20 Mbit/s |
CRF (Constant Rate Factor) — encodeparameter i x264 och x265 som ställer in målkvalitet istället för fast bitrate. CRF-skalan från 0 (förlustfri) till 51 (sämsta kvalitet), där 18–28 är arbetsområdet. För mobila appar rekommenderas CRF 23 för x264 och CRF 25 för x265.
CRF 18–20 ger hög kvalitet för presentationsinnehåll och offline-visning. CRF 24–28 passar för streaming och användargenererat innehåll, där filstorlek är viktigare än absolut kvalitet.
H.264-standarden definierar profiler (Baseline, Main, High) och nivåer (Level 1–5.2) som begränsar maximala videoparametrar. Baseline Profile är kompatibel med alla enheter men stöder inte B-bildrutor. High Profile ger maximal kvalitet och används för 1080p-innehåll.
För 4K-streaming krävs Level 5.1 och högre, vilket stöds av de flesta mobila enheter sedan 2018. Codec-nivån bestämmer maximal upplösning, bitrate och buffertstorlek, vilket garanterar korrekt avkodning på alla certifierade enheter.
Encoding för streaming skiljer sig från arkivencoding genom behovet att skapa flera kvalitetsvarianter (ABR-stege) och optimering för nätverksöverföring. Innehållsleverantörer använder realtidstranskodning eller förberedande encoding för VOD.
En typisk ABR-uppsättning för mobila appar innehåller 4–6 varianter: från 144p (200 kbps) för svaga nätverk till 1080p (8 Mbit/s) för Wi-Fi. Rekommenderade upplösningar: 144p, 240p, 360p, 480p, 720p, 1080p. För 4K-innehåll läggs 1440p och 2160p till.
val mediaCodec = MediaCodec.createEncoderByType(
MediaFormat.MIMETYPE_VIDEO_AVC
)
val format = MediaFormat.createVideoFormat(
MediaFormat.MIMETYPE_VIDEO_AVC,
1280, 720
).apply {
setInteger(MediaFormat.KEY_BIT_RATE, 3_000_000)
setInteger(MediaFormat.KEY_FRAME_RATE, 30)
setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, 2)
setInteger(MediaFormat.KEY_PROFILE,
MediaCodecInfo.CodecProfileLevel.AVCProfileHigh)
setInteger(MediaFormat.KEY_LEVEL,
MediaCodecInfo.CodecProfileLevel.AVCLevel31)
}
mediaCodec.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE)
För livesändningar är låg latens särskilt viktig. Encoding-inställningar bör minimera codecens in-/utgångsfördröjning: rekommenderad GOP-storlek på 1–2 sekunder (var 30–60 bildruta), B-bildrutor avstängda eller minimerade, för H.264 används Baseline Profile.
Moderna protokoll för låg latens — LL-HLS och CMAF-Low Latency — kräver fragmenterad encoding med segment på 1–2 sekunder och möjlighet till partiell laddning (Partial Segments). Codecen måste stödja moof-box i varje segment för fragmenterad MP4.
Vanliga frågor
Videoencoding — processen att komprimera en digital videosignal med hjälp av codecs för att minska datamängden. I mobila appar möjliggör encoding överföring och lagring av video, där storleken minskas hundratals gånger utan märkbar kvalitetsförlust på enhetens skärm.
H.264 ger maximal kompatibilitet med äldre enheter, medan H.265 är 40–50% effektivare vid samma kvalitet. För 1080p-innehåll och lägre räcker H.264, för 4K rekommenderas H.265 eller AV1 om enheten stöder det.
Bitrate — mängden data per sekund video. För 1080p är optimal bitrate 3–8 Mbit/s för H.264, 2–5 Mbit/s för H.265. Valet beror på innehållet: dynamiska scener (sport) kräver högre bitrate, statiska scener (intervjuer) lägre bitrate.
VP9 — föregångaren till AV1 från Google, som ger komprimering på H.265-nivå. AV1 komprimerar 20–30% effektivare än VP9 men kräver 5–10 gånger mer resurser för encoding. VP9 är bättre för YouTube, AV1 — för Netflix och moderna streamingtjänster.
För livesändningar, använd H.264 Baseline Profile med GOP 1–2 sekunder, utan B-bildrutor, bitrate 2–4 Mbit/s för 1080p. Aktivera fragmenterad MP4 (CMAF) för LL-HLS och använd hårdvaruencoding via MediaCodec eller VideoToolbox.
Slutsats
Vi utvecklar en mobil applikation nyckelfärdigt
IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.
Läs också