کدگذاری ویدیو (encoding) فرآیند فشردهسازی سیگنال ویدیوی دیجیتال به فرمتی مناسب برای ذخیرهسازی و انتقال از طریق شبکه با حداقل افت کیفیت است. بدون کدگذاری، یک دقیقه ویدیوی فشردهنشده با کیفیت 4K حدود 30 گیگابایت فضا اشغال میکند که انتقال از طریق اینترنت را غیرممکن میسازد. طبق گزارش Sandvine Global Internet Phenomena (2025)، ویدیو 65% از کل ترافیک اینترنت را تشکیل میدهد و کدگذاری فناوری کلیدی است که این امر را ممکن میسازد.
نکات اصلی
کدگذاری ویدیو (encoding) فرآیند تبدیل سیگنال ویدیوی فشردهنشده به فرمت دیجیتال با استفاده از الگوریتمهای فشردهسازی است. الگوریتمهای پیادهسازیشده در کدکهای ویدیو، اطلاعات اضافی را هم در حوزه مکانی (داخل یک فریم) و هم در حوزه زمانی (بین فریمهای متوالی) حذف میکنند.
ویدیوی فشردهنشده دنبالهای از فریمهاست که هر کدام به عنوان آرایهای از پیکسلها در قالب RGB یا YUV ذخیره میشود. بدون فشردهسازی، یک ثانیه ویدیوی 1080p با 30 FPS حدود 1.5 گیگابایت حافظه نیاز دارد. کدک H.264 این جریان را به 3–5 مگابیت/ثانیه فشرده میکند که 2500 برابر کوچکتر از حجم اولیه است.
کدکهای ویدیو از دو نوع فشردهسازی استفاده میکنند: درونفریمی (intra-frame) و بینفریمی (inter-frame). فشردهسازی درونفریمی به هر فریم به طور مستقل اعمال میشود و از الگوریتمهای مشابه JPEG استفاده میکند: تبدیل کسینوسی گسسته (DCT)، کوانتیزاسیون و کدگذاری آنتروپی.
فشردهسازی بینفریمی تفاوت بین فریمهای متوالی را تحلیل کرده و فقط تغییرات را کدگذاری میکند. اگر پسزمینه ثابت باشد، کدک فریم کامل را فقط یک بار ارسال میکند (I-frame) و سپس فقط تفاوت (فریمهای P و B) را ارسال میکند که حجم داده را برای صحنههای با پویایی کم به طور قابل توجهی کاهش میدهد.
انتخاب کدک ویدیو نسبت کیفیت به اندازه فایل، سازگاری با دستگاهها و هزینههای مجوز را تعیین میکند. در بازار برنامههای موبایل، چهار کدک اصلی غالب هستند: H.264 (AVC)، H.265 (HEVC)، VP9 و AV1.
| کدک | استاندارد | سال | فشردهسازی در مقایسه با 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% کارآمدتر | رایگان (بدون حق امتیاز) |
H.264 (AVC — Advanced Video Coding) همچنان سازگارترین کدک ویدیو است: از سال 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 با رمزگشایی سختافزاری) و در اکثر تلویزیونهای هوشمند پشتیبانی میشود. هزینههای مجوز 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 کیلوبیت/ثانیه برای استریو و AAC-HE برای نرخهای بیت پایین 32–64 کیلوبیت/ثانیه توصیه میشود. رمزگشایی سختافزاری AAC در تمام دستگاههای مدرن وجود دارد که مصرف انرژی را به حداقل میرساند.
Opus — کدک صوتی باز از IETF (RFC 6716)، که بهترین کیفیت را در میان تمام کدکهای صوتی در نرخهای بیت 6 تا 510 کیلوبیت/ثانیه ارائه میدهد. Opus SILK (الگوریتم گفتار) و CELT (برای موسیقی) را ترکیب میکند و بسته به محتوا به طور خودکار حالتها را تغییر میدهد.
Opus در WebRTC برای تماسهای ویدیویی، در برنامههای Spotify و Discord استفاده میشود و از iOS 11 و Android 5.0 در HLS پشتیبانی میشود. تأخیر کم Opus (5–26 میلیثانیه در مقابل 40–100 میلیثانیه در AAC) آن را به انتخاب ترجیحی برای پخش زنده و کنفرانس ویدیویی تبدیل میکند.
پارامترهای کدگذاری اندازه نهایی فایل، کیفیت ویدیو و سازگاری با دستگاهها را تعیین میکنند. توسعهدهنده برنامه موبایل باید تنظیمات بهینه را برای هر نوع محتوا انتخاب کند: فیلمها، پخشهای ورزشی، محتوای کاربری.
نرخ بیت — تعداد بیتهای استفادهشده برای کدگذاری یک ثانیه ویدیو. CBR (نرخ بیت ثابت) برای پخش زنده، VBR (نرخ بیت متغیر) با کیفیت هدف برای ذخیرهسازی آرشیوی و ABR (نرخ بیت متوسط) برای استریمینگ متمایز میشوند.
| وضوح | H.264 (توصیهشده) | H.265/HEVC | AV1 |
|---|---|---|---|
| 360p | 400–800 کیلوبیت/ثانیه | 250–500 کیلوبیت/ثانیه | 200–400 کیلوبیت/ثانیه |
| 720p | 1.5–4 مگابیت/ثانیه | 1–2.5 مگابیت/ثانیه | 0.8–2 مگابیت/ثانیه |
| 1080p | 3–8 مگابیت/ثانیه | 2–5 مگابیت/ثانیه | 1.5–4 مگابیت/ثانیه |
| 4K (2160p) | 15–40 مگابیت/ثانیه | 10–25 مگابیت/ثانیه | 8–20 مگابیت/ثانیه |
CRF (Constant Rate Factor) — پارامتر کدگذاری در x264 و x265 که کیفیت هدف را به جای نرخ بیت ثابت تعیین میکند. مقیاس CRF از 0 (بدون افت) تا 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 کیلوبیت/ثانیه) برای شبکههای ضعیف تا 1080p (8 مگابیت/ثانیه) برای 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 مگابیت/ثانیه برای H.264، 2–5 مگابیت/ثانیه برای 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 مگابیت/ثانیه برای 1080p استفاده کنید. MP4 تکهتکه (CMAF) را برای LL-HLS فعال کنید و از کدگذاری سختافزاری از طریق MediaCodec یا VideoToolbox استفاده کنید.
خلاصه
ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد
IT Sectr از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.
همچنین بخوانید