LiveStreams

liveStream 리소스에는 YouTube에 전송하는 동영상 스트림에 대한 정보가 포함되어 있습니다. 스트림에서 YouTube 사용자에게 방송할 콘텐츠를 제공합니다. liveStream 리소스가 생성되면 하나 이상의 liveBroadcast 리소스에 바인딩할 수 있습니다.

방법

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

list
API 요청 매개변수와 일치하는 동영상 스트림의 목록을 반환합니다. 지금 사용해보기
삽입
동영상 스트림을 만듭니다. 스트림을 사용하면 동영상을 YouTube에 전송할 수 있고 시청자에게 동영상을 브로드캐스트할 수 있습니다. 지금 사용해보기
업데이트
동영상 스트림을 업데이트합니다. 변경하려는 속성을 업데이트할 수 없는 경우 적절한 설정으로 새 스트림을 만들어야 합니다. 지금 사용해보기
delete
동영상 스트림을 삭제합니다. 지금 사용해보기

리소스 표현

다음 JSON 구조는 liveStreams 리소스의 형식을 보여줍니다.

{
 
"kind": "youtube#liveStream",
 
"etag": etag,
 
"id": string,
 
"snippet": {
   
"publishedAt": datetime,
   
"channelId": string,
   
"title": string,
   
"description": string,
   
"isDefaultStream": boolean
 
},
 
"cdn": {
   
"ingestionType": string,
   
"ingestionInfo": {
     
"streamName": string,
     
"ingestionAddress": string,
     
"backupIngestionAddress": string
   
},
   
"resolution": string,
   
"frameRate": string
 
},
 
"status": {
   
"streamStatus": string,
   
"healthStatus": {
     
"status": string,
     
"lastUpdateTimeSeconds": unsigned long,
     
"configurationIssues": [
       
{
         
"type": string,
         
"severity": string,
         
"reason": string,
         
"description": string
       
}
     
]
   
}
 
},
 
"contentDetails": {
   
"closedCaptionsIngestionUrl": string,
   
"isReusable": boolean
 
}
}

속성

다음 표는 이 리소스에 표시되는 속성을 정의합니다.

속성
kind string
API 리소스의 유형을 식별합니다. 값은 youtube#liveStream입니다.
etag etag
이 리소스의 Etag입니다.
id string
YouTube가 스트림을 고유하게 식별하기 위해 할당하는 ID입니다.
snippet object
snippet 객체에는 채널, 제목, 설명 등 스트림에 대한 기본 세부정보가 포함되어 있습니다.
snippet.publishedAt datetime
스트림이 만들어진 날짜 및 시간입니다. 값은 ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) 형식으로 지정됩니다.
snippet.channelId string
YouTube가 스트림을 전송하는 채널을 고유하게 식별하는 데 사용하는 ID입니다.
snippet.title string
스트림의 제목입니다. 값은 1~128자(영문 기준)여야 합니다.
snippet.description string
스트림의 설명입니다. 값은 10,000자(영문 기준) 이하여야 합니다.
snippet.isDefaultStream boolean
이 속성은 2020년 9월 1일부터 지원이 중단됩니다. 그 이후에는 채널에서 실시간 스트리밍을 사용 설정할 때 기본 스트림 및 기본 방송 생성이 중단됩니다. 자세한 내용은 지원 중단 공지를 참고하세요.
이 속성은 이 스트림이 채널의 기본 스트림인지 여부를 나타냅니다.

기본 스트림의 작동 방식

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

채널의 기본 스트림은 무기한으로 존재하며 연결된 시작 또는 종료 시간이 없으며 삭제할 수 없습니다. 채널 소유자가 동영상 비트 전송만 시작하면 스트림이 자동으로 진행됩니다.

