LiveBroadcasts

이제 API에서 라이브 스트림을 '아동용'으로 표시하는 기능을 지원하며 liveBroadcast 리소스에는 라이브 스트림의 '아동용' 상태를 식별하는 속성이 포함됩니다. 2020년 1월 10일에는 YouTube API 서비스 약관 및 개발자 정책도 업데이트되었습니다. 자세한 내용은 YouTube Live Streaming API 서비스YouTube API 서비스 약관의 업데이트 기록을 참고하세요.

liveBroadcast 리소스는 YouTube에서 라이브 동영상을 통해 스트리밍될 이벤트를 나타냅니다.

메서드

API는 liveBroadcasts 리소스에 대해 다음 메서드를 지원합니다.

list
API 요청 매개변수와 일치하는 YouTube 방송 목록을 반환합니다. 지금 사용해보기
insert
방송을 만듭니다. 지금 사용해보기
업데이트
방송을 업데이트합니다. 예를 들어 liveBroadcast 리소스의 contentDetails 객체에 정의된 브로드캐스트 설정을 수정할 수 있습니다. 지금 사용해 보기
삭제
방송을 삭제합니다. 지금 사용해보기
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에서 방송을 고유하게 식별하기 위해 할당하는 ID입니다.
snippet object
snippet 객체에는 제목, 설명, 시작 시간, 종료 시간 등 이벤트에 관한 기본 세부정보가 포함됩니다.
snippet.publishedAt datetime
방송이 YouTube의 실시간 방송 일정에 추가된 날짜 및 시간입니다. 값은 ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) 형식으로 지정됩니다.
snippet.channelId string
YouTube에서 방송을 게시하는 채널을 고유하게 식별하는 데 사용하는 ID입니다.
snippet.title string
방송 제목입니다. 브로드캐스트는 정확히 하나의 YouTube 동영상을 나타냅니다. 이 필드는 방송 리소스를 수정하거나 해당 동영상 리소스의 title 필드를 설정하여 설정할 수 있습니다.
snippet.description string
브로드캐스트의 설명입니다. title와 마찬가지로 방송 리소스를 수정하거나 해당 동영상 리소스의 description 필드를 설정하여 이 필드를 설정할 수 있습니다.
snippet.thumbnails object
방송과 관련된 썸네일 이미지 맵입니다. 이 객체의 각 중첩 객체의 경우 키는 썸네일 이미지의 이름이고 값은 썸네일에 관한 다른 정보를 포함하는 객체입니다.
snippet.thumbnails.(key) object
유효한 키 값은 다음과 같습니다.
  • default: 기본 썸네일 이미지입니다. 동영상 또는 재생목록 항목이나 검색 결과와 같이 동영상을 참조하는 리소스의 기본 썸네일은 120x90픽셀입니다. 채널의 기본 미리보기 이미지는 88x88픽셀입니다.
  • medium – 썸네일 이미지의 고해상도 버전입니다. 동영상(또는 동영상을 참조하는 리소스)의 경우 이 이미지의 너비는 320px, 높이는 180px입니다. 채널의 경우 이 이미지는 240x240픽셀입니다.
  • high – 썸네일 이미지의 고해상도 버전입니다. 동영상 (또는 동영상을 참조하는 리소스)의 경우 이 이미지는 480x360픽셀입니다. 채널의 경우 이 이미지는 800x800픽셀입니다.
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) 형식으로 지정됩니다. 크리에이터 스튜디오에서는 시작 시간을 예약하지 않고도 방송을 만들 수 있는 기능을 지원합니다. 이 경우 채널 소유자가 스트리밍을 시작할 때마다 방송이 시작됩니다. 이러한 방송의 경우 datetime 값은 UNIX 시간 0에 해당하며 이 값은 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
이 속성은 2020년 9월 1일 이후에 지원 중단됩니다. 그때가 되면 YouTube에서는 채널에 라이브 스트리밍이 사용 설정되면 기본 스트림 및 기본 방송의 생성을 중지합니다. 자세한 내용은 지원 중단 공지사항을 참고하세요.
이 속성은 이 방송이 기본 방송인지 여부를 나타냅니다.

