Skip to content

Real-time Transport Protocol

실시간 전송 프로토콜(영어: Real-time Transport Protocol, RTP)은 IP 네트워크를 통해 오디오와 비디오를 전달하기 위한 표준화된 패킷 포맷을 정의한다. RTP는 스트리밍 미디어를 포함한 커뮤니케이션 및 엔터테인먼트 시스템에 널리 쓰이고 있다.

RTP는 국제 인터넷 표준화 기구(IETF)의 오디오 비디오 트랜스포트 워킹 그룹이 개발하였으며 RTC 1889로 1996년 처음 출판되었으며 2003년에 RFC 3550 가 RTP를 대신하게 되었다.

패킷 헤더

RTP 패킷 헤더

비트 오프셋

0-1

2

3

4-7

8

9-15

16-31

0

버전

P

X

CC

M

PT

일련 번호

32

타임스탬프

64

SSRC 식별자

96

CSRC 식별자들
...

96+32×CC

프로파일에 따른 확장 헤더 ID

확장 헤더 길이

128+32×CC

확장 헤더
...

Parameters

SDP - H.264 sprop-parameter-sets

sprop-parameter-sets contains information about sequence and picture parameters set for the incoming NAL stream. The value are Base64 encoded. A comma is used to separate any pair of parameter set in the list. For example, sprop-parameter-sets=Z2ASEW12 , AsaR3QD

In general, sprop-parameter-sets are the SPS and PPS of NAL unit needed to initialize the decoder. If you want to parse the sprop-parameter-sets, they are separated by a comma. The left hand side of the comma is SPS and the right hand side of the comma is PPS.

H264 frame type

RTP의 Payload 길이는 어떻게 계산하나?

RFC 3550 Section 11 에 설명된 것처럼 RTP가 외부 프레이밍 메커니즘을 필요로 하는 상황이 있지만 UDP를 통한 RTP의 일반적인 사용에는 이것이 필요하지 않습니다. 일반적으로 패킷의 UDP 길이 필드는 페이로드 데이터의 끝을 결정하는 데 사용할 수 있으며 페이로드 데이터의 시작은 고정 크기 RTP 헤더 직후입니다.

다음과 같은 몇 가지 사항이 영향을 줄 수 있습니다.

  • "padding" 비트가 RTP 헤더에 설정되어 있으면 RTP 페이로드 데이터가 아닌 UDP 패킷 끝에 일부 패딩 바이트가 존재할 수 있습니다. 이 경우 UDP 패킷 데이터의 마지막 옥텟은 패딩 옥텟(자신을 포함)의 수를 포함합니다. 이렇게 하면 페이로드 데이터의 끝이 지정된 패딩 양만큼 뒤로 이동합니다. 이와 같은 패딩은 일반적으로 고정 블록 크기를 사용하는 알고리즘으로 RTP 페이로드 데이터를 암호화할 때 사용됩니다. 이에 대한 자세한 내용은 RFC 3550의 섹션 5.1을 참조하세요.
  • RTP 헤더에 "extension" 비트가 설정되어 있으면 RFC 3550의 섹션 5.3.1에 설명된 대로 고정 RTP 헤더 뒤에 헤더 확장이 옵니다. 헤더 확장에는 추가 바이트 수를 나타내는 길이 필드가 있습니다. RTP 페이로드 데이터의 시작 부분으로 건너뛰었습니다. 헤더 확장자는 드물어야 합니다.
  • UDP 패킷 길이, 패딩 길이(있는 경우) 및 확장 헤더 길이(있는 경우)의 조합을 사용하여 외부 프레이밍 메커니즘 없이 RTP 페이로드 데이터의 위치와 길이를 결정할 수 있어야 합니다. 프로파일 또는 페이로드 형식은 여러 RTP 패킷을 단일 UDP 패킷으로 결합하지 않기 때문입니다.

Examples

Github - ireader/media-server/librtp/source/rtp.c
https://github.com/ireader/media-server/blob/master/librtp/source/rtp.c
Windows C++ RTP Streaming from Cam using FFMPEG and OpenCV
https://lazymankook.tistory.com/9

Libraries

Client player

Local Download

RFC 3550 - RTP: A Transport Protocol for Real-Time Applications
https://tools.ietf.org/html/rfc3550
Rfc3550.txt
Rfc3550-ko.txt.zip (Google translate: en -> ko)
RFC 4103 - RTP Payload for Text Conversation
https://tools.ietf.org/html/rfc4103
RFC 3984 - RTP Payload Format for H.264 Video
https://tools.ietf.org/html/rfc3984
Rfc3984-ko.txt.zip (Google translate: en -> ko)
RFC 6184 - RTP Payload Format for H.264 Video
https://tools.ietf.org/html/rfc6184

See also

Favorite site

References