Интеграция трансляции в YouTube Live из мобильного приложения

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

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

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

Услуги, которые мы предлагаем
Показано 1 из 1Все 1735 услуг
Интеграция трансляции в YouTube Live из мобильного приложения
Средний
~5 дней
Часто задаваемые вопросы

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

Этапы разработки

Последние работы

  • 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

Интеграция трансляции в YouTube Live из мобильного приложения

YouTube Live — самая популярная платформа для публичного стриминга. Интеграция из мобильного приложения означает: получить RTMP endpoint пользователя через YouTube Data API v3, запустить стрим с камеры на этот endpoint и управлять трансляцией (старт, стоп, метаданные) — всё из вашего приложения, не из YouTube Studio.

YouTube Data API v3: получение RTMP endpoint

Трансляция в YouTube — это два объекта: LiveBroadcast (событие с временем, названием, настройками конфиденциальности) и LiveStream (технический поток с RTMP endpoint и stream key). Они связываются через bind.

Последовательность API вызовов:

1. Авторизация. OAuth 2.0 scope: https://www.googleapis.com/auth/youtube. На iOS: AppAuth library или ASWebAuthenticationSession. На Android: Google Sign-In SDK или AppAuth-Android.

2. Создание LiveBroadcast:

POST https://www.googleapis.com/youtube/v3/liveBroadcasts?part=snippet,status,contentDetails
{
  "snippet": {
    "title": "Моя трансляция",
    "scheduledStartTime": "2025-03-28T12:00:00Z"
  },
  "status": { "privacyStatus": "public" },
  "contentDetails": { "enableAutoStart": true, "enableAutoStop": true }
}

enableAutoStart: true — трансляция начнётся автоматически при поступлении видеопотока. Без этого нужен отдельный вызов transition API.

3. Создание LiveStream:

POST https://www.googleapis.com/youtube/v3/liveStreams?part=snippet,cdn
{
  "snippet": { "title": "Mobile Stream" },
  "cdn": {
    "frameRate": "30fps",
    "ingestionType": "rtmp",
    "resolution": "1080p"
  }
}

Ответ содержит ingestionInfo.ingestionAddress (RTMP URL) и ingestionInfo.streamName (stream key).

4. Bind:

POST .../liveBroadcasts/bind?id={broadcastId}&part=id,snippet&streamId={streamId}

Итого: rtmp://{ingestionAddress}/{streamName} — полный RTMP URL для стриминга.

Стриминг на полученный endpoint

Используем HaishinKit (iOS) или rtmp-rtsp-stream-client-java (Android) — как в стандартном RTMP стриминге. YouTube принимает H.264 + AAC.

YouTube требования к потоку:

  • Видео: H.264, baseline/main/high profile, до 1080p60
  • Аудио: AAC-LC, 44.1 или 48 кГц, до 256 кbps
  • Максимальный битрейт для 1080p30: ~6 Mbps
  • GOP (keyframe interval): 2 секунды максимум — важно, иначе YouTube отклоняет поток

kVTCompressionPropertyKey_MaxKeyFrameInterval: 60 (для 30 fps = keyframe каждые 2 секунды) на iOS. На Android: format.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, 2).

YouTube не принимает RTMPS (TLS) на rtmps:// — только rtmp://. Это важно при настройке сетевых запросов на iOS (ATS требует HTTPS, но RTMP не HTTP — пишем исключение в Info.plist для домена a.rtmps.youtube.com только если используете RTMPS endpoint).

Управление трансляцией через API

Проверка состояния потока:

GET .../liveStreams?part=status&id={streamId}

status.streamStatus: inactivetestingactive. После active трансляция видна зрителям (при enableAutoStart: true).

Завершение трансляции:

POST .../liveBroadcasts/transition?broadcastStatus=complete&id={broadcastId}&part=id,status

Обновление метаданных во время трансляции (название, описание):

PUT .../liveBroadcasts?part=snippet

Polling статуса: запрашиваем каждые 5 секунд пока streamStatus != active. Не чаще — YouTube API квота 10000 единиц/день, liveStreams.list стоит 1 единицу.

Превью трансляции в приложении

YouTube предоставляет monitorStream.embedHtml — embed URL трансляции. Встраиваем через WKWebView / WebView для просмотра задержанного потока (YouTube добавляет 5-20 секунд задержки). Для просмотра «себя» без задержки — используем превью с камеры локально.

Счётчик зрителей: GET .../videos?part=liveStreamingDetails&id={broadcastId}liveStreamingDetails.concurrentViewers. Запрашиваем каждые 30 секунд во время трансляции.

Квоты и ограничения

YouTube Data API квота: 10 000 единиц/день бесплатно. Создание LiveBroadcast — 50 единиц. Создание LiveStream — 50 единиц. Polling liveStreams.list — 1 единица/запрос. При активном использовании (много трансляций в день) нужно подавать заявку на увеличение квоты в Google Cloud Console.

YouTube запрещает одновременное создание более 5 активных трансляций на аккаунт. Для SaaS-платформы где много пользователей — каждый работает со своим аккаунтом (OAuth от имени пользователя), не от имени приложения.

Сроки: интеграция OAuth + создание трансляции через API + запуск RTMP стрима + управление статусом — 3-4 рабочих дня.