Теперь API позволяет отмечать прямые трансляции как предназначенные для детей. Ресурс
liveBroadcast теперь содержит свойство, которое определяет статус трансляции. 10 января 2020 г. также были обновлены Условия использования сервисов API YouTube и правила для разработчиков. Подробную информацию вы найдете в истории изменений YouTube Live Streaming API Service и Условий использования сервисов YouTube API.
Ресурс 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,
"categoryId": 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,
"availabilityConfig": {
"globalConfig": {
"excludedRegionCodes": [
string
],
"interval": {
"startTime": datetime,
"endTime": datetime
}
},
"regionsConfig": {
"regionIntervals": [
{
"regionCode": string,
"interval": {
"startTime": datetime,
"endTime": datetime
}
}
]
}
}
},
"statistics": {
"totalChatCount": unsigned long
},
"monetizationDetails": {
"adsMonetizationStatus": string,
"eligibleForAdsMonetization": boolean,
"cuepointSchedule": {
"enabled": boolean,
"pauseAdsUntil": datetime,
"ytOptimizedCuepointConfig": string,
"creatorCuepointConfig": {
"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.categoryId |
stringКатегория видео на YouTube, связанная с трансляцией. Список категорий можно получить с помощью метода videoCategories.list. |
snippet.thumbnails |
objectКарта значков, связанных с трансляцией. Для каждого вложенного объекта в этом объекте ключ – это название значка, а значение – это объект, содержащий другую информацию о значке. |
snippet.thumbnails.(key) |
objectДопустимые значения ключей:
|
snippet.thumbnails.(key).url |
stringURL изображения. |
snippet.thumbnails.(key).width |
unsigned integerШирина изображения. |
snippet.thumbnails.(key).height |
unsigned integerВысота изображения. |
snippet.scheduledStartTime |
datetimeДата и время начала трансляции. Значение указывается в формате ISO 8601 ( YYYY-MM-DDThh:mm:ss.sZ). В Творческой студии можно создать трансляцию, не указывая время ее начала. В этом случае трансляция начнется, когда владелец канала запустит стрим. Для таких трансляций значение datetime соответствует началу эпохи Unix и не может быть изменено с помощью API или в Творческой студии. |
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 и присваивает ему идентификатор видео. После завершения преобразования видео добавляется в список загруженных видео на канале. Видео становится доступно не сразу после окончания трансляции. Задержка зависит от продолжительности трансляции. |
snippet.liveChatId |
stringИдентификатор чата трансляции на YouTube Live. С помощью этого идентификатора вы можете использовать методы ресурса liveChatMessage для получения, вставки или удаления сообщений чата. Вы также можете добавлять и удалять модераторов чата, блокировать пользователей и снимать блокировки. |
status |
objectОбъект status содержит информацию о статусе события. |
status.lifeCycleStatus |
stringСтатус трансляции. Статус можно обновить с помощью метода liveBroadcasts.transition API.Допустимые значения для этого свойства:
|
status.privacyStatus |
stringСтатус конфиденциальности трансляции. Обратите внимание, что трансляция представляет собой одно видео на YouTube, поэтому настройки конфиденциальности для нее такие же, как и для видео. Кроме того, вы можете задать это поле, изменив ресурс трансляции или задав поле privacyStatus соответствующего видеоресурса.Допустимые значения для этого свойства:
|
status.recordingStatus |
stringСтатус записи трансляции. Допустимые значения:
|
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 будет транслировать контент мероприятия в специальном стриме, предназначенном только для организатора. Вещатель может использовать поток, чтобы просматривать контент события и определять оптимальное время для вставки временных меток. Если вы хотите использовать testing или задержку трансляции, задайте значение true. Кроме того, если значение этого свойства – true, то перед тем, как перевести трансляцию в состояние live, необходимо перевести ее в состояние testing. (Если значение свойства – 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 |
stringHTML-код, который встраивает проигрыватель, воспроизводящий контрольный поток. |
contentDetails.enableEmbed |
booleanЭтот параметр определяет, можно ли воспроизводить трансляцию во встроенном проигрывателе. Если вы решите заархивировать видео (используя свойство enableArchive), эта настройка также будет применена к заархивированному видео.Это свойство необходимо задавать при update a broadcast, если запрос к API содержит часть contentDetails в значении параметра part. Однако при insert a broadcast это свойство является необязательным и по умолчанию имеет значение true.Примечание. Это свойство нельзя изменить, если трансляция находится в статусе testing или live. |
contentDetails.enableDvr |
booleanЭтот параметр определяет, могут ли зрители использовать элементы управления цифровым видеорекордером во время просмотра видео. Элементы управления цифровым видеорекордером позволяют зрителям управлять воспроизведением видео, приостанавливая, перематывая назад или вперед. Значение по умолчанию для этого свойства – true. Если вы update a broadcast, это свойство должно быть задано, если ваш запрос к API включает часть contentDetails в значении параметра part. Однако при использовании insert a broadcast это свойство необязательно и по умолчанию имеет значение true.Важно! Чтобы запись стала доступна сразу после окончания трансляции, задайте для параметра значение true и для свойства enableArchive – значение true. Кроме того, это свойство нельзя изменить, если трансляция находится в статусе 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-клиентов, которые уже используют это свойство:
|
contentDetails.closedCaptionsType |
stringПримечание. Это свойство заменяет свойство contentDetails.enableClosedCaptions.Это свойство указывает, включены ли субтитры для вашей трансляции, и если да, то какой тип субтитров вы предоставляете:
|
contentDetails.projection |
stringФормат проекции этой трансляции. Значение по умолчанию – rectangular.Допустимые значения:
|
contentDetails.enableLowLatency |
booleanУказывает, должна ли трансляция кодироваться для потоковой передачи с низкой задержкой. Поток с низкой задержкой позволяет сократить время, необходимое для того, чтобы видео стало доступно зрителям трансляции, но может повлиять на разрешение. |
contentDetails.latencyPreference |
stringУказывает, какую задержку использовать для трансляции. Это свойство можно использовать вместо enableLowLatency, которое не поддерживает ultraLow.Трансляция с малой задержкой позволяет сократить время, которое требуется для того, чтобы видео стало доступно зрителям, но может повлиять на плавность воспроизведения. Трансляция с наименьшей задержкой ещё больше сокращает время, которое требуется для того, чтобы видео стало доступно зрителям, что упрощает взаимодействие с ними. Однако наименьшая задержка не поддерживает субтитры и разрешение выше 1080p. Допустимые значения этого свойства:
|
contentDetails.enableAutoStart |
booleanУказывает, должна ли трансляция начинаться автоматически, когда вы начинаете потоковую передачу видео на связанном устройстве live stream. |
contentDetails.enableAutoStop |
booleanУказывает, должна ли трансляция автоматически прекратиться примерно через минуту после того, как владелец канала остановит трансляцию видео в связанном видеопотоке. |
contentDetails.availabilityConfig |
objectНастройки доступности трансляции. Используется, чтобы указать доступность в определенных регионах или заблокировать их. Это необязательный параметр. Если он не задан, то не применяется. |
contentDetails.availabilityConfig.globalConfig |
objectГлобальная конфигурация доступности трансляции. Видео доступно во всех регионах, кроме указанных в списке excludedRegionCodes. |
contentDetails.availabilityConfig.globalConfig.excludedRegionCodes |
list (string)Список регионов, в которых видео заблокировано. |
contentDetails.availabilityConfig.globalConfig.interval |
objectПериод времени по умолчанию, в течение которого видео доступно во всех регионах, где оно не заблокировано. Примечание. Это свойство не поддерживается для предстоящих и текущих прямых трансляций. |
contentDetails.availabilityConfig.globalConfig.interval.startTime |
datetimeДата и время, когда видео станет доступно. Если не указано, видео уже доступно. Значение указывается в формате ISO 8601 ( YYYY-MM-DDThh:mm:ss.sZ). |
contentDetails.availabilityConfig.globalConfig.interval.endTime |
datetimeДата и время, когда видео перестанет быть доступным. Если не указано, видео доступно всегда. Указанные даты начала и окончания не могут быть более чем на пять лет позже текущей даты. Значение указывается в формате ISO 8601 ( YYYY-MM-DDThh:mm:ss.sZ). |
contentDetails.availabilityConfig.regionsConfig |
objectНастройки доступности трансляции в разных регионах. Видео доступно только в указанных регионах. |
contentDetails.availabilityConfig.regionsConfig.regionIntervals |
list (object)Список регионов и временных интервалов, в которых доступно видео. Если регион указан несколько раз, используется объединение всех интервалов. |
contentDetails.availabilityConfig.regionsConfig.regionIntervals.regionCode |
stringРегион, в котором доступно видео. |
contentDetails.availabilityConfig.regionsConfig.regionIntervals.interval |
objectПериод времени, в течение которого видео доступно в указанном регионе. Примечание. Это свойство не поддерживается для предстоящих и текущих прямых трансляций. |
contentDetails.availabilityConfig.regionsConfig.regionIntervals.interval.startTime |
datetimeДата и время, когда видео становится доступным в указанном регионе. Если дата не указана, видео уже доступно. Значение указывается в формате ISO 8601 ( YYYY-MM-DDThh:mm:ss.sZ). |
contentDetails.availabilityConfig.regionsConfig.regionIntervals.interval.endTime |
datetimeДата и время, когда видео перестанет быть доступным в указанном регионе. Если не указано, видео доступно всегда. Указанные даты начала и окончания не могут быть более чем на пять лет позже текущей даты. Значение указывается в формате ISO 8601 ( YYYY-MM-DDThh:mm:ss.sZ). |
statistics |
objectОбъект statistics содержит статистику по прямой трансляции. Значения этих показателей могут меняться во время трансляции и доступны только в прямом эфире. |
statistics.totalChatCount |
unsigned longОбщее количество сообщений в чате, связанных с трансляцией. Свойство и его значение присутствуют, если трансляция видна пользователю, для нее включены функции чата и в нем есть хотя бы одно сообщение. Обратите внимание, что после окончания трансляции это свойство не будет содержать значения. Таким образом, это свойство не определяет количество сообщений чата для архивного видео завершенной прямой трансляции. |
monetizationDetails |
objectОбъект monetizationDetails содержит информацию о монетизации трансляции, например включен ли автоматизатор объявлений и отложена ли вставка объявлений в середине видео. |
monetizationDetails.adsMonetizationStatus |
stringЭто свойство указывает, включены ли в видеотрансляции объявления в середине ролика. Допустимые значения: on и off. |
monetizationDetails.eligibleForAdsMonetization |
stringЭто свойство указывает, можно ли показывать в видео трансляции рекламу в середине ролика. Трансляция может быть недоступна для монетизации по разным причинам, например если на нее подана заявка или на канале не включена монетизация. |
monetizationDetails.cuepointSchedule |
objectОбъект cuepointSchedule определяет настройки автоматического размещения рекламы в трансляции. |
monetizationDetails.cuepointSchedule.enabled |
booleanЭто значение определяет, будут ли объявления автоматически вставляться в трансляцию. Если указано значение true, YouTube будет автоматически вставлять рекламу в середину трансляции. Расписание показа объявлений будет определяться значениями других полей в объекте monetizationDetails.cuepointSchedule.
|
monetizationDetails.cuepointSchedule.pauseAdsUntil |
datetimeЭто значение указывает, что YouTube не должен вставлять рекламу в середину трансляции до указанной даты и времени. Значение указывается в формате ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ). Чтобы приостановить показ объявлений, в поле нужно указать дату и время в будущем. Чтобы возобновить показ, можно указать дату и время в прошлом или оставить поле пустым. |
monetizationDetails.cuepointSchedule.ytOptimizedCuepointConfig |
stringЭто поле указывает выбранный вариант для автоматически вставленных рекламных меток. В этом поле можно указать один из трех режимов:
|
monetizationDetails.cuepointSchedule.creatorCuepointConfig |
objectОбъект creatorCuepointConfig определяет настройки автоматического размещения рекламы, которые позволяют автору выбрать, как будет показываться реклама в середине видео. |
monetizationDetails.cuepointSchedule.creatorCuepointConfig.scheduleStrategy |
stringЭто значение определяет стратегию, которую YouTube должен использовать для планирования точек перехода. Допустимые значения:
|
monetizationDetails.cuepointSchedule.creatorCuepointConfig.repeatIntervalSecs |
unsigned integerЭто значение определяет интервал в секундах между автоматической вставкой объявлений во время трансляции. Например, если значение равно 360, YouTube может вставлять рекламные паузы с интервалом в шесть минут.Примечание.
|