رسانه و استریم در توسعه موبایل: چیست، چه پروتکل‌هایی و چگونه کار می‌کند

نویسنده: IT Sectr منتشر شده: 2026-05-20 زمان مطالعه: 10 دقیقه

رسانه و استریم یکی از شایستگی‌های کلیدی توسعه مدرن موبایل است. به گزارش Statista (2025)، بازار جهانی استریم ویدیو تا سال 2027 از 100 میلیارد دلار فراتر خواهد رفت. دستگاه‌های موبایل بیش از 60٪ از کل ترافیک پلتفرم‌های استریم را تشکیل می‌دهند. توسعه‌دهنده باید پروتکل‌ها، پخش‌کننده‌ها، مکانیسم‌های حفاظت از محتوا و ویژگی‌هایی مانند Picture-in-Picture را درک کند. استریم با کیفیت در برنامه‌های موبایل نیاز به تسلط بر تمام این فناوری‌ها دارد.

نکات اصلی

  • پروتکل‌های اصلی استریم — HLS (Apple) و DASH (MPEG). HLS برای iOS، DASH برای Android و راه‌حل‌های چندپلتفرمی ترجیح داده می‌شود.
  • ExoPlayer (Android) و AVPlayer (iOS) پخش‌کننده‌های استاندارد هستند. ExoPlayer انعطاف‌پذیرتر است، AVPlayer ادغام آسان‌تری دارد. برای توسعه چندپلتفرمی Google Cast SDK وجود دارد.
  • سیستم‌های DRM (Widevine، FairPlay، PlayReady) از محتوای پریمیوم محافظت می‌کنند. Widevine استاندارد Android، FairPlay استاندارد iOS، PlayReady استاندارد Windows/Xbox است.
  • Audio Focus (Android) و Audio Session (iOS) پخش صدا را در طول تماس‌ها و اعلان‌ها مدیریت می‌کنند. بدون آنها تجربه کاربر ناقص خواهد بود.
  • Picture-in-Picture و AirPlay ویژگی‌های ضروری برای برنامه‌های ویدیوی پریمیوم هستند. PiP امکان تماشای ویدیو در یک پنجره کوچک هنگام کوچک‌سازی برنامه را فراهم می‌کند.

پروتکل‌های HLS و DASH

HTTP Live Streaming (HLS) پروتکلی برای استریم در برنامه‌های موبایل است که توسط Apple توسعه یافته است. ویدیو را به بخش‌های کوچک (معمولاً 6 تا 10 ثانیه) تقسیم می‌کند و آنها را از طریق HTTP معمولی ارسال می‌کند. پخش‌کننده یک لیست پخش (.m3u8) دانلود می‌کند و به ترتیب بخش‌ها را بارگیری می‌کند و کیفیت را با سرعت اتصال تطبیق می‌دهد. HLS استریم قابل اعتمادی را در برنامه‌های موبایل در تمام دستگاه‌های Apple فراهم می‌کند و استاندارد دوفاکتو برای iOS است.

HLS در مقابل DASH

DASH (Dynamic Adaptive Streaming over HTTP) یک استاندارد باز MPEG برای تحویل رسانه به برنامه‌های موبایل است. برخلاف HLS، DASH از فرمت MP4 برای بخش‌ها و یک مانیفست XML (MPD) به جای .m3u8 استفاده می‌کند. DASH کنترل بیشتری روی کدک‌ها ارائه می‌دهد و از فرمت‌های بیشتری پشتیبانی می‌کند. انتخاب بین HLS و DASH یک تصمیم کلیدی هنگام توسعه استریم برای دستگاه‌های موبایل است. مقایسه پروتکل‌ها در جدول زیر نشان داده شده است.

پارامتر HLS DASH
توسعه‌دهندهAppleMPEG (استاندارد باز)
فرمت لیست پخش.m3u8.mpd (XML)
بخش‌ها.ts یا fMP4fMP4 (هر کدکی)
پشتیبانی بومیiOS، macOS، tvOSAndroid، وب
نرخ بیت تطبیقیبله (avc1, mp4a)بله (هر کدکی)
تأخیر کمLL-HLS (2–5 ثانیه)LL-DASH (2–5 ثانیه)

