Codificarea video (encoding) este procesul de compresie a semnalului video digital într-un format potrivit pentru stocare și transmitere prin rețea cu pierderi minime de calitate. Fără codificare, un minut de video necomprimat în rezoluție 4K ocupă aproximativ 30 GB, ceea ce face imposibilă transmiterea prin internet. Conform raportului Sandvine Global Internet Phenomena (2025), video-ul reprezintă 65% din tot traficul internet, iar codificarea este tehnologia cheie care face acest lucru posibil.
Pe scurt
Codificarea video (encoding) este procesul de transformare a semnalului video necomprimat într-un format digital folosind algoritmi de compresie. Algoritmii implementați în codecurile video elimină informația redundantă atât în domeniul spațial (în interiorul unui cadru), cât și în domeniul temporal (între cadrele succesive).
Video-ul necomprimat reprezintă o succesiune de cadre, fiecare stocat ca un tablou de pixeli în format RGB sau YUV. Fără compresie, o secundă de video 1080p la 30 FPS necesită aproximativ 1,5 GB de memorie. Codecul H.264 comprimă acest flux la 3–5 Mbps, de 2500 de ori mai puțin decât volumul inițial.
Codecurile video folosesc două tipuri de compresie: intra-cadru (intra-frame) și inter-cadru (inter-frame). Compresia intra-cadru se aplică fiecărui cadru independent, folosind algoritmi similari cu JPEG: transformarea cosinus discretă (DCT), cuantizarea și codificarea entropică.
Compresia inter-cadru analizează diferența dintre cadrele succesive și codifică doar modificările. Dacă fundalul este static, codecul transmite cadrul complet o singură dată (I-frame), apoi doar diferența (cadrele P și B), ceea ce reduce semnificativ volumul de date pentru scenele cu dinamică redusă.
Alegerea codecului video determină raportul calitate-dimensiune, compatibilitatea cu dispozitivele și taxele de licențiere. Pe piața aplicațiilor mobile domină patru codecuri principale: H.264 (AVC), H.265 (HEVC), VP9 și AV1.
| Codec | Standard | An | Compresie vs H.264 | Licențiere |
|---|---|---|---|---|
| H.264/AVC | MPEG-4 Part 10 | 2003 | 1x (de bază) | Cu taxă (MPEG LA) |
| H.265/HEVC | MPEG-H Part 2 | 2013 | Cu 40–50% mai eficient | Cu taxă (două pool-uri) |
| VP9 | 2013 | Cu 30–40% mai eficient | Gratuit | |
| AV1 | AOM | 2018 | Cu 50–60% mai eficient | Gratuit (Royalty-free) |
H.264 (AVC — Advanced Video Coding) rămâne cel mai compatibil codec video: este suportat de toate dispozitivele mobile, browserele și Smart TV-urile începând cu 2005. Accelerarea hardware a decodării H.264 există chiar și pe dispozitivele bugetare, ceea ce îl face ideal pentru fluxul universal.
Principalul dezavantaj al H.264 — eficiența relativ scăzută de compresie comparativ cu codecurile moderne. La același bitrate, H.265 și AV1 oferă o calitate vizibil mai înaltă, ceea ce este deosebit de important pentru conținutul HDR și 4K.
H.265 (HEVC — High Efficiency Video Coding) oferă o compresie cu 40–50% mai bună decât H.264 la aceeași calitate vizuală. Acest lucru se realizează printr-o împărțire mai flexibilă a cadrului în blocuri (CTU de până la 64×64 pixeli în loc de 16×16) și algoritmi îmbunătățiți de predicție a mișcării.
HEVC este suportat pe toate dispozitivele Apple (începând cu iPhone 6), pe Android (începând cu versiunea 5.0 cu decodare hardware) și pe majoritatea Smart TV-urilor. Taxele de licențiere HEVC sunt mai mari decât H.264 și sunt gestionate de două pool-uri de brevete, ceea ce complică utilizarea legală.
AV1 — codec video dezvoltat de Alliance for Open Media (AOM), un consorțiu condus de Google, Netflix, Amazon, Intel și Mozilla. AV1 oferă o compresie cu 50–60% mai bună decât H.264 și este complet liber de taxe de licențiere, ceea ce îl face atractiv pentru serviciile de streaming.
Principalul dezavantaj al AV1 — complexitatea computațională ridicată a codificării. Codificarea AV1 poate fi de 5–10 ori mai lentă decât H.264 pe același echipament, deși decodarea hardware apare deja pe dispozitivele din 2024–2025 (Snapdragon 8 Gen 3, Apple A17 Pro).
Codecurile audio în aplicațiile mobile nu sunt mai puțin importante decât codecurile video. Pentru streaming video este necesar un audio cu latență minimă, calitate înaltă și compatibilitate cu containerele MP4 și WebM. Trei codecuri audio principale acoperă 99% din aplicațiile mobile de streaming.
AAC (Advanced Audio Coding) — succesorul MP3, dezvoltat de MPEG în 1997 și devenit codecul audio standard pentru iTunes, YouTube și Android. AAC oferă aceeași calitate ca MP3 la un bitrate cu 30% mai mic și suportă sunet multicanal până la 7.1.
Pentru aplicațiile mobile se recomandă AAC-LC la un bitrate de 128–192 kbps pentru stereo și AAC-HE pentru bitrate-uri scăzute de 32–64 kbps. Decodarea hardware AAC este disponibilă pe toate dispozitivele moderne, ceea ce minimizează consumul de energie.
Opus — codec audio deschis de la IETF (RFC 6716), care oferă cea mai bună calitate dintre toate codecurile audio la bitrate-uri între 6 și 510 kbps. Opus combină SILK (algoritm pentru vorbire) și CELT (pentru muzică) și comută automat modurile în funcție de conținut.
Opus este utilizat în WebRTC pentru apeluri video, în aplicațiile Spotify și Discord și este suportat în HLS începând cu iOS 11 și Android 5.0. Latența scăzută a Opus (5–26 ms față de 40–100 ms la AAC) îl face alegerea preferată pentru transmisiile live și conferințele video.
Parametrii de codificare determină dimensiunea finală a fișierului, calitatea video și compatibilitatea cu dispozitivele. Dezvoltatorul de aplicații mobile trebuie să aleagă setările optime pentru fiecare tip de conținut: filme, transmisii sportive, conținut utilizator.
Bitrate-ul — numărul de biți utilizați pentru codificarea unei secunde de video. Se disting CBR (Constant Bitrate) — bitrate constant pentru transmisii live, VBR (Variable Bitrate) — variabil cu calitate țintă pentru stocare arhivă și ABR (Average Bitrate) — mediu pentru streaming.
| Rezoluție | H.264 (recomandat) | 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) — parametru de codificare în x264 și x265 care stabilește calitatea țintă în locul unui bitrate fix. Scara CRF de la 0 (lossless) la 51 (calitate minimă), unde 18–28 este domeniul de lucru. Pentru aplicații mobile se recomandă CRF 23 pentru x264 și CRF 25 pentru x265.
CRF 18–20 asigură calitate înaltă pentru conținut de prezentare și vizionare offline. CRF 24–28 este potrivit pentru streaming și conținut utilizator, unde dimensiunea fișierului este mai importantă decât calitatea absolută.
Standardul H.264 definește profiluri (Baseline, Main, High) și niveluri (Level 1–5.2) care limitează parametrii maximi ai video-ului. Baseline Profile este compatibil cu toate dispozitivele, dar nu suportă cadrele B. High Profile asigură calitate maximă și este utilizat pentru conținut 1080p.
Pentru streaming 4K este necesar Level 5.1 și superior, suportat de majoritatea dispozitivelor mobile începând cu 2018. Nivelul codecului determină rezoluția maximă, bitrate-ul și dimensiunea buffer-ului, garantând decodarea corectă pe toate dispozitivele certificate.
Codificarea pentru streaming diferă de codificarea arhivă prin necesitatea creării mai multor variante de calitate (ABR ladder) și optimizarea pentru transmisia în rețea. Furnizorii de conținut folosesc transcodificarea în timp real sau codificarea preliminară pentru VOD.
Un set ABR tipic pentru aplicații mobile include 4–6 variante: de la 144p (200 kbps) pentru rețele slabe până la 1080p (8 Mbps) pentru Wi-Fi. Rezoluții recomandate: 144p, 240p, 360p, 480p, 720p, 1080p. Pentru conținut 4K se adaugă 1440p și 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)
Pentru transmisiile live este deosebit de importantă latența scăzută. Setările de codificare trebuie să minimizeze latența de intrare/ieșire a codecului: se recomandă dimensiunea GOP de 1–2 secunde (la fiecare 30–60 cadre), cadrele B oprite sau minimizate, pentru H.264 se utilizează Baseline Profile.
Protocoalele moderne pentru latență scăzută — LL-HLS și CMAF-Low Latency — necesită codificare fragmentată cu segmente de 1–2 secunde și posibilitatea încărcării parțiale (Partial Segments). Codecul trebuie să suporte moof-box în fiecare segment pentru MP4 fragmentat.
Întrebări frecvente
Codificarea video — procesul de compresie a semnalului video digital cu ajutorul codecurilor pentru reducerea volumului de date. În aplicațiile mobile, codificarea permite transmiterea și stocarea video-ului, reducând dimensiunea de sute de ori fără pierdere vizibilă de calitate pe ecranul dispozitivului.
H.264 asigură compatibilitate maximă cu dispozitivele vechi, iar H.265 este cu 40–50% mai eficient la aceeași calitate. Pentru conținut 1080p și mai jos este suficient H.264, pentru 4K se recomandă H.265 sau AV1 dacă dispozitivul le suportă.
Bitrate-ul — cantitatea de date pe secundă de video. Pentru 1080p, bitrate-ul optim este de 3–8 Mbps pentru H.264, 2–5 Mbps pentru H.265. Alegerea depinde de conținut: scenele dinamice (sport) necesită un bitrate mai mare, scenele statice (interviuri) — un bitrate mai mic.
VP9 — predecesorul AV1 de la Google, care oferă compresie la nivelul H.265. AV1 comprimă cu 20–30% mai eficient decât VP9, dar necesită de 5–10 ori mai multe resurse pentru codificare. VP9 este mai bun pentru YouTube, AV1 — pentru Netflix și serviciile moderne de streaming.
Pentru transmisii live folosește H.264 Baseline Profile cu GOP 1–2 secunde, fără cadre B, bitrate 2–4 Mbps pentru 1080p. Activează MP4 fragmentat (CMAF) pentru LL-HLS și folosește codificarea hardware prin MediaCodec sau VideoToolbox.
Concluzii
Vom dezvolta o aplicație mobilă la cheie
IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.
Citiți și