Інтеграція YouTube Live з мобільного застосунку

Інтеграція YouTube Live з мобільного застосунку Ми зіткнулися із задачею: дати користувачам мобільного застосунку можливість стрімити прямо на YouTube Live, минаючи YouTube Studio. Для цього потрібно було отримати RTMP endpoint через OAuth, запустити стрім з камери та керувати ним — все в рамках

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

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

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

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Інтеграція YouTube Live з мобільного застосунку
Середній
~5 днів

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

Часті запитання

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

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    896
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1003
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    597

Інтеграція YouTube Live з мобільного застосунку

Ми зіткнулися із задачею: дати користувачам мобільного застосунку можливість стрімити прямо на YouTube Live, минаючи YouTube Studio. Для цього потрібно було отримати RTMP endpoint через OAuth, запустити стрім з камери та керувати ним — все в рамках одного застосунку. YouTube Live — найпопулярніша платформа, але її інтеграція вимагає розуміння API та мережевих особливостей. Наприклад, неправильне налаштування GOP призводить до відхилення потоку, а квота API швидко вичерпується при частих запитах. Опишемо технічний процес: отримання RTMP endpoint через YouTube Data API v3, запуск стріму на цей endpoint та керування трансляцією.

Авторизація OAuth 2.0 та отримання RTMP endpoint

Трансляція в YouTube складається з двох об'єктів: LiveBroadcast (подія з часом, назвою, налаштуваннями) та LiveStream (технічний потік з RTMP URL та ключем). Вони зв'язуються через bind. Ось послідовність викликів:

  1. Авторизація: OAuth 2.0 з scope https://www.googleapis.com/auth/youtube. На iOS використовуємо AppAuth або ASWebAuthenticationSession; на Android — Google Sign-In або AppAuth-Android.
  2. Створення LiveBroadcast:
POST https://www.googleapis.com/youtube/v3/liveBroadcasts?part=snippet,status,contentDetails { "snippet": { "title": "Моя трансляція", "scheduledStartTime": "YYYY-MM-DDTHH:MM:SSZ" }, "status": { "privacyStatus": "public" }, "contentDetails": { "enableAutoStart": true, "enableAutoStop": true } } 
  1. Створення 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 URL: rtmp://{ingestionAddress}/{streamName}.

Які вимоги до відео для YouTube Live?

Для відправки відео на YouTube використовуємо HaishinKit (iOS) або rtmp-rtsp-stream-client-java (Android). YouTube приймає H.264 + AAC. Вимоги до потоку:

Параметр Значення
Відеокодек H.264 (baseline/main/high)
Максимальна роздільна здатність 1080p60
Аудіокодек AAC-LC, 44.1/48 кГц, ≤256 кbps
Максимальний бітрейт ~6 Mbps (1080p30)
GOP (keyframe interval) ≤2 секунди

Важливо: GOP має бути не більше 2 секунд, інакше YouTube відхиляє потік. На iOS це kVTCompressionPropertyKey_MaxKeyFrameInterval: 60 (для 30 fps); на Android — format.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, 2). Також пам'ятайте: YouTube не приймає RTMPS — тільки RTMP. На iOS налаштуйте ATS, додавши виключення для домену a.rtmps.youtube.com (тільки якщо використовуєте RTMPS).

Як відстежувати статус трансляції?

Перевірка стану потоку:

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

status.streamStatus проходить стадії: inactivetestingactive. Після active трансляція видна глядачам (якщо enableAutoStart: true).

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

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

Polling статусу: кожні 5 секунд до active, потім раз на 30 секунд для concurrentViewers. Враховуйте квоту: 10 000 одиниць/день; liveStreams.list коштує 1 одиницю.

Докладніше про квоту API Кожен запит до YouTube Data API v3 споживає одиниці квоти. Наприклад, `liveBroadcasts.list` коштує 2 одиниці. Для мобільних стрімів ми рекомендуємо використовувати проксі-сервер для кешування відповідей та зменшення навантаження. Докладніше в офіційній документації (YouTube Data API Quota).

Налаштування GOP та бітрейту

Неправильний GOP призводить до відхилення потоку. Ми налаштовуємо ключові кадри кожні 2 секунди та бітрейт не вище 6 Mbps для 1080p. Це гарантує стабільну трансляцію без дропів. Наприклад, для застосунку спортивних трансляцій ми налаштували GOP у 2 секунди та бітрейт 5 Mbps, що дозволило стабільно транслювати 1080p30 без збоїв, а час затримки скоротився з 4 до 2 секунд.

Порівняння RTMP та HLS

RTMP забезпечує затримку в 2-3 рази менше порівняно з HLS, що критично для прямих ефірів. HLS зручний для відтворення на плеєрах, але для трансляцій RTMP залишається стандартом. У таблиці нижче — порівняння протоколів:

Протокол Затримка Підтримка на мобільних Рекомендоване використання
RTMP 2-5 сек Відмінна (нативна) Прямі ефіри
HLS 10-30 сек Добра (через плеєри) Відео за запитом

Що входить в інтеграцію?

  1. Аналіз вимог та поточної архітектури застосунку.
  2. Проектування інтеграції: вибір стеку (HaishinKit / rtmp-rtsp-stream-client), налаштування OAuth.
  3. Реалізація: написання коду для створення трансляцій, стрімінгу, керування.
  4. Тестування на реальних пристроях з контролем квоти та статусу.
  5. Документація: опис API-викликів та інструкції для підтримки.
  6. Підтримка після запуску: моніторинг та оновлення.

Орієнтири за строками та вартістю

Строки реалізації: від 3 до 5 робочих днів залежно від складності. Вартість інтеграції визначається після аналізу. На одному з проєктів завдяки оптимізації параметрів ми скоротили час запуску трансляції на 60%, що дозволило замовнику зменшити витрати на розробку.

Переконайтеся, що ваш застосунок відповідає політикам App Store Review та Google Play Console: трансляції не повинні порушувати авторські права, і потрібна явна згода користувача на використання камери.

Зв'яжіться з нами для оцінки вашого проєкту — ми маємо понад 5 років досвіду в мобільній розробці та більше 10 проєктів зі стрімінгом. Замовте інтеграцію зараз та отримайте консультацію щодо оптимізації потоків.