Kódování videa (encoding) je proces komprese digitálního videosignálu do formátu vhodného pro ukládání a přenos po síti s minimální ztrátou kvality. Bez kódování jedna minuta nekomprimovaného videa v rozlišení 4K zabírá asi 30 GB, což znemožňuje přenos po internetu. Podle zprávy Sandvine Global Internet Phenomena (2025) tvoří video 65% veškerého internetového provozu a kódování je klíčová technologie, která to umožňuje.
Hlavní body
Kódování videa (encoding) je proces převodu nekomprimovaného videosignálu do digitálního formátu pomocí kompresních algoritmů. Algoritmy implementované ve video kodekech odstraňují redundantní informace jak v prostorové oblasti (uvnitř jednoho snímku), tak v časové oblasti (mezi po sobě jdoucími snímky).
Nekomprimované video je sekvence snímků, z nichž každý je uložen jako pole pixelů ve formátu RGB nebo YUV. Bez komprese vyžaduje jedna sekunda videa 1080p při 30 FPS přibližně 1,5 GB paměti. Kodek H.264 komprimuje tento tok na 3–5 Mb/s, což je 2500krát méně než původní objem.
Video kodeky používají dva typy komprese: vnitrosnímkovou (intra-frame) a mezisnímkovou (inter-frame). Intra-frame komprese se aplikuje na každý snímek nezávisle pomocí algoritmů podobných JPEG: diskrétní kosinová transformace (DCT), kvantování a entropické kódování.
Inter-frame komprese analyzuje rozdíl mezi po sobě jdoucími snímky a kóduje pouze změny. Pokud je pozadí statické, kodek odešle celý snímek pouze jednou (I-frame) a poté pouze rozdíl (P a B snímky), což výrazně snižuje objem dat pro scény s nízkou dynamikou.
Výběr video kodeku určuje poměr kvality a velikosti souboru, kompatibilitu se zařízeními a licenční poplatky. Na trhu mobilních aplikací dominují čtyři hlavní kodeky: H.264 (AVC), H.265 (HEVC), VP9 a AV1.
| Kodek | Standard | Rok | Komprese vs H.264 | Licencování |
|---|---|---|---|---|
| H.264/AVC | MPEG-4 Part 10 | 2003 | 1x (základní) | Zpoplatněno (MPEG LA) |
| H.265/HEVC | MPEG-H Part 2 | 2013 | 40–50% účinnější | Zpoplatněno (dva pooly) |
| VP9 | 2013 | 30–40% účinnější | Zdarma | |
| AV1 | AOM | 2018 | 50–60% účinnější | Zdarma (Royalty-free) |
H.264 (AVC — Advanced Video Coding) zůstává nejkompatibilnějším video kodekem: je podporován všemi mobilními zařízeními, prohlížeči a Smart TV od roku 2005. Hardwarová akcelerace dekódování H.264 je dostupná i na levných zařízeních, což jej činí ideálním pro univerzální tok.
Hlavní nevýhoda H.264 — relativně nízká účinnost komprese ve srovnání s moderními kodeky. Při stejném bitrate poskytují H.265 a AV1 znatelně vyšší kvalitu, což je zvláště důležité pro HDR a 4K obsah.
H.265 (HEVC — High Efficiency Video Coding) poskytuje 40–50% lepší kompresi než H.264 při stejné vizuální kvalitě. Toho je dosaženo flexibilnějším rozdělením snímku na bloky (CTU až 64×64 pixelů namísto 16×16) a vylepšenými algoritmy predikce pohybu.
HEVC je podporován na všech zařízeních Apple (od iPhone 6), na Androidu (od verze 5.0 s hardwarovým dekódováním) a na většině Smart TV. Licenční poplatky HEVC jsou vyšší než u H.264 a jsou spravovány dvěma patentovými pooly, což komplikuje legální použití.
AV1 — video kodek vyvinutý Alliance for Open Media (AOM), konsorciem vedeným Googlem, Netflixem, Amazonem, Intelem a Mozillou. AV1 poskytuje 50–60% lepší kompresi než H.264 a je zcela bez licenčních poplatků, což jej činí atraktivním pro streamovací služby.
Hlavní nevýhoda AV1 — vysoká výpočetní náročnost kódování. Kódování AV1 může být 5–10krát pomalejší než H.264 na stejném hardwaru, ačkoli hardwarové dekódování se již objevuje na zařízeních z let 2024–2025 (Snapdragon 8 Gen 3, Apple A17 Pro).
Audio kodeky v mobilních aplikacích nejsou méně důležité než video kodeky. Pro streamování videa je vyžadováno audio s minimální latencí, vysokou kvalitou a kompatibilitou s kontejnery MP4 a WebM. Tři hlavní audio kodeky pokrývají 99% mobilních streamovacích aplikací.
AAC (Advanced Audio Coding) — nástupce MP3, vyvinutý MPEG v roce 1997 a stal se standardním audio kodekem pro iTunes, YouTube a Android. AAC poskytuje stejnou kvalitu jako MP3 při 30% nižším bitrate a podporuje vícekanálový zvuk až do 7.1.
Pro mobilní aplikace se doporučuje AAC-LC při bitrate 128–192 kb/s pro stereo a AAC-HE pro nízké bitrate 32–64 kb/s. Hardwarové dekódování AAC je dostupné na všech moderních zařízeních, což minimalizuje spotřebu energie.
Opus — otevřený audio kodek od IETF (RFC 6716), který poskytuje nejlepší kvalitu ze všech audio kodeků při bitrate od 6 do 510 kb/s. Opus kombinuje SILK (algoritmus pro řeč) a CELT (pro hudbu) a automaticky přepíná režimy v závislosti na obsahu.
Opus se používá ve WebRTC pro videohovory, v aplikacích Spotify a Discord a je podporován v HLS od iOS 11 a Android 5.0. Nízká latence Opusu (5–26 ms oproti 40–100 ms u AAC) jej činí preferovanou volbou pro živé přenosy a videokonference.
Parametry kódování určují konečnou velikost souboru, kvalitu videa a kompatibilitu se zařízeními. Vývojář mobilní aplikace musí zvolit optimální nastavení pro každý typ obsahu: filmy, sportovní přenosy, uživatelský obsah.
Bitrate — počet bitů použitých pro kódování jedné sekundy videa. Rozlišujeme CBR (Constant Bitrate) — konstantní bitrate pro živé přenosy, VBR (Variable Bitrate) — proměnný s cílovou kvalitou pro archivaci a ABR (Average Bitrate) — průměrný pro streamování.
| Rozlišení | H.264 (doporučeno) | H.265/HEVC | AV1 |
|---|---|---|---|
| 360p | 400–800 kb/s | 250–500 kb/s | 200–400 kb/s |
| 720p | 1,5–4 Mb/s | 1–2,5 Mb/s | 0,8–2 Mb/s |
| 1080p | 3–8 Mb/s | 2–5 Mb/s | 1,5–4 Mb/s |
| 4K (2160p) | 15–40 Mb/s | 10–25 Mb/s | 8–20 Mb/s |
CRF (Constant Rate Factor) — parametr kódování v x264 a x265, který nastavuje cílovou kvalitu místo pevného bitrate. Stupnice CRF od 0 (lossless) do 51 (nejhorší kvalita), kde 18–28 je pracovní rozsah. Pro mobilní aplikace se doporučuje CRF 23 pro x264 a CRF 25 pro x265.
CRF 18–20 poskytuje vysokou kvalitu pro prezentační obsah a offline sledování. CRF 24–28 je vhodný pro streamování a uživatelský obsah, kde je velikost souboru důležitější než absolutní kvalita.
Standard H.264 definuje profily (Baseline, Main, High) a úrovně (Level 1–5.2), které omezují maximální parametry videa. Baseline Profile je kompatibilní se všemi zařízeními, ale nepodporuje B snímky. High Profile poskytuje maximální kvalitu a používá se pro 1080p obsah.
Pro 4K streamování je vyžadována Level 5.1 a vyšší, kterou podporuje většina mobilních zařízení od roku 2018. Úroveň kodeku určuje maximální rozlišení, bitrate a velikost bufferu, garantující správné dekódování na všech certifikovaných zařízeních.
Kódování pro streamování se liší od archivního kódování potřebou vytvoření několika variant kvality (ABR ladder) a optimalizací pro síťový přenos. Poskytovatelé obsahu používají transkódování v reálném čase nebo předběžné kódování pro VOD.
Typická ABR sada pro mobilní aplikace zahrnuje 4–6 variant: od 144p (200 kb/s) pro slabé sítě po 1080p (8 Mb/s) pro Wi-Fi. Doporučená rozlišení: 144p, 240p, 360p, 480p, 720p, 1080p. Pro 4K obsah se přidávají 1440p a 2160p.
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)
Pro živé přenosy je důležitá nízká latence. Nastavení kódování by měla minimalizovat vstupně/výstupní zpoždění kodeku: doporučuje se velikost GOP 1–2 sekundy (každých 30–60 snímků), B snímky vypnuté nebo minimalizované, pro H.264 se používá Baseline Profile.
Moderní protokoly pro nízkou latenci — LL-HLS a CMAF-Low Latency — vyžadují fragmentované kódování se segmenty 1–2 sekund a možností částečného načítání (Partial Segments). Kodek musí podporovat moof-box v každém segmentu pro fragmentované MP4.
Často kladené otázky
Kódování videa — proces komprese digitálního videosignálu pomocí kodeků ke snížení objemu dat. V mobilních aplikacích umožňuje kódování přenos a ukládání videa, přičemž velikost se zmenšuje stokrát bez znatelné ztráty kvality na obrazovce zařízení.
H.264 poskytuje maximální kompatibilitu se starými zařízeními, zatímco H.265 je 40–50% účinnější při stejné kvalitě. Pro obsah 1080p a nižší stačí H.264, pro 4K se doporučuje H.265 nebo AV1, pokud to zařízení podporuje.
Bitrate — množství dat za sekundu videa. Pro 1080p je optimální bitrate 3–8 Mb/s pro H.264, 2–5 Mb/s pro H.265. Výběr závisí na obsahu: dynamické scény (sport) vyžadují vyšší bitrate, statické scény (rozhovory) nižší.
VP9 — předchůdce AV1 od Googlu, poskytující kompresi na úrovni H.265. AV1 komprimuje 20–30% účinněji než VP9, ale vyžaduje 5–10krát více zdrojů pro kódování. VP9 je lepší pro YouTube, AV1 — pro Netflix a moderní streamovací služby.
Pro živé přenosy použijte H.264 Baseline Profile s GOP 1–2 sekundy, bez B snímků, bitrate 2–4 Mb/s pro 1080p. Aktivujte fragmentované MP4 (CMAF) pro LL-HLS a použijte hardwarové kódování přes MediaCodec nebo VideoToolbox.
Shrnutí
Vyvineme mobilní aplikaci na klíč
IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.
Přečtěte si také