LiveBroadcasts

API теперь поддерживает возможность помечать ваши прямые трансляции как «предназначенные для детей», а ресурс liveBroadcast теперь содержит свойство, которое определяет статус этой прямой трансляции «сделано для детей». Условия использования API-сервисов YouTube и Правила для разработчиков также были обновлены 10 января 2020 года. Для получения дополнительной информации см. историю изменений API-сервиса YouTube Live Streaming и Условия использования API-сервисов YouTube .

Ресурс liveBroadcast представляет собой событие, которое будет транслироваться в режиме реального времени на YouTube.

Методы

API поддерживает следующие методы для ресурсов liveBroadcasts :

list
Возвращает список трансляций YouTube, соответствующих параметрам запроса API. Попробуйте сейчас .
insert
Создает трансляцию. Попробуйте сейчас .
update
Обновляет трансляцию. Например, вы можете изменить настройки трансляции, определенные в объекте contentDetails ресурса liveBroadcast . Попробуйте сейчас .
delete
Удаляет трансляцию. Попробуйте сейчас .
bind
Привязывает трансляцию YouTube к потоку или удаляет существующую привязку между трансляцией и потоком. Трансляция может быть привязана только к одному видеопотоку, хотя видеопоток может быть привязан к более чем одной трансляции. Попробуйте сейчас .
transition
Изменяет статус прямой трансляции YouTube и инициирует любые процессы, связанные с новым статусом. Например, когда вы переводите статус трансляции на testing , YouTube начинает передавать видео в поток монитора этой трансляции. Перед вызовом этого метода следует убедиться, что значение свойства status.streamStatus для потока, привязанного к вашей трансляции, active . Попробуйте сейчас .
cuepoint
Вставляет точку разметки в прямую трансляцию. Ключевая точка может вызвать рекламную паузу.

Представление ресурсов

Следующая структура JSON показывает формат ресурса liveBroadcasts :

{
  "kind": "youtube#liveBroadcast",
  "etag": etag,
  "id": string,
  "snippet": {
    "publishedAt": datetime,
    "channelId": string,
    "title": string,
    "description": string,
    "thumbnails": {
      (key): {
        "url": string,
        "width": unsigned integer,
        "height": unsigned integer
      }
    },
    "scheduledStartTime": datetime,
    "scheduledEndTime": datetime,
    "actualStartTime": datetime,
    "actualEndTime": datetime,
    "isDefaultBroadcast": boolean,
    "liveChatId": string
  },
  "status": {
    "lifeCycleStatus": string,
    "privacyStatus": string,
    "recordingStatus": string,
    "madeForKids": string,
    "selfDeclaredMadeForKids": string,
  },
  "contentDetails": {
    "boundStreamId": string,
    "boundStreamLastUpdateTimeMs": datetime,
    "monitorStream": {
      "enableMonitorStream": boolean,
      "broadcastStreamDelayMs": unsigned integer,
      "embedHtml": string
    },
    "enableEmbed": boolean,
    "enableDvr": boolean,
    "recordFromStart": boolean,
    "enableClosedCaptions": boolean,
    "closedCaptionsType": string,
    "projection": string,
    "enableLowLatency": boolean,
    "latencyPreference": boolean,
    "enableAutoStart": boolean,
    "enableAutoStop": boolean
  },
  "statistics": {
    "totalChatCount": unsigned long
  },
  "monetizationDetails": {
      "cuepointSchedule": {
        "enabled": boolean,
        "pauseAdsUntil": datetime,
        "scheduleStrategy": string,
        "repeatIntervalSecs": unsigned integer,
      }
    }
  }
}

Характеристики

В следующей таблице определены свойства, которые появляются в этом ресурсе:

