Медіа та стрімінг у мобільній розробці: що це, які протоколи та як працює

Автор: IT Sectr Опубліковано: 2026-05-20 Час читання: 10 хв

Медіа та стрімінг — одна з ключових компетенцій сучасної мобільної розробки. За даними Statista (2025), світовий ринок відео-стрімінгу перевищить $100 млрд до 2027 року. Мобільні пристрої становлять понад 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 vs 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)Так (будь-які кодеки)
Low-latencyLL-HLS (2–5 с)LL-DASH (2–5 с)

На практиці для iOS-додатків вибирають HLS — AVPlayer працює з ним нативно. Для Android переважніший DASH завдяки ExoPlayer. Обидва протоколи підходять для медіа-стрімінгу на мобільних пристроях. В IT Sectr ми використовуємо обидві технології і рекомендуємо вибирати протокол виходячи з цільової платформи.

Adaptive Bitrate і кодеки

Adaptive Bitrate (ABR) — механізм, при якому плеєр автоматично вибирає якість відео залежно від швидкості з'єднання. Потік кодується в декількох бітрейтах (360p, 720p, 1080p, 4K). Плеєр перемикається між ними без пауз. Кодеки: H.264 (AVC) — базовий, H.265 (HEVC) — ефективніший на 50%, VP9 і AV1 — відкриті альтернативи для Android.

Для hardware decoding у мобільних додатках важливо вибрати правильний кодек. 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 vs 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 потрібна додаткова обробка lifecycle через PlayerView — це особливо важливо при налаштуванні стрімінгу для мобільних додатків.

Transcoding і відеообробка

Transcoding — перекодування відео з одного формату в інший. Використовується для оптимізації медіа-потоків під різні мобільні пристрої (наприклад, H.264 → H.265). На мобільних пристроях транскодинг можливий через MediaCodec (Android) або AVAssetExportSession (iOS). Transcoding ресурсоємний і розряджає батарею — робіть його у фоні, через 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, інші додатки (музика, подкасти) призупиняються або знижують гучність (duck). Без 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 і сумісні Smart TV. На iOS реалізується через AVRoutePickerView або MPNowPlayingInfoCenter. На Android аналог — Google Cast SDK (Chromecast). Обидві технології вимагають налаштування в бінарному файлі і підтримки в плеєрі. Якісний стрімінг у мобільних додатках неможливий без однієї з них.

Часті запитання

Що краще: HLS чи DASH для мобільного додатка?

Для iOS краще HLS — він нативно підтримується AVPlayer. Для Android і кроссплатформних додатків переважніший DASH, оскільки ExoPlayer забезпечує кращу підтримку DASH і більш гнучкий контроль над буферизацією. Вибір протоколу безпосередньо впливає на стрімінг у мобільних додатках.

Чи обов'язково використовувати DRM у додатку для стрімінгу?

DRM обов'язковий тільки якщо ви поширюєте преміальний медіа-контент (фільми, музику, курси). Для користувацького контенту або free-to-air трансляцій 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. Вимагає налаштування в маніфесті та обробки lifecycle.

Навіщо потрібні Audio Focus і Audio Session?

Audio Focus (Android) і Audio Session (iOS) керують одночасним відтворенням звуку з різних джерел. Вони гарантують, що ваш медіа-додаток коректно реагує на дзвінки, сповіщення та запуск інших аудіо-додатків.

Підсумки

  • HLS — стандарт для iOS, DASH — для Android. Вибір протоколу залежить від цільової платформи та вимог до low-latency.
  • ExoPlayer дає повний контроль над відтворенням медіа на Android. AVPlayerViewController — швидка інтеграція на iOS.
  • DRM (Widevine, FairPlay, PlayReady) захищає преміальний медіа-контент від піратства. Multi-DRM — стандартний підхід для преміальних сервісів.
  • Audio Focus (Android) і Audio Session (iOS) керують аудіо-контекстом додатка. Обов'язкові для мобільних додатків з відтворенням медіа.
  • Picture-in-Picture і AirPlay — ключові функції для сучасних медіа-додатків. Реалізація вимагає налаштування lifecycle і плеєра.
  • Adaptive Bitrate (ABR) автоматично підбирає якість відео під швидкість з'єднання на мобільних пристроях. Для транскодингу використовуйте фонові завдання.
  • Hardware Decoding економить заряд батареї мобільних пристроїв. Завжди перевіряйте підтримку кодеків через системні API перед запуском відтворення.

Ми розробимо мобільний застосунок під ключ

IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект