RTMPS를 통한 YouTube 라이브 콘텐츠 전송

이 문서에서는 RTMPS를 사용하여 인코더에서 YouTube로 라이브 데이터를 스트리밍하는 방법을 설명합니다. RTMPS는 SSL 연결을 통해 터널링된 일반 RTMP (RealTime Messaging Protocol) 동영상 스트림입니다. 이 문서는 이미 RTMP를 지원하는 인코더에 RTMPS 지원을 추가하려는 인코더 공급업체를 대상으로 합니다.

RTMPS는 대부분의 일반 사용자 콘텐츠에 적합하며 특히 지연 시간이 짧아야 하는 경우에 적합합니다. YouTube 라이브 스트리밍에서 지원하는 다양한 인제션 프로토콜의 개요는 인제션 프로토콜 비교를 참고하세요.

요구사항

YouTube 라이브 스트리밍에 RTMPS를 전송하려면 몇 가지 기본 요건이 있습니다.

  • 연결 URL (<protocol>://<server>/<path>)의 각 부분이 올바라야 합니다.
    • 프로토콜은 rtmps여야 합니다.
    • 서버는 유효한 YouTube RTMPS 수집 엔드포인트여야 합니다.
    • 경로는 유효한 YouTube 라이브 RTMP 애플리케이션 이름이어야 합니다.
  • 연결은 수집 서버의 포트 443으로 이루어져야 합니다.
  • 멀티미디어 스트림은 SSL 연결을 통해 RTMP를 사용하여 RTMPS로 전송해야 합니다.

연결 URL 가져오기

인코더에서 이미 YouTube Live API를 사용하고 있다면 RTMPS 처리 URL을 가져오는 프로세스는 RTMP와 유사합니다. LiveStreams insert (POST) 요청을 보내 새 수집 스트림을 만듭니다. 응답에서 cdn.ingestionInfo.rtmpsIngestionAddress 필드는 RTMPS URL을 지정합니다. 이중 수집을 지원하는 경우 백업 주소는 cdn.ingestionInfo.rtmpsBackupIngestionAddress입니다.

연결 만들기

선호하는 소켓 라이브러리를 사용하여 수집 URL이 지정하는 서버의 포트 443에 SSL/TLS 연결을 만듭니다. TLS는 전송 계층에서만 작동하므로 연결을 시작하는 데 서버 호스트 이름이 엄격하게 요구되지는 않지만 Google 서버와의 인증에는 필요합니다. 따라서 SSL 핸드셰이크에 SNI 확장 프로그램 (서버 이름 표시)을 추가하고 서버 이름을 연결하려는 서버 호스트 이름으로 설정해야 합니다.

SSL 연결이 설정되면 RTMP 클라이언트 라이브러리의 연결로 사용합니다. 초기화된 SSL 연결은 표준 TCP 연결과 동일한 API를 가지므로 RTMP 라이브러리는 두 연결 모두와 동일하게 작동할 수 있어야 합니다.

문제 해결

SSL 오류

SSL 연결을 만들려고 하는데 잘못된 인증서가 표시되면 RTMP를 예상하는 YouTube 서버에 연결하고 있는 것일 수 있습니다. 사용하는 서버 이름에 'rtmps'가 포함되어 있는지 확인합니다. 's'에 유의하세요.

URL이 올바른 것 같은데 계속 SSL 오류가 발생한다면 잘못된 포트에 연결하고 있는 것일 수 있습니다. 포트 443에 연결되어 있는지 확인합니다.

URL과 포트가 올바른 경우 SSL 라이브러리에서 인증서를 올바르게 처리하지 않는 것일 수 있습니다. SSL 실패에 관한 하위 수준 진단 메시지를 찾고 핸드셰이크에서 SNI를 사용하고 있는지 다시 확인합니다.

연결 시간이 초과되었습니다

서버에 연결할 수 있지만 RTMP 라이브러리가 적절한 응답을 받지 못하고 시간 초과되는 경우 RTMPS를 예상하는 YouTube 서버에 일반 텍스트 RTMP 연결을 설정했을 수 있습니다. 일반 TCP 연결이 아닌 SSL 연결을 만들고 있는지 확인합니다.