Характеристики
kind string
Идентифицирует тип ресурса API. Значением будет youtube#liveBroadcast .
etag etag
Etag этого ресурса.
id string
Идентификатор, который YouTube присваивает для уникальной идентификации трансляции.
snippet object
Объект snippet содержит основные сведения о событии, включая его заголовок, описание, время начала и время окончания.
snippet. publishedAt datetime
Дата и время добавления трансляции в расписание прямых трансляций YouTube. Значение указывается в формате ISO 8601 ( YYYY-MM-DDThh:mm:ss.sZ ).
snippet. channelId string
Идентификатор, который YouTube использует для уникальной идентификации канала, публикующего трансляцию.
snippet. title string
Название передачи. Обратите внимание, что трансляция представляет собой ровно одно видео YouTube. Вы можете установить это поле, изменив ресурс трансляции или задав поле title соответствующего видеоресурса.
snippet. description string
Описание трансляции. Как и в случае с title , вы можете установить это поле, изменив ресурс трансляции или задав поле description соответствующего видеоресурса.
snippet. thumbnails object
Карта миниатюр изображений, связанных с трансляцией. Для каждого вложенного объекта в этот объект ключом является имя миниатюры изображения, а значением — объект, содержащий другую информацию о миниатюре.
snippet.thumbnails. (key) object
Допустимые ключевые значения:
  • default — миниатюра изображения по умолчанию. Миниатюра видео по умолчанию (или ресурса, ссылающегося на видео, например элемент плейлиста или результат поиска) имеет ширину 120 пикселей и высоту 90 пикселей. Миниатюра канала по умолчанию имеет ширину 88 пикселей и высоту 88 пикселей.
  • medium — версия миниатюры с более высоким разрешением. Для видео (или ресурса, ссылающегося на видео) это изображение имеет ширину 320 пикселей и высоту 180 пикселей. Для канала это изображение имеет ширину 240 пикселей и высоту 240 пикселей.
  • high — версия миниатюры с высоким разрешением. Для видео (или ресурса, ссылающегося на видео) это изображение имеет ширину 480 пикселей и высоту 360 пикселей. Для канала это изображение имеет ширину 800 пикселей и высоту 800 пикселей.
snippet.thumbnails.(key). url string
URL-адрес изображения.
snippet.thumbnails.(key). width unsigned integer
Ширина изображения.
snippet.thumbnails.(key). height unsigned integer
Высота изображения.
snippet. scheduledStartTime datetime
Дата и время начала трансляции. Значение указывается в формате ISO 8601 ( YYYY-MM-DDThh:mm:ss.sZ ). Creator Studio поддерживает возможность создания трансляции без планирования времени начала. В этом случае трансляция начинается всякий раз, когда владелец канала начинает потоковую передачу. Для этих трансляций значение datetime соответствует нулевому времени UNIX, и это значение нельзя изменить через API или в Creator Studio.
snippet. scheduledEndTime datetime
Дата и время окончания трансляции. Значение указывается в формате ISO 8601 ( YYYY-MM-DDThh:mm:ss.sZ ). Если ресурс liveBroadcast не указывает значение для этого свойства, то трансляция будет продолжаться неопределенное время. Аналогично, если вы не укажете значение для этого свойства, YouTube будет рассматривать трансляцию так, как будто она будет продолжаться бесконечно.
snippet. actualStartTime datetime
Дата и время фактического начала трансляции. Эта информация доступна только в том случае, если трансляция находится live . Значение указывается в формате ISO 8601 ( YYYY-MM-DDThh:mm:ss.sZ ).
snippet. actualEndTime datetime
Дата и время фактического окончания трансляции. Эта информация доступна только после complete состояния трансляции. Значение указывается в формате ISO 8601 ( YYYY-MM-DDThh:mm:ss.sZ ).
snippet. isDefaultBroadcast boolean
Это свойство станет устаревшим 1 сентября 2020 года или после этой даты. В этот момент YouTube прекратит создание потока по умолчанию и трансляции по умолчанию, если на канале будет включена прямая трансляция. Дополнительную информацию см. в объявлении об устаревании .
Это свойство указывает, является ли данная трансляция трансляцией по умолчанию.

Как работают трансляции по умолчанию

Когда на канале YouTube включена прямая трансляция, YouTube создает для канала поток по умолчанию и трансляцию по умолчанию. Поток определяет, как владелец канала отправляет живое видео на YouTube, а трансляция – это то, как зрители могут видеть поток по умолчанию. Владелец канала может использовать методы liveStreams.list и liveBroadcasts.list для идентификации этих ресурсов.

Когда канал начинает транслировать видео в поток по умолчанию, видео отображается в трансляции канала по умолчанию. Когда поток заканчивается, YouTube преобразует завершенную трансляцию в видео YouTube и присваивает этому видео идентификатор видео YouTube.

