← Cloudflare Stream / stream / stream-live
Запуск прямой трансляции
После оформления подписки на Stream вы сможете создавать Live Input в Dash или через API. Транслируйте на новый Live Input по RTMPS или SRT. SRT поддерживает более новые видеокодеки и упрощает использование функций доступности, таких как субтитры и несколько аудиодорожек.
Впервые проводите прямую трансляцию? Вам понадобится программное обеспечение для отправки видео в Cloudflare. Узнайте, как начать прямую трансляцию в Stream с помощью OBS Studio.
Использование панели управления
Шаг 1: В панели управления Cloudflare перейдите в Источники прямой трансляции странице и создайте Live Input.
Перейдите в Источники прямой трансляции ↗
Шаг 2: Скопируйте URL RTMPS и ключ и используйте их в приложении для прямых трансляций. Мы рекомендуем использовать Open Broadcaster Software (OBS) ↗ чтобы начать работу.
Шаг 3: Начните трансляцию и просмотрите ее предварительно в Stream Dashboard
В Stream Dashboard уже через несколько секунд после начала трансляции вы увидите предпросмотр того, что видят зрители. Чтобы добавить воспроизведение прямой трансляции на сайт или в приложение, см. Воспроизведение видео.
Использование API
Чтобы запустить прямую трансляцию программно, выполните POST запрос к /live_inputs конечная точка:
curl -X POST \
--header "Authorization: Bearer <API_TOKEN>" \
--data '{"meta": {"name":"test stream"},"recording": { "mode": "automatic" }}' \
https://api.cloudflare.com/client/v4/accounts/{account_id}/stream/live_inputs{
"uid": "f256e6ea9341d51eea64c9454659e576",
"rtmps": {
"url": "rtmps://live.cloudflare.com:443/live/",
"streamKey": "MTQ0MTcjM3MjI1NDE3ODIyNTI1MjYyMjE4NTI2ODI1NDcxMzUyMzcf256e6ea9351d51eea64c9454659e576"
},
"created": "2021-09-23T05:05:53.451415Z",
"modified": "2021-09-23T05:05:53.451415Z",
"meta": {
"name": "test stream"
},
"status": null,
"recording": {
"mode": "automatic",
"requireSignedURLs": false,
"allowedOrigins": null,
"hideLiveViewerCount": false
},
"enabled": true,
"deleteRecordingAfterDays": null,
"preferLowLatency": false
}Необязательные параметры API
Справочник API для /live_inputs
-
enabledboolean по умолчанию:true- Определяет, принимает ли входной поток входящие трансляции. Если установлено значение
false, live input будет отклонять все входящие подключения по RTMPS или SRT. Используйте это свойство, чтобы программно завершать трансляции создателей или запрещать запуск новых трансляций на определённом источнике.
- Определяет, принимает ли входной поток входящие трансляции. Если установлено значение
-
preferLowLatencyboolean по умолчанию:falseБета- Если задано значение true, для этого входящего потока включается бета-версия конвейера Low-Latency HLS. Встроенный плеер Stream будет автоматически использовать LL-HLS, когда это возможно. (Запись
modeсвойство также должно быть установлено вautomatic.)
- Если задано значение true, для этого входящего потока включается бета-версия конвейера Low-Latency HLS. Встроенный плеер Stream будет автоматически использовать LL-HLS, когда это возможно. (Запись
-
deleteRecordingAfterDaysцелое число по умолчанию:null(любой)-
Задаёт дату и время удаления записи, а не входа. Это свойство отсчитывается с момента, когда запись становится доступной и готовой к трансляции. После удаления записи она становится недоступной для просмотра и больше не учитывается в объёме хранилища при выставлении счетов. Минимальное значение:
30, максимальное значение:1096.По завершении трансляции
scheduledDeletionметка времени вычисляется с помощьюdeleteRecordingAfterDaysзначение, если оно присутствует.Обратите внимание: если значение добавляется во входной поток (live input) во время активной трансляции, свойство применится только к будущим трансляциям.
-
-
timeoutSecondsцелое число по умолчанию:0-
timeoutSecondsсвойство определяет, как долго прямой эфир может оставаться отключённым до того, как будет создано новое видео.
-
Следующие четыре свойства вложены в recording объект.
-
modeстрока по умолчанию:off- Если свойству mode задано значение
automatic, прямая трансляция будет автоматически доступна для просмотра через HLS/DASH. Кроме того, она будет автоматически записываться для последующих повторов. По умолчанию режим записи установлен наoff, и вход не будет записываться и будет недоступен для воспроизведения.
- Если свойству mode задано значение
-
requireSignedURLsboolean по умолчанию:false-
requireSignedURLsсвойство указывает, требуются ли подписанные URL для просмотра видео. Эта настройка по умолчанию применяется ко всем видео, записанным из этого источника. Кроме того, при просмотре видео по идентификатору Live Input это поле имеет приоритет над любыми настройками уровня видео.
-
-
allowedOriginsцелое число по умолчанию:null(любой)-
allowedOriginsсвойство можно по желанию указать, чтобы задать список разрешённых источников. Эта настройка по умолчанию применяется ко всем видео, записанным из этого источника. Кроме того, при просмотре видео по идентификатору Live Input это поле имеет приоритет над любыми настройками уровня видео.
-
-
hideLiveViewerCountboolean по умолчанию:false- Ограничьте доступ к счётчику зрителей прямой трансляции и уберите это значение из плеера.
Управление источниками прямой трансляции
Обновление Live Input
Обновление Live Input с помощью PUT запрос:
curl --request PUT \
https://api.cloudflare.com/client/v4/accounts/{account_id}/stream/live_inputs/{input_id} \
--header "Authorization: Bearer <API_TOKEN>" \
--data '{"meta": {"name":"test stream 1"},"recording": { "mode": "automatic", "timeoutSeconds": 10 }}'Включение и отключение входного потока
Источники прямой трансляции по умолчанию включены. Когда источник отключен, он отклоняет входящие подключения RTMPS и SRT. Используйте это, чтобы временно приостановить источник, не удаляя его, завершить активные трансляции и запретить запуск новых трансляций для конкретного источника.
Чтобы отключить Live Input, задайте enabled к false:
curl --request PUT \
https://api.cloudflare.com/client/v4/accounts/{account_id}/stream/live_inputs/{input_id} \
--header "Authorization: Bearer <API_TOKEN>" \
--data '{"enabled": false}'Чтобы снова включить Live Input, задайте enabled к true:
curl --request PUT \
https://api.cloudflare.com/client/v4/accounts/{account_id}/stream/live_inputs/{input_id} \
--header "Authorization: Bearer <API_TOKEN>" \
--data '{"enabled": true}'Смена ключей трансляции
Меняйте учётные данные трансляции для Live Input, если они могли быть переданы не той аудитории, раскрыты в клиентском коде или во время демонстрации экрана, либо их нужно обновить в рамках вашего процесса обеспечения безопасности. Смена ключей не меняет ID Live Input и остальные его настройки.
При смене ключей старые учётные данные аннулируются, трансляции, использующие устаревшие учётные данные, отключаются, а обновлённые учётные данные возвращаются в ответе API.
curl --request POST \
https://api.cloudflare.com/client/v4/accounts/{account_id}/stream/live_inputs/{input_id}/rotate_keys \
--header "Authorization: Bearer <API_TOKEN>"Ответы с данными источника прямой трансляции включают keysRotatedAt, который указывает, когда ключи live input были обновлены в последний раз. Это поле отсутствует для live input, ключи которых никогда не обновлялись.
Удаление входного потока
Удалите входной поток, выполнив DELETE запрос:
curl --request DELETE \
https://api.cloudflare.com/client/v4/accounts/{account_id}/stream/live_inputs/{input_id} \
--header "Authorization: Bearer <API_TOKEN>"Рекомендации, требования и ограничения
Если у вас возникает буферизация, зависание, задержки или другие подобные проблемы, перейдите устранение неполадок прямых трансляций.
Рекомендации
- Авторам следует использовать подходящий битрейт для своих прямых трансляций, как правило значительно ниже 12Mbps (12000Kbps). Для контента с активным движением и высокой частотой кадров обычно требуется более высокий битрейт, а для малоподвижного контента, например слайд-презентаций, подойдёт более низкий битрейт.
- Ваши авторы должны использовать Длительность GOP ↗ (интервал между ключевыми кадрами) от 2 до 8 секунд. Именно в этом диапазоне находится значение по умолчанию в большинстве программных и аппаратных кодировщиков, включая Open Broadcaster Software (OBS). Чем короче GOP, тем меньше задержка у зрителей, но ниже эффективность кодирования. Чем длиннее GOP, тем выше эффективность кодирования, но больше задержка у зрителей. Это компромисс, присущий видеокодированию как таковому, а не ограничение Cloudflare Stream.
- По возможности выбирайте CBR (постоянный битрейт) вместо VBR (переменный битрейт): CBR помогает обеспечить стабильную трансляцию и предотвратить буферизацию и прерывания.
Рекомендации по трансляции Low-Latency HLS Бета
- Отключите B-кадры или установите их количество равным 0. B-кадры несовместимы с LL-HLS и приводят к дрожанию и периодическим задержкам буферизации.
- Чтобы добиться минимальной задержки, используйте размер GOP (или «интервал ключевых кадров») от 2 до 4 секунд.
- По возможности транслируйте на конечную точку RTMP, иначе используйте SRT.
- При использовании OBS выберите профиль задержки «ultra low».
Требования
- Требуются закрытые GOP. Это означает, что если в видео есть B-кадры, они должны ссылаться только на кадры внутри той же GOP. Эта настройка используется по умолчанию в большинстве программных и аппаратных кодировщиков, включая OBS Studio ↗.
- Stream Live поддерживает на входе только видеокодек H.264 и аудиокодек AAC. Это требование не распространяется на входы, которые ретранслируются на выходы Stream Connect. Stream Live поддерживает ADTS, но пока не поддерживает LATM.
- Клиенты должны быть настроены на переподключение при разрыве соединения. Stream Live корректно обрабатывает переподключение и продолжает трансляцию.
Ограничения
- Водяные знаки пока нельзя использовать с прямыми трансляциями.
- Если продолжительность прямой трансляции превышает семь дней, запись будет обрезана до семи дней: сохранятся только первые семь дней видео.