Keisa 2025. 2. 4. 11:23

RTSP (Real Time Streaming Protocol)

개요

  • 목적: RTSP는 클라이언트가 스트리밍 미디어 서버와 상호작용하면서 재생, 일시정지, 중지 등 스트리밍 제어 기능을 수행할 수 있도록 설계된 프로토콜입니다.
  • 역할: 미디어 스트림(영상, 오디오 등)의 제어 명령을 전송하며, 실제 데이터 전송(RTP/UDP 등)은 별도의 채널에서 이루어집니다.
  • 표준:
    • RTSP/1.0: RFC 2326에 정의되어 있으며, 가장 널리 알려진 버전입니다.
    • RTSP/2.0: RFC 7826에 정의되어 있으며, 일부 기능이 개선되었지만 기본 개념은 유사합니다.

메시지 형식

RTSP 메시지는 HTTP와 유사한 텍스트 기반 메시지 형식을 따릅니다.

  1. 요청 메시지 (Request Message)
    • 요청 라인:
METHOD <request-URI> RTSP/1.0\r\n

예시: OPTIONS rtsp://example.com/media.mp4 RTSP/1.0

    • 헤더:
      요청에 대한 부가 정보를 전달합니다. 대표적인 헤더는 다음과 같습니다.
      • CSeq: 요청의 순번을 나타내며, 서버가 응답할 때 동일한 순번을 포함해야 합니다.
      • Transport: SETUP 명령 시 사용되며, 클라이언트가 RTP 스트림을 수신할 포트, 전송 방식(UDP, TCP 등) 등을 지정합니다.
      • User-Agent: 클라이언트 정보(옵션) 등
    • 본문 (Body):
      필요에 따라 포함될 수 있으며, 보통 DESCRIBE 요청 시 SDP 정보를 요구하는 경우에는 본문 없이 헤더만 포함되거나, 본문에 별도의 데이터가 들어갑니다.
  1. 응답 메시지 (Response Message)
    • 상태 라인:
RTSP/1.0 <Status-Code> <Reason-Phrase>\r\n

 

예시: RTSP/1.0 200 OK

    • 헤더:
      응답의 상세 정보를 제공합니다.
      • CSeq: 요청에 포함된 CSeq와 동일해야 합니다.
      • Content-Base: 스트림의 기본 URL을 나타냅니다.
      • Content-Type: 본문에 포함된 데이터의 타입을 나타냅니다(예: application/sdp).
      • Content-Length: 본문의 길이를 명시합니다.
      • Session: 스트리밍 세션을 식별하는 값 (SETUP 이후 PLAY/PAUSE/TEARDOWN에서 사용)
    • 본문 (Body):
      DESCRIBE 명령에 대한 응답으로 SDP 정보가 포함될 수 있습니다.

주요 RTSP 메서드

RTSP는 스트리밍 세션을 제어하기 위해 여러 메서드를 정의합니다. 표준 규격에 의해 그 의미와 형식이 정해져 있습니다.

  • OPTIONS
    • 목적: 서버가 지원하는 RTSP 메서드(예: DESCRIBE, SETUP, PLAY, TEARDOWN 등)를 질의합니다.

예시 요청:

OPTIONS rtsp://example.com/ RTSP/1.0\r\n
CSeq: 1\r\n\r\n

 

예시 응답:

RTSP/1.0 200 OK\r\n
CSeq: 1\r\n
Public: DESCRIBE, SETUP, PLAY, TEARDOWN\r\n\r\n

 

  • DESCRIBE
    • 목적: 클라이언트가 미디어 세션에 대한 설명(SDP)을 요청합니다.
    • 예시 요청:
DESCRIBE rtsp://example.com/media.mp4 RTSP/1.0\r\n
CSeq: 2\r\n
Accept: application/sdp\r\n\r\n
  •  SETUP
    • 목적: 클라이언트와 서버 간의 스트리밍 전송 채널(RTP 등)의 설정을 협상합니다.
    • 예시 요청 (클라이언트가 수신할 포트를 지정):
SETUP rtsp://example.com/media.mp4 RTSP/1.0\r\n
CSeq: 3\r\n
Transport: RTP/UDP;unicast;client_port=5000-5001\r\n\r\n

 

  • PLAY
    • 목적: 스트리밍 세션을 시작하도록 지시합니다.
    • 예시 요청:
PLAY rtsp://example.com/media.mp4 RTSP/1.0\r\n
CSeq: 4\r\n
Session: 12345678\r\n\r\n