После завершения конвертации видео добавляется в список загруженных видео на канале. Видео недоступно сразу после завершения трансляции, а продолжительность задержки зависит от фактической продолжительности трансляции.
snippet. liveChatId string
Идентификатор живого чата YouTube трансляции. С помощью этого идентификатора вы можете использовать методы ресурса liveChatMessage для получения, вставки или удаления сообщений чата. Вы также можете добавлять или удалять модераторов чата, запрещать пользователям участвовать в чатах или снимать существующие запреты.
status object
Объект status содержит информацию о статусе события.
status. lifeCycleStatus string
Статус трансляции. Статус можно обновить с помощью метода API liveBroadcasts.transition .

Допустимые значения для этого свойства:
  • complete – Трансляция завершена.
  • created — трансляция имеет неполные настройки, поэтому она не готова к переходу в статус live трансляции или testing , но она создана и в остальном действительна.
  • live – трансляция активна.
  • liveStarting — трансляция находится в процессе перехода в режим live трансляции.
  • ready — настройки трансляции завершены, и трансляция может перейти в статус live или testing .
  • revoked — эта трансляция была удалена действиями администратора.
  • testStarting — трансляция находится в процессе перехода в статус testing .
  • testing — Трансляция видна только партнеру.
status. privacyStatus string
Статус конфиденциальности трансляции. Обратите внимание, что трансляция представляет собой ровно одно видео YouTube, поэтому настройки конфиденциальности идентичны тем, которые поддерживаются для видео. Кроме того, вы можете установить это поле, изменив ресурс трансляции или задав поле privacyStatus соответствующего видеоресурса.

Допустимые значения для этого свойства:
  • private
  • public
  • unlisted
status. recordingStatus string
Статус записи трансляции.

Допустимые значения для этого свойства:
  • notRecording
  • recorded
  • recording
status. madeForKids boolean
Это значение указывает, обозначена ли трансляция как ориентированная на детей. Значение этого свойства доступно только для чтения.
status. selfDeclaredMadeForKids boolean
В запросе liveBroadcasts.insert это свойство позволяет владельцу канала обозначить трансляцию как ориентированную на детей. В запросе liveBroadcasts.list значение свойства возвращается только в том случае, если владелец канала санкционировал запрос API.
contentDetails object
Объект contentDetails содержит информацию о видеоконтенте события, например о том, может ли контент отображаться во встроенном видеоплеере или будет ли он заархивирован и, следовательно, доступен для просмотра после завершения события.
contentDetails. boundStreamId string
Это значение однозначно идентифицирует live stream привязанный к трансляции.
contentDetails. boundStreamLastUpdateTimeMs datetime
Дата и время последнего обновления прямого потока, на который boundStreamId .
contentDetails. monitorStream object
Объект monitorStream содержит информацию о потоке мониторинга, которую телевещательная компания может использовать для просмотра содержимого события перед тем, как широковещательный поток будет показан публично.
contentDetails.monitorStream. enableMonitorStream boolean
Это значение определяет, включен ли поток монитора для трансляции. Если поток мониторинга включен, YouTube будет транслировать контент мероприятия в специальном потоке, предназначенном только для использования вещателем. Вещательная компания может использовать поток для просмотра содержимого события, а также для определения оптимального времени для вставки ключевых точек.

Вам необходимо установить для этого значения значение true если вы хотите провести этап testing для своей трансляции или если вы хотите иметь задержку трансляции для своего мероприятия. Кроме того, если значение этого свойства равно true , вам необходимо перевести трансляцию в состояние testing , прежде чем вы сможете перевести ее в состояние live трансляции. (Если значение свойства равно false , ваша трансляция не может иметь стадию testing , поэтому вы можете перевести трансляцию непосредственно в состояние live .)

При update a broadcast это свойство должно быть установлено, если ваш запрос API включает часть contentDetails в значение параметра part . Однако при insert a broadcast это свойство является необязательным и имеет значение по умолчанию true .

Важно! Это свойство невозможно обновить, если трансляция находится в состоянии testing или live трансляции.
contentDetails.monitorStream. broadcastStreamDelayMs unsigned integer
Если для свойства enableMonitorStream установлено значение true , это свойство определяет продолжительность задержки прямой трансляции.