در عمل، برنامه‌های iOS HLS را انتخاب می‌کنند — AVPlayer به صورت بومی با آن کار می‌کند. برای Android، DASH به لطف ExoPlayer ترجیح داده می‌شود. هر دو پروتکل برای استریم رسانه در دستگاه‌های موبایل مناسب هستند. در IT Sectr، ما از هر دو فناوری استفاده می‌کنیم و توصیه می‌کنیم پروتکل را بر اساس پلتفرم هدف انتخاب کنید.

نرخ بیت تطبیقی و کدک‌ها

Adaptive Bitrate (ABR) مکانیزمی است که در آن پخش‌کننده به طور خودکار کیفیت ویدیو را بر اساس سرعت اتصال انتخاب می‌کند. استریم با چندین نرخ بیت (360p، 720p، 1080p، 4K) کدگذاری می‌شود. پخش‌کننده بدون مکث بین آنها جابجا می‌شود. کدک‌ها: H.264 (AVC) — پایه، H.265 (HEVC) — 50٪ کارآمدتر، VP9 و AV1 — جایگزین‌های باز برای Android.

برای رمزگشایی سخت‌افزاری در برنامه‌های موبایل، انتخاب کدک مناسب مهم است. Hardware Decoding از GPU/پردازنده ویدیوی دستگاه استفاده می‌کند و باتری کمتری مصرف می‌کند. Software Decoding روی CPU کار می‌کند — زمانی استفاده می‌شود که رمزگشایی سخت‌افزاری در دسترس نباشد. IT Sectr توصیه می‌کند همیشه پشتیبانی کدک را از طریق MediaCodec (Android) یا AVAssetTrack (iOS) برای پخش بهینه رسانه در دستگاه‌های موبایل بررسی کنید.

پخش‌کننده‌ها: ExoPlayer و AVPlayer

ExoPlayer یک پخش‌کننده رسانه از Google برای Android است که برای پخش رسانه در برنامه‌های موبایل بهینه شده است. برخلاف MediaPlayer، ExoPlayer به رمزگشایی سخت‌افزاری وابسته نیست و از طرح‌های سفارشی از طریق ماژول‌های توسعه پشتیبانی می‌کند. با HLS، DASH، SmoothStreaming و RTSP کار می‌کند. ExoPlayer پخش‌کننده اصلی YouTube، Google TV و Android TV است.

ExoPlayer در مقابل AVPlayerViewController

AVPlayer و AVPlayerViewController پخش‌کننده‌های Apple برای iOS، macOS، tvOS هستند. AVPlayer یک API سطح پایین است، AVPlayerViewController یک پوسته UI آماده با PiP و AirPlay است. تفاوت‌های اصلی: ExoPlayer کنترل کامل بر بافرینگ و رندرینگ ارائه می‌دهد، AVPlayerViewController ادغام سریع با حداقل کد را فراهم می‌کند. انتخاب پخش‌کننده مستقیماً بر کیفیت استریم در برنامه‌های موبایل تأثیر می‌گذارد.

kotlin
// ExoPlayer — راه‌اندازی پخش‌کننده پایه در Android
val player = ExoPlayer.Builder(this)
    .setMediaSource(ProgressiveMediaSource.Factory(DefaultHttpDataSource.Factory()))
    .build()
val mediaItem = MediaItem.fromUri("https://example.com/stream.m3u8")
player.setMediaItem(mediaItem)
player.prepare()
player.playWhenReady = true

کد راه‌اندازی حداقل ExoPlayer را نشان می‌دهد: ایجاد نمونه، تنظیم آیتم رسانه و شروع پخش. ExoPlayer به طور خودکار چرخه حیات Activity را از طریق player.release() در onStop مدیریت می‌کند. برای Android TV یا PiP، مدیریت اضافی چرخه حیات از طریق PlayerView مورد نیاز است — این هنگام راه‌اندازی استریم برای برنامه‌های موبایل بسیار مهم است.

ترانسکدینگ و پردازش ویدیو

Transcoding تبدیل ویدیو از یک فرمت به فرمت دیگر است. برای بهینه‌سازی جریان‌های رسانه برای دستگاه‌های موبایل مختلف استفاده می‌شود (به عنوان مثال، H.264 → H.265). در دستگاه‌های موبایل، ترانسکدینگ از طریق MediaCodec (Android) یا AVAssetExportSession (iOS) امکان‌پذیر است. ترانسکدینگ منابع زیادی مصرف می‌کند و باتری را خالی می‌کند — آن را در پس‌زمینه از طریق WorkManager یا BGTaskScheduler انجام دهید.

DRM: Widevine، FairPlay و PlayReady