스트림이 종료되면 YouTube에서 완료된 방송을 YouTube 동영상으로 변환하고 동영상에 YouTube 동영상 ID를 할당합니다. 변환이 완료되면 동영상이 채널의 업로드된 동영상 목록에 포함됩니다. 브로드캐스트가 완료된 직후 동영상을 사용할 수 없으며 지연 시간은 브로드캐스트의 실제 길이와 관련이 있습니다.
cdn object
cdn 객체는 실시간 스트림의 콘텐츠 전송 네트워크 (CDN) 설정을 정의합니다. 이 설정은 YouTube에 콘텐츠를 스트리밍하는 방식에 대한 세부정보를 제공합니다.
cdn.format string
이 속성은 2016년 4월 18일부터 지원 중단되었으며 2020년 8월 17일부터 더 이상 지원되지 않습니다. 그때까지 이 속성을 사용하는 요청은 실패합니다.

대신 cdn.frameRatecdn.resolution 속성을 사용하여 프레임 속도와 해상도를 별도로 지정하세요.
cdn.ingestionType string
동영상 스트림을 전송하는 데 사용되는 메서드 또는 프로토콜입니다.

이 속성의 유효한 값은 다음과 같습니다.
  • dash
  • hls
  • rtmp (RTMPS 포함)
cdn.ingestionInfo object
ingestionInfo 객체에는 YouTube에 스트림을 전송하는 데 필요한 정보가 YouTube에 포함되어 있습니다.
cdn.ingestionInfo.streamName string
YouTube에서 동영상 스트림에 할당하는 스트림 이름입니다.
cdn.ingestionInfo.ingestionAddress string
RTMP, DASH 또는 HLS를 사용하는 경우 YouTube에 동영상을 스트리밍하는 데 사용해야 하는 기본 처리 URL입니다. 동영상을 이 URL로 스트리밍해야 합니다.

동영상 스트림을 인코딩하는 데 사용하는 애플리케이션이나 도구에 따라 스트림 URL과 스트림 이름을 따로 입력하거나 다음 형식으로 연결해야 할 수 있습니다.
STREAM_URL/STREAM_NAME
cdn.ingestionInfo.backupIngestionAddress string
RTMP, DASH 또는 HLS를 사용하는 경우 YouTube에 동영상을 스트리밍하는 데 사용해야 하는 백업 처리 URL입니다. ingestionAddress로 전송하는 콘텐츠를 이 URL로 동시에 스트리밍하는 옵션이 있습니다.
cdn.ingestionInfo.rtmpsIngestionAddress string
RTMPS를 사용하는 경우 YouTube에 동영상을 스트리밍하는 데 사용해야 하는 기본 처리 URL입니다. 동영상을 이 URL로 스트리밍해야 합니다.

동영상 스트림을 인코딩하는 데 사용하는 애플리케이션이나 도구에 따라 스트림 URL과 스트림 이름을 따로 입력하거나 다음 형식으로 연결해야 할 수 있습니다.
STREAM_URL/STREAM_NAME
cdn.ingestionInfo.rtmpsBackupIngestionAddress string
RTMPS를 사용하는 경우 YouTube에 동영상을 스트리밍하는 데 사용해야 하는 백업 처리 URL입니다.
cdn.resolution string
수신 동영상 데이터의 해상도입니다.

이 속성에 유효한 값은 다음과 같습니다.
  • 240p
  • 360p
  • 480p
  • 720p
  • 1080p
  • 1440p
  • 2160p
  • variable: 이 설정을 사용하여 YouTube가 스트리밍된 동영상의 해상도를 자동으로 감지하도록 지정합니다. 또한 cdn.frameRatevariable로 설정해야 합니다.
    권장 인코더 설정은 YouTube 고객센터를 참고하세요.
cdn.frameRate string
수신 동영상 데이터의 프레임 속도입니다.

이 속성에 유효한 값은 다음과 같습니다.
  • 30fps
  • 60fps
  • variable: 이 설정을 사용해 YouTube에서 스트리밍된 동영상의 프레임 속도를 자동으로 감지하도록 지정합니다. 또한 cdn.resolutionvariable로 설정해야 합니다.
    권장 인코더 설정은 YouTube 고객센터를 참고하세요.
status object
status 객체에는 실시간 스트림의 상태에 대한 정보가 포함됩니다.
status.streamStatus string
스트림의 상태입니다.

