RTMPS를 통한 실시간 YouTube 콘텐츠 제공

이 문서에서는 RTMPS를 사용하여 인코더에서 YouTube의 실시간 데이터를 스트리밍하는 방법을 설명합니다. RTMPS는 SSL 연결을 통해 터널링되는 일반 RTMP (실시간 메시징 프로토콜) 동영상 스트림입니다. 이 문서는 이미 RTMP를 지원하는 인코더에 RTMPS 지원을 추가하려는 인코더 공급업체를 대상으로 합니다.

RTMPS는 특히 일반적인 사용자 콘텐츠에 짧은 지연 시간이 필요한 경우에 적합합니다. YouTube 실시간 스트리밍에서 지원하는 다양한 처리 프로토콜에 대한 개요는 처리 프로토콜 비교를 참조하세요.

요구사항

YouTube 실시간 스트리밍에 RTMPS를 전송하는 몇 가지 기본 요건은 다음과 같습니다.

  • 연결 URL의 각 부분 (<protocol>://<server>/<path>)은 정확해야 합니다.
    • 프로토콜은 rtmps여야 합니다.
    • 서버는 유효한 YouTube RTMPS 처리 엔드포인트여야 합니다.
    • 경로는 유효한 YouTube 실시간 RTMP 애플리케이션 이름이어야 합니다.
  • 수집 서버의 포트 443에 연결해야 합니다.
  • 멀티미디어 스트림은 RTMPS와 함께 전송되어야 합니다. 즉, SSL 연결을 통해 RTMP를 사용합니다.

연결 URL 가져오기

인코더가 이미 YouTube Live API를 사용하고 있다면 RTMPS 처리 URL을 가져오는 프로세스는 RTMP와 유사합니다. 실시간 스트림 삽입 (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 연결을 만들어야 합니다.