기본 방송 작동 방식

YouTube 채널에 라이브 스트리밍이 사용 설정되면 YouTube에서 채널의 기본 스트림과 기본 방송을 만듭니다. 스트림은 채널 소유자가 YouTube에 라이브 동영상을 전송하는 방법을 정의하며, 브로드캐스트는 시청자가 기본 스트림을 볼 수 있는 방법입니다. 채널 소유자는 liveStreams.listliveBroadcasts.list 메서드를 사용하여 이러한 리소스를 식별할 수 있습니다.

채널에서 기본 스트림으로 동영상 스트리밍을 시작하면 동영상이 채널의 기본 방송에 표시됩니다. 스트림이 종료되면 YouTube에서 완료된 방송을 YouTube 동영상으로 변환하고 동영상에 YouTube 동영상 ID를 할당합니다.

변환이 완료되면 동영상이 채널의 업로드된 동영상 목록에 포함됩니다. 방송이 끝난 직후에 동영상을 사용할 수 없으며 지연 시간이 실제 방송의 길이와 관련이 있습니다.
snippet.liveChatId string
방송의 YouTube 실시간 채팅 ID입니다. 이 ID를 사용하면 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는 방송사의 소비만을 위한 특별 스트림을 통해 이벤트 콘텐츠를 방송합니다. 브로드캐스터는 스트림을 사용하여 이벤트 콘텐츠를 검토하고 큐포인트를 삽입할 최적의 시간을 파악할 수 있습니다.

방송에 testing 무대를 설정하거나 이벤트에 방송 지연을 설정하려는 경우 이 값을 true로 설정해야 합니다. 또한 이 속성의 값이 true인 경우 브로드캐스트를 live 상태로 전환하기 전에 testing 상태로 전환해야 합니다. 속성 값이 false인 경우 브로드캐스트에 testing 단계가 없으므로 브로드캐스트를 live 상태로 직접 전환할 수 있습니다.

update a broadcast할 때 API 요청의 part 매개변수 값에 contentDetails 부분이 포함된 경우 이 속성을 설정해야 합니다. 하지만 insert a broadcast인 경우 속성은 선택사항이며 기본값은 true입니다.

중요: 브로드캐스트가 testing 또는 live 상태가 되면 이 속성을 업데이트할 수 없습니다.
contentDetails.monitorStream.broadcastStreamDelayMs unsigned integer
enableMonitorStream 속성을 true로 설정한 경우 이 속성은 라이브 방송 지연 시간을 결정합니다.

update a broadcast을 실행할 때 API 요청에 part 매개변수 값에 contentDetails 부분이 포함된 경우 이 속성을 설정해야 합니다. 하지만 insert a broadcast인 경우 속성은 선택사항이며 기본값은 0입니다. 이 값은 방송에 방송 지연이 없음을 나타냅니다. 참고: 브로드캐스트가 testing 또는 live 상태가 되면 이 속성을 업데이트할 수 없습니다.
contentDetails.monitorStream.embedHtml string
모니터 스트림을 재생하는 플레이어를 삽입하는 HTML 코드입니다.
contentDetails.enableEmbed boolean
이 설정은 삽입된 플레이어에서 방송 동영상을 재생할 수 있는지 여부를 나타냅니다. enableArchive 속성을 사용하여 동영상을 보관처리하도록 선택하면 이 설정이 보관처리된 동영상에도 적용됩니다.

update a broadcast을 실행할 때 API 요청에 part 매개변수 값에 contentDetails 부분이 포함된 경우 이 속성을 설정해야 합니다. 하지만 insert a broadcast하는 경우 속성은 선택사항이며 기본값은 true입니다.