Digital Rights Management (DRM) سیستم‌هایی برای محافظت از محتوای رسانه در برابر کپی غیرمجاز هستند. برای استریم رسانه پریمیوم در برنامه‌های موبایل از سه فناوری اصلی استفاده می‌شود: Widevine (Google)، FairPlay (Apple) و PlayReady (Microsoft). بدون DRM، سرویس‌های پریمیوم (Netflix، Spotify، Disney+) نمی‌توانند محتوا توزیع کنند.

مقایسه سیستم‌های DRM

Widevine استاندارد حفاظت DRM برای Android است، در سه سطح موجود: L3 (رمزگذاری نرم‌افزاری)، L2، L1 (رمزگذاری سخت‌افزاری، فقط Trusted Execution Environment). FairPlay سیستم اختصاصی Apple است، از SVP (Secure Video Pipeline) در سطح تراشه استفاده می‌کند. PlayReady سیستم Microsoft است، در دستگاه‌های Xbox و Windows رایج است.

Multi-DRM رویکردی است که در آن از یک پلتفرم واحد برای مدیریت همه کلیدهای DRM استفاده می‌کنید. مثال: EZDRM یا Verimatrix. آنها مجوزهای Widevine، FairPlay و PlayReady را از طریق یک API یکپارچه صادر می‌کنند. Multi-DRM به ویژه برای رسانه پریمیوم در دستگاه‌های موبایل مهم است. در IT Sectr، ما multi-DRM را از طریق تجمیع‌کنندگان پیاده‌سازی می‌کنیم — این در مقایسه با ادغام هر DRM به طور جداگانه در زمان و هزینه صرفه‌جویی می‌کند.

پخش صدا: Audio Focus و Audio Session

Audio Focus (Android) سیستمی برای مدیریت جریان‌های صوتی برای پخش رسانه در برنامه‌های موبایل است. وقتی برنامه شما Audio Focus درخواست می‌کند، سایر برنامه‌ها (موسیقی، پادکست) متوقف می‌شوند یا صدای خود را کاهش می‌دهند (ducking). بدون Audio Focus، دو برنامه به طور همزمان پخش می‌شوند و نویز ایجاد می‌کنند.

Audio Focus در Android

Android جریان‌های صوتی را به انواع تقسیم می‌کند: MUSIC، VOICE_CALL، ALARM، NOTIFICATION. برای یک پخش‌کننده رسانه، باید AudioManager.AUDIOFOCUS_GAIN را درخواست کنید. هنگام از دست دادن فوکوس (تماس ورودی)، باید پخش رسانه را متوقف کرده و پس از بازگشت فوکوس از سر بگیرید. پیاده‌سازی از طریق AudioManager.OnAudioFocusChangeListener.

Audio Session در iOS

Audio Session (iOS) معادل Audio Focus برای برنامه‌های رسانه در دستگاه‌های موبایل Apple است. از طریق AVAudioSession.sharedInstance() پیکربندی می‌شود. دسته‌بندی‌ها: .playback (اجباری برای ویدیو)، .soloAmbient (پیش‌فرض، سکوت هنگام قفل)، .playAndRecord (برای ضبط). برای استریم، از .playback با گزینه .allowAirPlay استفاده کنید.

PiP و AirPlay

Picture-in-Picture (PiP) حالتی است که در آن محتوای رسانه در یک پنجره شناور کوچک هنگام کوچک‌سازی برنامه یا رفتن به صفحه دیگر به پخش ادامه می‌دهد. PiP به استانداردی برای برنامه‌های رسانه در دستگاه‌های موبایل تبدیل شده است — iOS (از iPadOS 13) و Android (از Android 8.0).

PiP در Android

در Android، PiP از طریق Activity.isInPictureInPictureMode() و PictureInPictureParams.Builder فعال می‌شود. برنامه باید در حالت چند پنجره‌ای باشد. MediaSession برای کنترل پخش رسانه از پنجره PiP مورد نیاز است. در مانیفست، android:supportsPictureInPicture="true" را مشخص کنید.

AirPlay و Chromecast

AirPlay پروتکل Apple برای استریم رسانه به Apple TV، HomePod و تلویزیون‌های هوشمند سازگار است. در iOS، از طریق AVRoutePickerView یا MPNowPlayingInfoCenter پیاده‌سازی می‌شود. در Android، معادل Google Cast SDK (Chromecast) است. هر دو فناوری نیاز به پیکربندی در فایل باینری و پشتیبانی در پخش‌کننده دارند. استریم با کیفیت در برنامه‌های موبایل بدون یکی از آنها غیرممکن است.

