Кодирање видеа (encoding) је процес компресије дигиталног видео сигнала у формат погодан за складиштење и пренос преко мреже уз минималне губитке квалитета. Без кодирања, један минут некомпримованог видеа у резолуцији 4K заузима око 30 GB, што чини пренос преко интернета немогућим. Према извештају Sandvine Global Internet Phenomena (2025), видео чини 65% укупног интернет саобраћаја, а кодирање је кључна технологија која то омогућава.
Укратко
Кодирање видеа (encoding) је процес претварања некомпримованог видео сигнала у дигитални формат коришћењем алгоритама компресије. Алгоритми имплементирани у видео кодецима уклањају вишак информација како у просторном домену (унутар једног кадра), тако и у временском (између узастопних кадрова).
Некомпримовани видео представља низ кадрова, од којих је сваки ускладиштен као низ пиксела у RGB или YUV формату. Без компресије, једна секунда видеа 1080p при 30 FPS захтева око 1,5 GB меморије. Кодек H.264 компримује овај ток на 3–5 Mbps, што је 2500 пута мање од почетног обима.
Видео кодеци користе два типа компресије: унутароквирну (intra-frame) и међуоквирну (inter-frame). Intra-frame компресија примењује се на сваки кадар независно, користећи алгоритме сличне JPEG-у: дискретну косинусну трансформацију (DCT), квантизацију и ентропијско кодирање.
Inter-frame компресија анализира разлику између узастопних кадрова и кодира само промене. Ако је позадина статична, кодек шаље комплетан кадар само једном (I-frame), а затим само разлику (P и B кадрови), што значајно смањује количину података за сцене са малом динамиком.
Избор видео кодека одређује однос квалитета и величине датотеке, компатибилност са уређајима и лиценцне накнаде. На тржишту мобилних апликација доминирају четири главна кодека: H.264 (AVC), H.265 (HEVC), VP9 и AV1.
| Кодек | Стандард | Година | Компресија vs H.264 | Лиценцирање |
|---|---|---|---|---|
| H.264/AVC | MPEG-4 Part 10 | 2003 | 1x (основни) | Накнада (MPEG LA) |
| H.265/HEVC | MPEG-H Part 2 | 2013 | 40–50% ефикаснији | Накнада (два пула) |
| VP9 | 2013 | 30–40% ефикаснији | Бесплатно | |
| AV1 | AOM | 2018 | 50–60% ефикаснији | Бесплатно (Royalty-free) |
H.264 (AVC — Advanced Video Coding) остаје најкомпатибилнији видео кодек: подржавају га сви мобилни уређаји, прегледачи и Smart TV од 2005. године. Хардверско убрзање декодирања H.264 постоји чак и на буџетским уређајима, што га чини идеалним за универзални ток.
Главни недостатак H.264 — релативно ниска ефикасност компресије у поређењу са савременим кодецима. При истом битрејту, H.265 и AV1 пружају приметно виши квалитет, што је посебно важно за HDR и 4K садржај.
H.265 (HEVC — High Efficiency Video Coding) пружа 40–50% бољу компресију од H.264 уз исти визуелни квалитет. То се постиже флексибилнијом поделом кадра на блокове (CTU до 64×64 пиксела уместо 16×16) и побољшаним алгоритмима предвиђања покрета.
HEVC подржавају сви Apple уређаји (почев од iPhone 6), Android (од верзије 5.0 са хардверским декодирањем) и већина Smart TV-а. Лиценцне накнаде HEVC су веће од H.264 и управљају се кроз два патентна пула, што компликује правну употребу.
AV1 — видео кодек развијен од стране Alliance for Open Media (AOM), конзорцијума предвођеног Google-ом, Netflix-ом, Amazon-ом, Intel-ом и Mozilla-ом. AV1 пружа 50–60% бољу компресију од H.264 и потпуно је ослобођен накнада за лиценцирање, што га чини атрактивним за стриминг сервисе.
Главни недостатак AV1 — висока рачунарска сложеност кодирања. Кодирање AV1 може бити 5–10 пута спорије од H.264 на истој опреми, иако се хардверско декодирање већ појављује на уређајима из 2024–2025 (Snapdragon 8 Gen 3, Apple A17 Pro).
Аудио кодеци у мобилним апликацијама нису мање важни од видео кодека. За стриминг видеа потребан је аудио са минималним кашњењем, високим квалитетом и компатибилношћу са контејнерима MP4 и WebM. Три главна аудио кодека покривају 99% мобилних стриминг апликација.
AAC (Advanced Audio Coding) — наследник MP3, развијен од MPEG 1997. године и постао стандардни аудио кодек за iTunes, YouTube и Android. AAC пружа исти квалитет као MP3 при 30% нижем битрејту и подржава вишеканални звук до 7.1.
За мобилне апликације препоручује се AAC-LC при битрејту 128–192 kbps за стерео и AAC-HE за ниске битрејтове 32–64 kbps. Хардверско декодирање AAC постоји на свим савременим уређајима, што минимизира потрошњу енергије.
Opus — отворени аудио кодек од IETF (RFC 6716), који пружа најбољи квалитет међу свим аудио кодецима при битрејтовима од 6 до 510 kbps. Opus комбинује SILK (алгоритам за говор) и CELT (за музику) и аутоматски мења режиме у зависности од садржаја.
Opus се користи у WebRTC за видео позиве, у апликацијама Spotify и Discord, и подржан је у HLS од iOS 11 и Android 5.0. Мало кашњење Opus-а (5–26 ms наспрам 40–100 ms код AAC) чини га пожељнијим избором за преносе уживо и видео конференције.
Параметри кодирања одређују коначну величину датотеке, квалитет видеа и компатибилност са уређајима. Програмер мобилне апликације мора одабрати оптимална подешавања за сваку врсту садржаја: филмове, спортске преносе, кориснички садржај.
Битрејт — број битова који се користи за кодирање једне секунде видеа. Разликују се CBR (Constant Bitrate) — константан битрејт за преносе уживо, VBR (Variable Bitrate) — променљив са циљним квалитетом за архивирање и ABR (Average Bitrate) — просечан за стриминг.
| Резолуција | H.264 (препоручено) | H.265/HEVC | AV1 |
|---|---|---|---|
| 360p | 400–800 kbps | 250–500 kbps | 200–400 kbps |
| 720p | 1,5–4 Mbps | 1–2,5 Mbps | 0,8–2 Mbps |
| 1080p | 3–8 Mbps | 2–5 Mbps | 1,5–4 Mbps |
| 4K (2160p) | 15–40 Mbps | 10–25 Mbps | 8–20 Mbps |
CRF (Constant Rate Factor) — параметар кодирања у x264 и x265 који поставља циљни квалитет уместо фиксног битрејта. Скала CRF од 0 (lossless) до 51 (најлошији квалитет), где је 18–28 радни опсег. За мобилне апликације препоручује се CRF 23 за x264 и CRF 25 за x265.
CRF 18–20 обезбеђује висок квалитет за презентациони садржај и офлајн гледање. CRF 24–28 је погодан за стриминг и кориснички садржај, где је величина датотеке важнија од апсолутног квалитета.
Стандард H.264 дефинише профиле (Baseline, Main, High) и нивое (Level 1–5.2) који ограничавају максималне параметре видеа. Baseline Profile је компатибилан са свим уређајима, али не подржава B кадрове. High Profile обезбеђује максималан квалитет и користи се за 1080p садржај.
За 4K стриминг потребан је Level 5.1 и виши, који подржава већина мобилних уређаја од 2018. године. Ниво кодека одређује максималну резолуцију, битрејт и величину бафера, гарантујући исправно декодирање на свим сертификованим уређајима.
Кодирање за стриминг се разликује од архивског кодирања потребом за креирањем неколико варијанти квалитета (ABR ladder) и оптимизацијом за мрежни пренос. Провајдери садржаја користе транскодирање у реалном времену или претходно кодирање за VOD.
Типичан ABR сет за мобилне апликације укључује 4–6 варијанти: од 144p (200 kbps) за слабе мреже до 1080p (8 Mbps) за Wi-Fi. Препоручене резолуције: 144p, 240p, 360p, 480p, 720p, 1080p. За 4K садржај додају се 1440p и 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)
За преносе уживо посебно је важно мало кашњење. Подешавања кодирања треба да минимизирају кашњење улаза/излаза кодека: препоручује се GOP величина 1–2 секунде (сваких 30–60 кадрова), B кадрови искључени или минимизирани, за H.264 се користи Baseline Profile.
Савремени протоколи за мало кашњење — LL-HLS и CMAF-Low Latency — захтевају фрагментирано кодирање са сегментима од 1–2 секунде и могућношћу делимичног учитавања (Partial Segments). Кодек мора подржавати moof-box у сваком сегменту за фрагментирани MP4.
Често постављана питања
Кодирање видеа — процес компресије дигиталног видео сигнала помоћу кодека за смањење обима података. У мобилним апликацијама, кодирање омогућава пренос и складиштење видеа, смањујући величину стотине пута без приметног губитка квалитета на екрану уређаја.
H.264 обезбеђује максималну компатибилност са старим уређајима, а H.265 је 40–50% ефикаснији при истом квалитету. За 1080p и нижи садржај довољан је H.264, за 4K се препоручује H.265 или AV1 ако уређај подржава.
Битрејт — количина података у секунди видеа. За 1080p оптималан битрејт је 3–8 Mbps за H.264, 2–5 Mbps за H.265. Избор зависи од садржаја: динамичне сцене (спорт) захтевају виши битрејт, статичне (интервјуи) — нижи.
VP9 — претходник AV1 од Google-а, који пружа компресију на нивоу H.265. AV1 компримује 20–30% ефикасније од VP9, али захтева 5–10 пута више ресурса за кодирање. VP9 је бољи за YouTube, AV1 — за Netflix и модерне стриминг сервисе.
За преносе уживо користи H.264 Baseline Profile са GOP 1–2 секунде, без B кадрова, битрејт 2–4 Mbps за 1080p. Укључи фрагментирани MP4 (CMAF) за LL-HLS и користи хардверско кодирање преко MediaCodec или VideoToolbox.
Закључак
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође