Медиа и стриминг в мобильной разработке: что это, какие протоколы и как работает

Автор: 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 года. Мы проконсультируем вас и предложим наилучшее решение.

Обсудить проект