سوالات متداول

کدام بهتر است: HLS یا DASH برای برنامه موبایل؟

برای iOS HLS بهتر است — به صورت بومی توسط AVPlayer پشتیبانی می‌شود. برای Android و برنامه‌های چندپلتفرمی، DASH ترجیح داده می‌شود زیرا ExoPlayer پشتیبانی بهتری از DASH و کنترل بافرینگ انعطاف‌پذیرتری ارائه می‌دهد. انتخاب پروتکل مستقیماً بر استریم در برنامه‌های موبایل تأثیر می‌گذارد.

آیا استفاده از DRM در برنامه استریم اجباری است؟

DRM اجباری است فقط اگر محتوای رسانه پریمیوم (فیلم، موسیقی، دوره) توزیع می‌کنید. برای محتوای تولید شده توسط کاربر یا پخش رایگان، DRM لازم نیست. IT Sectr توصیه می‌کند بدون DRM شروع کنید و فقط در صورت نیاز آن را اضافه کنید.

تفاوت بین ExoPlayer و AVPlayerViewController چیست؟

ExoPlayer یک پخش‌کننده رسانه قابل تنظیم برای Android با پشتیبانی از DASH، HLS و SmoothStreaming است. AVPlayerViewController یک پخش‌کننده بومی iOS برای HLS با PiP و AirPlay است. ExoPlayer کنترل بیشتری ارائه می‌دهد، AVPlayerViewController به کد کمتری نیاز دارد. هر دو پخش رسانه با کیفیت را در برنامه‌های موبایل فراهم می‌کنند.

Picture-in-Picture (PiP) چیست و چگونه آن را پیاده‌سازی کنیم؟

PiP حالتی است که در آن محتوای رسانه در یک پنجره کوچک هنگام کوچک‌سازی برنامه به پخش ادامه می‌دهد. در iOS از طریق نماینده AVPlayerViewController، در Android از طریق PictureInPictureParams فعال می‌شود. نیاز به پیکربندی مانیفست و مدیریت چرخه حیات دارد.

چرا Audio Focus و Audio Session مورد نیاز هستند؟

Audio Focus (Android) و Audio Session (iOS) پخش همزمان صدا از منابع مختلف را مدیریت می‌کنند. آنها تضمین می‌کنند که برنامه رسانه شما به تماس‌ها، اعلان‌ها و راه‌اندازی سایر برنامه‌های صوتی به درستی پاسخ دهد.

خلاصه

  • HLS استاندارد iOS است، DASH استاندارد Android. انتخاب پروتکل به پلتفرم هدف و نیازهای تأخیر کم بستگی دارد.
  • ExoPlayer کنترل کامل بر پخش رسانه در Android ارائه می‌دهد. AVPlayerViewController ادغام سریع در iOS فراهم می‌کند.
  • DRM (Widevine، FairPlay، PlayReady) از محتوای رسانه پریمیوم در برابر دزدی دریایی محافظت می‌کند. Multi-DRM رویکرد استاندارد برای سرویس‌های پریمیوم است.
  • Audio Focus (Android) و Audio Session (iOS) زمینه صوتی برنامه را مدیریت می‌کنند. برای برنامه‌های موبایل با پخش رسانه ضروری است.
  • Picture-in-Picture و AirPlay ویژگی‌های کلیدی برای برنامه‌های رسانه مدرن هستند. پیاده‌سازی نیاز به پیکربندی چرخه حیات و پخش‌کننده دارد.
  • Adaptive Bitrate (ABR) به طور خودکار کیفیت ویدیو را با سرعت اتصال در دستگاه‌های موبایل تنظیم می‌کند. برای ترانسکدینگ از کارهای پس‌زمینه استفاده کنید.
  • Hardware Decoding باتری دستگاه‌های موبایل را ذخیره می‌کند. همیشه قبل از شروع پخش، پشتیبانی کدک را از طریق APIهای سیستم بررسی کنید.

ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد

IT Sectr از سال 2017 برنامه‌های iOS و Android را برای استارتاپ‌ها و کسب‌وکارها ایجاد می‌کند. ما به شما مشاوره می‌دهیم و بهترین راه‌حل را پیشنهاد خواهیم کرد.

بحث درباره پروژه