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

Автор: 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)Да (всякакви кодеци)
Ниска латентност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 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 се изисква допълнителна обработка на жизнения цикъл чрез 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 и съвместими Smart TV. На 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 създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.

Обсъдете проекта