При update a broadcast это свойство должно быть установлено, если ваш запрос API включает часть contentDetails в значение параметра part . Однако при insert a broadcast это свойство является необязательным и имеет значение по умолчанию 0 . Это значение указывает, что трансляция не имеет задержки трансляции. Примечание. Это свойство невозможно обновить, если трансляция находится в состоянии testing или live трансляции.
contentDetails.monitorStream. embedHtml string
HTML-код, встраивающий проигрыватель, воспроизводящий поток монитора.
contentDetails. enableEmbed boolean
Этот параметр указывает, можно ли воспроизводить транслируемое видео во встроенном проигрывателе. Если вы решите заархивировать видео (с помощью свойства enableArchive ), этот параметр также будет применяться к заархивированному видео.

При update a broadcast это свойство должно быть установлено, если ваш запрос API включает часть contentDetails в значение параметра part . Однако при insert a broadcast это свойство является необязательным и имеет значение по умолчанию true .

Примечание. Это свойство невозможно обновить, если трансляция находится в состоянии testing или live трансляции.
contentDetails. enableDvr boolean
Этот параметр определяет, смогут ли зрители получить доступ к элементам управления DVR во время просмотра видео. Элементы управления DVR позволяют зрителю управлять воспроизведением видео, приостанавливая, перематывая или перематывая контент вперед. Значение по умолчанию для этого свойства — true .

При update a broadcast это свойство должно быть установлено, если ваш запрос API включает часть contentDetails в значение параметра part . Однако при insert a broadcast это свойство является необязательным и имеет значение по умолчанию true .

Важно: необходимо установить значение true , а также установить значение true для свойства enableArchive , если вы хотите сделать воспроизведение доступным сразу после окончания трансляции. Кроме того, это свойство невозможно обновить, если трансляция находится в состоянии testing или live трансляции.
contentDetails. recordFromStart boolean
Этот параметр указывает, будет ли YouTube автоматически начинать запись трансляции после изменения статуса мероприятия на «Прямой эфир».

Значением этого свойства по умолчанию является true , и его можно установить в false только в том случае, если каналу вещания разрешено отключать записи для прямых трансляций.

Если у вашего канала нет разрешения на отключение записей и вы пытаетесь вставить трансляцию со свойством recordFromStart , для которого установлено значение false , API вернет ошибку Forbidden . Кроме того, если у вашего канала нет такого разрешения и вы попытаетесь обновить трансляцию, установив для свойства recordFromStart значение false , API вернет ошибку modificationNotAllowed .

При update a broadcast это свойство должно быть установлено, если ваш запрос API включает часть contentDetails в значение параметра part . Однако при insert a broadcast это свойство является необязательным и имеет значение по умолчанию true .

Важно: вам также необходимо установить для свойства enableDvr значение true если вы хотите, чтобы воспроизведение было доступно сразу после окончания трансляции. Если вы установите для этого свойства значение true но не установите для свойства enableDvr значение true , может пройти задержка около одного дня, прежде чем архивное видео станет доступно для воспроизведения.

Примечание. Это свойство невозможно обновить, если трансляция находится в состоянии testing или live трансляции.
contentDetails. enableClosedCaptions boolean
Это свойство устарело с 17 декабря 2015 г. Вместо него используйте свойство contentDetails.closedCaptionsType .

Этот параметр указывает, включены ли субтитры HTTP POST для этой трансляции. Для клиентов API, которые уже используют это свойство:
  • Установка значения свойства в true эквивалентно установке для свойства contentDetails.closedCaptionsType значения closedCaptionsHttpPost .
  • Установка значения свойства false эквивалентна установке для свойства contentDetails.closedCaptionsType значения closedCaptionsDisabled .
contentDetails. closedCaptionsType string
Примечание. Это свойство заменяет свойство contentDetails.enableClosedCaptions .

Это свойство указывает, включены ли субтитры для вашей трансляции, и если да, то какой тип субтитров вы предоставляете:
  • closedCaptionsDisabled : Скрытые субтитры отключены для прямой трансляции.
  • closedCaptionsHttpPost : вы будете отправлять субтитры через HTTP POST на URL-адрес приема, связанный с вашей прямой трансляцией.
  • closedCaptionsEmbedded : субтитры будут закодированы в видеопотоке с использованием форматов EIA-608 и/или CEA-708.