참고: 브로드캐스트가 testing 또는 live 상태가 되면 이 속성을 업데이트할 수 없습니다.
contentDetails.enableDvr boolean
이 설정은 시청자가 동영상을 시청하는 동안 DVR 컨트롤에 액세스할 수 있는지 여부를 결정합니다. DVR 컨트롤을 사용하면 시청자가 콘텐츠를 일시중지, 되감기 또는 빨리 감기하여 동영상 재생 환경을 제어할 수 있습니다. 이 속성의 기본값은 true입니다.

update a broadcast을 실행할 때 API 요청에 part 매개변수 값에 contentDetails 부분이 포함된 경우 이 속성을 설정해야 합니다. 하지만 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 요청에 part 매개변수 값에 contentDetails 부분이 포함된 경우 이 속성을 설정해야 합니다. 하지만 insert a broadcast하는 경우 속성은 선택사항이며 기본값은 true입니다.

중요: 방송이 종료된 후 즉시 재생을 시작하려면 enableDvr 속성의 값도 true로 설정해야 합니다. 이 속성의 값을 true로 설정했지만 enableDvr 속성을 true로 설정하지 않으면 보관처리된 동영상을 재생할 수 있기까지 약 1일 정도 지연될 수 있습니다.

참고: 브로드캐스트가 testing 또는 live 상태가 되면 이 속성을 업데이트할 수 없습니다.
contentDetails.enableClosedCaptions boolean
이 속성은 2015년 12월 17일부터 지원 중단되었습니다. 대신 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
이 브로드캐스트에 사용할 지연 시간 설정을 나타냅니다. 이 속성은 ultraLow를 지원하지 않는 enableLowLatency 대신 사용할 수 있습니다.

지연 시간이 짧은 스트림은 방송을 시청하는 사용자에게 동영상이 표시되는 데 걸리는 시간을 줄일 수 있지만 재생의 원활함에 영향을 줄 수도 있습니다.

지연 시간이 매우 짧은 스트림은 시청자에게 동영상이 표시되는 데 걸리는 시간을 더욱 줄여 시청자와의 상호작용이 더 쉬워지지만, 지연 시간이 매우 짧은 스트림은 자막이나 1080p 이상의 해상도를 지원하지 않습니다.

이 속성의 유효한 값은 다음과 같습니다.
  • normal
  • low
  • ultraLow
contentDetails.enableAutoStart boolean
바인드된 live stream에서 동영상 스트리밍을 시작할 때 이 브로드캐스트를 자동으로 시작할지 여부를 나타냅니다.
contentDetails.enableAutoStop boolean
채널 소유자가 연결된 동영상 스트림에서 동영상 스트리밍을 중지한 후 1분 후에 이 브로드캐스트가 자동으로 중지되어야 하는지 나타냅니다.
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 (YYYY-MM-DDThh:mm:ss.sZ) 형식으로 지정됩니다. 광고를 일시중지하려면 값을 미래의 날짜/시간으로 설정해야 합니다. 필드 값을 가까운 미래의 날짜/시간으로 설정하여 시간이 지나면 광고 일시중지를 해제할 수도 있습니다.
monetizationDetails.cuepointSchedule.scheduleStrategy string
이 값은 YouTube에서 큐포인트 예약 시 따라야 하는 전략을 지정합니다. 유효한 값은 다음과 같습니다.
  • CONCURRENT: 모든 시청자에게 동시에 큐포인트가 예약됨
  • NON_CONCURRENT: 큐 포인트가 시청자마다 다른 시간에 예약됩니다. 이 접근 방식을 사용하면 시청자가 자격요건을 충족할 때 시점 정보를 받을 수 있도록 광고를 더 자주 게재할 수 있습니다.
monetizationDetails.cuepointSchedule.repeatIntervalSecs unsigned integer
이 값은 방송 중에 자동 광고 삽입 간의 간격을 초 단위로 지정합니다. 예를 들어 값이 300이면 YouTube에서 5분 간격으로 미드롤 광고 큐포인트를 삽입할 수 있습니다.

값은 연속된 큐포인트 시작 사이의 시간을 지정합니다. 즉, 한 큐 포인트의 끝에서 다음 큐 포인트의 시작까지 간격이 측정되지 않습니다.