이 속성에 유효한 값은 다음과 같습니다.
  • active – 스트림이 활성 상태이므로 사용자가 스트림을 통해 데이터를 수신하고 있습니다.
  • created – 스트림이 생성되었지만 유효한 CDN 설정이 없습니다.
  • error – 스트림에 오류 조건이 있습니다.
  • inactive – 스트림이 비활성 상태이므로 사용자가 스트림을 통해 데이터를 수신하지 않습니다.
  • ready - 스트림에 유효한 CDN 설정이 있습니다.
status.healthStatus object
이 객체에는 스트리밍 문제를 식별, 진단, 해결하는 데 사용될 수 있는 실시간 스트림의 상태 정보가 포함되어 있습니다.
status.healthStatus.status string
이 스트림의 상태 코드입니다.

이 속성에 유효한 값은 다음과 같습니다.
  • good - 심각도warning 이하인 구성 문제가 없습니다.
  • ok심각도error인 구성 문제가 없습니다.
  • bad – 스트림에 심각도error인 문제가 있습니다.
  • noData – YouTube의 실시간 스트리밍 백엔드 서버에는 스트림의 상태에 대한 정보가 없습니다.
status.healthStatus.lastUpdateTimeSeconds unsigned long
스트림의 상태가 마지막으로 업데이트된 시간입니다. 이 값은 UNIX 타임스탬프를 초 단위로 반영합니다.
status.healthStatus.configurationIssues[] list
이 객체에는 스트림에 영향을 미치는 구성 문제 목록이 포함되어 있습니다.
status.healthStatus.configurationIssues[].type string
스트림에 영향을 미치는 오류의 유형을 식별합니다.
구성 관련 문제
audioBitrateHigh
이유:오디오 설정 확인
설명:오디오 스트림의 현재 비트 전송률이 %(actual)보다 높습니다. %(expected)s의 오디오 스트림 비트 전송률을 사용하는 것이 좋습니다.
audioBitrateLow
이유:오디오 설정 확인
설명:오디오 스트림의 현재 비트 전송률 (%(actual)s)이(가) 권장 비트 전송률보다 낮습니다. %(expected)s의 오디오 스트림 비트 전송률을 사용하는 것이 좋습니다.
audioBitrateMismatch
이유:보조 스트림 확인
설명:현재 구성에서는 동영상의 기본 스트림과 백업 스트림의 오디오 비트 전송률이 다릅니다. 스트림이 동일한 오디오 비트 전송률을 갖도록 구성해야 합니다.
audioCodec
이유:오디오 설정 확인
설명:지원되지 않는 코덱으로 오디오 스트림이 인코딩되었습니다. 스트림의 오디오 코덱을 지원되는 코덱(AAC, MP3)으로 설정하세요.
audioCodecMismatch
이유:잘못된 보조 스트림
설명:현재 구성에서는 동영상의 기본 스트림과 백업 스트림이 서로 다른 오디오 코덱을 사용합니다. 동일한 오디오 코덱을 사용하도록 스트림을 구성해야 합니다.
audioSampleRate
이유:오디오 설정 확인
설명:현재 샘플링 레이트는 %(actual)입니다. 권장 샘플링 레이트는 44.1kHz 및 48kHz입니다.
audioSampleRateMismatch
이유:잘못된 보조 스트림
설명:현재 구성에서는 동영상의 기본 스트림과 백업 스트림의 오디오 샘플링 비율이 다릅니다. 스트림이 동일한 오디오 샘플링 레이트를 갖도록 구성해야 합니다.
audioStereoMismatch
이유:잘못된 보조 스트림
설명:현재 설정에서 동영상의 기본 및 백업 스트림이 서로 다른 오디오 채널을 사용합니다. 동일한 오디오 채널을 갖도록 스트림을 설정해야 합니다.
audioTooManyChannels
이유:오디오 설정 확인
설명:오디오에 채널이 3개 이상 있지만 1개 (모노) 또는 2개 (스테레오) 채널만 지원됩니다. 오디오 채널의 수를 수정하세요.
badContainer
이유:잘못된 동영상 설정
설명:동영상의 컨테이너 형식을 변경하세요. 현재 컨테이너 형식이 이 구성에 적합하지 않습니다.
bitrateHigh
이유:동영상 설정 확인
설명:스트림의 현재 비트 전송률 (%(actual)s)이(가) 권장 비트 전송률보다 높습니다. %(expected)s의 스트림 비트 전송률을 사용하는 것이 좋습니다.
bitrateLow
이유:동영상 출력 낮음
설명:스트림의 현재 비트 전송률 (%(actual)s)이(가) 권장 비트 전송률보다 낮습니다. %(expected)s의 스트림 비트 전송률을 사용하는 것이 좋습니다.
framerateMismatch
이유:보조 스트림 확인
설명:현재 구성에서는 동영상의 기본 스트림과 백업 스트림의 프레임 속도가 다릅니다. 스트림이 동일한 프레임 속도를 갖도록 구성해야 합니다.
frameRateHigh
이유:프레임 속도 높음
설명:현재 프레임 속도가 너무 빠릅니다. 프레임 속도를 %(framerate)sfps 이하로 설정하세요.
gopMismatch
이유:잘못된 보조 스트림
설명:현재 구성에서는 동영상의 기본 스트림과 백업 스트림의 키프레임 빈도가 서로 다릅니다. 스트림이 동일한 키프레임 빈도를 갖도록 구성해야 합니다.
gopSizeLong
이유:잘못된 동영상 설정
설명:키프레임 빈도를 4초 이하로 사용하세요. 현재 키프레임이 충분한 빈도로 전송되지 않아 버퍼링이 발생할 수 있습니다. 현재 키프레임 빈도는 %(actual_gop).1f초입니다. 처리 오류로 인해 GOP(Group of Pictures, 화상 그룹) 크기가 잘못될 수 있다는 점에 유의하세요.
gopSizeOver
이유:동영상 설정 확인
설명:키프레임 빈도를 4초 이하로 사용하세요. 현재 키프레임이 충분히 전송되지 않아 버퍼링이 발생할 수 있습니다. 현재 키프레임 빈도는 %(actual_gop).1f초입니다. 처리 오류로 인해 GOP(Group of Pictures, 화상 그룹) 크기가 잘못될 수 있다는 점에 유의하세요.
gopSizeShort
이유:동영상 설정 확인
설명:GOP 크기가 너무 작아서 이미지 품질이 저하될 수 있습니다. 권장 키프레임 빈도는 4초이며, 현재 키프레임 빈도는 %(actual_gop).1f초입니다. 처리 오류로 인해 GOP 크기가 잘못될 수 있다는 점에 유의하세요.
multipleAudioStreams
이유:오디오 설정 확인
설명:처리 스트림에 오디오 스트림이 여러 개 포함되어 있습니다. 오디오 스트림은 정확히 1개만 있어야 합니다.
multipleVideoStreams
이유:잘못된 동영상 설정
설명:처리 스트림에 동영상 스트림이 여러 개 포함되어 있습니다. 동영상 스트림은 정확히 1개만 있어야 합니다.
noAudioStream
이유:오디오가 없음
설명:처리 스트림에 오디오 스트림이 포함되어 있지 않습니다. 오디오 스트림은 정확히 1개만 있어야 합니다.
noVideoStream
이유:동영상 없음
설명:처리 스트림에 동영상 스트림이 포함되어 있지 않습니다. 동영상 스트림은 정확히 1개만 있어야 합니다.
openGop
이유:잘못된 동영상 설정
설명:동영상 인코더의 구성을 '폐쇄 사진 그룹 (GOP)'으로 변경하세요. YouTube에서 지원하지 않는 'GOP 열기'로 설정되어 있습니다.
resolutionMismatch
이유:잘못된 보조 스트림
설명:현재 구성에서는 동영상의 기본 스트림과 백업 스트림의 해상도가 서로 다릅니다. 해상도가 동일하도록 스트림을 구성해야 합니다.
videoBitrateMismatch
이유:보조 스트림 확인
설명:현재 구성에서는 동영상의 기본 스트림과 백업 스트림의 동영상 비트 전송률이 다릅니다. 스트림이 동일한 동영상 비트 전송률을 갖도록 구성해야 합니다.
videoCodec
이유:잘못된 동영상 설정
설명:지원되지 않는 코덱으로 동영상이 인코딩되었습니다. 스트림의 동영상 코덱을 지원되는 코덱(H.264)으로 설정하세요.
videoCodecMismatch
이유:잘못된 보조 스트림
설명:현재 구성에서는 동영상의 기본 스트림과 백업 스트림이 서로 다른 동영상 코덱을 사용합니다. 스트림이 동일한 동영상 코덱을 갖도록 구성해야 합니다.
videoIngestionStarved
이유:동영상 출력 낮음
설명:YouTube에서 원활한 스트리밍을 유지하기에 충분한 동영상을 수신하지 못하고 있습니다. 따라서 버퍼링이 발생합니다.
videoInterlaceMismatch
이유:잘못된 보조 스트림
설명:현재 구성에서는 동영상의 기본 스트림과 백업 스트림의 인터레이스가 다릅니다. 스트림의 인터레이스가 동일하도록 구성해야 합니다.
videoProfileMismatch
이유:잘못된 보조 스트림
설명:현재 구성에서는 동영상의 기본 스트림과 백업 스트림의 프로필이 다릅니다. 스트림이 동일한 프로필을 갖도록 구성해야 합니다.
videoResolutionSuboptimal
이유:해상도를 확인하세요.
설명:동영상 해상도를 확인하세요. 현재 해상도는 (%(actual_w)dx%(actual_h)d)이며 최적의 해상도가 아닙니다.
videoResolutionUnsupported
이유:지원되지 않는 해상도입니다.
설명:동영상 해상도를 변경해야 합니다. 현재 해상도는 (%(actual_w)dx%(actual_h)d)이며 이 구성에서 지원되지 않습니다. 예상 동영상 해상도는 (%(expected_w)dx%(expected_h)d)입니다.
status.healthStatus.configurationIssues[].severity string
문제가 스트림에 얼마나 심각한지 나타냅니다.