contentDetails. projection string
Формат проекции этой трансляции. Значение свойства по умолчанию — rectangular .

Допустимые значения для этого свойства:
  • 360
  • rectangular
contentDetails. enableLowLatency boolean
Указывает, должна ли эта трансляция быть закодирована для потоковой передачи с малой задержкой. Поток с низкой задержкой может сократить время, необходимое для того, чтобы видео было видно пользователям, смотрящим трансляцию, хотя это также может повлиять на разрешение для зрителей потока.
contentDetails. latencyPreference string
Указывает, какую настройку задержки использовать для этой трансляции. Это свойство можно использовать вместо enableLowLatency , которое не поддерживает ultraLow .

Поток с низкой задержкой может сократить время, необходимое для того, чтобы видео было видно пользователям, смотрящим трансляцию, хотя это также может повлиять на плавность воспроизведения.

Поток со сверхнизкой задержкой еще больше сокращает время, необходимое для просмотра видео зрителями, упрощая взаимодействие со зрителями, но сверхнизкая задержка не поддерживает субтитры или разрешения выше 1080p.

Допустимые значения для этого свойства:
  • normal
  • low
  • ultraLow
contentDetails. enableAutoStart boolean
Указывает, должна ли эта трансляция начинаться автоматически при запуске потокового видео в привязанном live stream .
contentDetails. enableAutoStop boolean
Указывает, должна ли эта трансляция прекращаться автоматически примерно через минуту после того, как владелец канала прекратит потоковую передачу видео в связанном видеопотоке.
statistics object
Объект statistics содержит статистику, связанную с прямой трансляцией. Значения этой статистики могут меняться во время трансляции и могут быть получены только во время прямой трансляции.
statistics. totalChatCount unsigned long
Общее количество сообщений чата, связанных с трансляцией. Свойство и его значение присутствуют, если трансляция видна пользователю, включена функция живого чата и имеется хотя бы одно сообщение. Обратите внимание, что это свойство не будет указывать значение после завершения трансляции. Таким образом, это свойство не будет определять количество сообщений чата для архивного видео завершенной прямой трансляции.
monetizationDetails object
Объект monetizationDetails содержит информацию о деталях монетизации потока, например о том, включен ли автоматизатор рекламы или задерживается ли вставка объявлений в середине ролика.

monetizationDetails. cuepointSchedule object
Объект cuepointSchedule задает настройки автоматизации рекламы для трансляции.
monetizationDetails.cuepointSchedule. enabled boolean
Это значение определяет, будет ли реклама автоматически вставляться в трансляцию. Если значение равно true , YouTube автоматически вставит в трансляцию рекламу в середине ролика. Расписание показа рекламы будет определяться значением других полей в объекте monetizationDetails.cuepointSchedule .
monetizationDetails.cuepointSchedule. pauseAdsUntil datetime
Это значение указывает, что YouTube не должен вставлять рекламу в середине ролика в трансляцию до указанной даты и времени. Значение указывается в формате ISO 8601 ( ГГГГ-ММ-ДДТчч:мм:сс.сЗ ). Чтобы приостановить рекламу, необходимо установить значение даты и времени в будущем; значение поля также может быть установлено на дату и время в ближайшем будущем, чтобы возобновлять показ рекламы по истечении времени.
monetizationDetails.cuepointSchedule. scheduleStrategy string
Это значение определяет стратегию, которой YouTube должен следовать при планировании ключевых точек. Допустимые значения:
  • CONCURRENT : ключевые точки планируются одновременно для всех зрителей.
  • NON_CONCURRENT : точки разметки планируются в разное время для разных зрителей. Такой подход позволяет показывать рекламу с повышенной частотой, что позволяет зрителям получать ключевые точки, если они соответствуют критериям.
monetizationDetails.cuepointSchedule. repeatIntervalSecs unsigned integer
Это значение определяет интервал в секундах между автоматической вставкой рекламы во время трансляции. Например, если значение равно 300 , YouTube может вставлять ключевые точки рекламы в середине ролика с пятиминутными интервалами.

Обратите внимание, что это значение указывает время между началом последовательных точек разметки. То есть интервал не измеряется от конца одной точки до начала следующей.