Інтеграція прямих трансляцій (Live Streaming) в мобільний додаток

TRUETECH займається розробкою, підтримкою та обслуговуванням мобільних додатків iOS, Android, PWA. Маємо великий досвід та експертизу для публікації мобільних додатків до популярних маркетів Google Play, App Store, Amazon, AppGallery та інші.

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1735 послуг
Інтеграція прямих трансляцій (Live Streaming) в мобільний додаток
Складний
від 1 тижня до 3 місяців
Часті запитання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    495

Інтеграція прямих трансляцій (Live Streaming) у мобільний застосунок

Live Streaming — одна з найскладніших медіазавдань у мобільній розробці: потрібно одночасно захопити відео/аудіо з камери, закодувати в реальному часі, передати по мережі, прийняти на стороні глядачів та програти з мінімальною затримкою. Кожен з цих кроків — окрема інженерна задача.

Архітектура системи

Мобільний застосунок — лише один компонент. Повноцінний live-стрімінг вимагає:

  • Sender (стрімер): захоплення + кодування + відправка потоку на медіа-сервер
  • Медіа-сервер: прийом RTMP, транскодування, розповсюдження через HLS/RTMP/WebRTC глядачам
  • Viewer (глядач): програвання потоку HLS/RTMP/WebRTC
  • Signaling (для WebRTC): обмін SDP/ICE кандидатами

Популярні медіа-сервери: Wowza Streaming Engine, nginx-rtmp-module, Ant Media Server (безплатний для базових сценаріїв), AWS IVS (Amazon Interactive Video Service — керований сервіс).

Стрімінг з камери: RTMP

iOS. Нативного RTMP-клієнта немає. Використовуємо HaishinKit — зрілу бібліотеку з підтримкою RTMP, SRT, HLS-виведення:

import HaishinKit

let rtmpConnection = RTMPConnection()
let rtmpStream = RTMPStream(connection: rtmpConnection)

// Захоплення з камери
rtmpStream.attachCamera(AVCaptureDevice.default(for: .video))
rtmpStream.attachAudio(AVCaptureDevice.default(for: .audio))

// Параметри кодування
rtmpStream.videoSettings = VideoCodecSettings(
    videoSize: CGSize(width: 1280, height: 720),
    bitRate: 2_000_000,  // 2 Мбіт/с
    frameInterval: 2,    // GOP size
    frameRate: 30
)
rtmpStream.audioSettings = AudioCodecSettings(
    bitRate: 128_000  // 128 кбіт/с AAC
)

// Попередній перегляд
let hkView = MTHKView(frame: previewView.bounds)
rtmpStream.addOutput(hkView)
previewView.addSubview(hkView)

// Підключення та публікація
rtmpConnection.connect("rtmp://your-server/live")
rtmpStream.publish("stream-key")

Android. Larix Broadcaster SDK — комерційний, професійний. Для безплатних рішень: rtmp-rtsp-stream-client-java (github.com/pedroSG94) або Streampack (github.com/thibaultbee). CameraX для захоплення + MediaCodec для кодування + кастомний RTMP-клієнт.

// Приклад Streampack
val streamer = CameraStreamer(context, enableAudio = true)
streamer.configure(
    AudioConfig(startBitrate = 128_000, sampleRate = 44100, channelConfig = CHANNEL_IN_STEREO),
    VideoConfig(startBitrate = 2_000_000, resolution = Size(1280, 720), fps = 30)
)
streamer.startPreview(surface)
streamer.connect("rtmp://your-server/live/stream-key")
streamer.startStream()

Альтернативи RTMP: SRT та WHIP

SRT (Secure Reliable Transport) — заміна RTMP для нестійких мереж. HaishinKit підтримує SRT нативно. Затримка ~1–3 с при втратах пакетів до 30%.

WHIP (WebRTC HTTP Ingest Protocol) — стандарт 2022 року для інжесту через WebRTC. Затримка < 500 мс. Підтримується Cloudflare Stream, Ant Media 2.x, mediasoup. На мобільних — WebRTC через WebRTC.org SDK.

Перегляд трансляції глядачами

HLS (стандарт для масового перегляду). Затримка 5–30 с. iOS: нативний AVPlayer. Android: ExoPlayer. Медіа-сервер нарізає RTMP-потік на HLS-сегменти по 2–6 с.

Low-Latency HLS (LL-HLS). Затримка 1–3 с. Apple TV+ використовує цей підхід. AVPlayer підтримує LL-HLS нативно з iOS 14. Сервер має підтримувати директиви EXT-X-PART.

WebRTC для ультранизької затримки (< 500 мс). WebRTC.org SDK на клієнтах, сигнальний сервер (Socket.io, власний) для обміну SDP. Ant Media, Janus, mediasoup, Cloudflare Calls — серверні варіанти.

Технологія Затримка Масштабованість Складність
RTMP → HLS 15–30 с висока низька
RTMP → LL-HLS 2–5 с висока середня
SRT → HLS 10–20 с висока середня
WebRTC < 500 мс середня висока
RTMP → RTMP 1–5 с низька низька

Чат у реальному часі

WebSocket або Firebase Realtime Database / Firestore — обидва варіанти працюють для чату трансляції. Firebase Firestore — простіше інтегрується для невеликих аудиторій (до ~5000 одночасних глядачів). Для більшого — власний WebSocket-сервер (Node.js + Socket.io, Go + Gorilla WebSocket).

Антиспам та модерація — окрема задача: muted users, banned users, rate limiting на рівні бекенду.

Оцінка та строки

Обсяг залежить від архітектури, яку ми визначаємо на етапі аудиту вимог. Базові орієнтири:

  • MVP: RTMP-стрімінг з однієї платформи (iOS або Android) + HLS-перегляд + базовий чат — 2–3 тижні
  • Повнофункціональна система: обидві платформи + LL-HLS/WebRTC + модерація чату + запис трансляції + VOD — 2–3 місяці

Вартість розраховується індивідуально після аналізу вимог до затримки, аудиторії та серверної інфраструктури.