이 속성에 유효한 값은 다음과 같습니다.
  • info – 동영상이 실적에 부정적인 영향 없이 시청자에게 방송됩니다.
  • warning – 동영상이 시청자에게 방송되지만 실적이 최적의 상태가 아닙니다.
  • error – 동영상을 시청자에게 방송할 수 없습니다.
status.healthStatus.configurationIssues[].reason string
문제에 관한 간략한 설명입니다. LiveStream 리소스 구성 문제 문서에서는 각 구성 문제 유형과 관련된 이유를 확인합니다.
status.healthStatus.configurationIssues[].description string
문제에 관한 자세한 설명입니다. 가능한 경우 문제를 해결하는 방법에 관한 정보를 제공합니다. LiveStream 리소스 구성 문제 문서에 모든 구성 문제 유형 및 관련 설명이 나열되어 있습니다.
contentDetails object
content_details 객체에는 자막 처리 URL을 비롯한 스트림 관련 정보가 포함됩니다.
contentDetails.closedCaptionsIngestionUrl string
이 스트림의 자막이 전송되는 처리 URL입니다.
contentDetails.isReusable boolean
스트림을 재사용할 수 있는지 여부를 나타냅니다. 즉, 여러 브로드캐스트에 바인딩될 수 있습니다. 방송이 여러 시간에 발생하는 경우 일반적으로 여러 방송에서 동일한 스트림을 재사용하는 방송사입니다.

이 값을 false로 설정하면 스트림을 재사용할 수 없습니다. 즉, 하나의 브로드캐스트에만 바인딩될 수 있습니다. 재사용 불가능한 스트림은 재사용 가능한 스트림과 다음과 같은 차이가 있습니다.
  • 재사용 불가능한 스트림은 하나의 브로드캐스트에만 바인딩될 수 있습니다.
  • 방송이 종료된 후 자동화된 프로세스에 의해 재사용 불가능한 스트림이 삭제될 수 있습니다.
  • 메서드를 호출하고 mine 매개변수를 true로 설정하면 liveStreams.list 메서드가 재사용 가능한 스트림을 나열하지 않습니다. 이 메서드를 사용하여 재사용 불가능한 스트림의 리소스를 검색할 수 있는 유일한 방법은 id 매개변수를 사용하여 스트림을 식별하는 것입니다.