Интеграция прямых трансляций (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 месяца

Стоимость рассчитывается индивидуально после анализа требований к задержке, аудитории и серверной инфраструктуре.