본문 바로가기

개발&컴퓨터/IT지식

RTMP와 HLS & (RTP, RTCP, RTSP)

반응형

영상 스트리밍과 관련하여 작업할 게 있어서 여기저기 참조하여 작성하였던 내용입니다.

내용을 많이 축약하여 작성한 것이라 해당 용어의 의미 및 개략적인 설명 정도로 보시면 될 것 같습니다.

좀 더 자세한 사항은 참고 자료 출처를 참조해 주세요~

(아니면 댓글로 질문 주시면 아는 범위 내에서 답변드리겠습니다.^^)

 

RTMP (Real Time Messaging Protocol)
* 2009년 1월 20일에 발표된 어도비 시스템즈 사의 독점 컴퓨터 통신 규약
* RTMP는 오디오, 비디오 및 기타 데이터를 인터넷을 통해 스트리밍 할 때, 사용
* RTMP는 플래시 플레이어와 서버 사이의 통신에 이용.

 

 RTMP종류

설명 

RTMP

 * 1935번 포트를 사용하며 암호화되지 않은 프로토콜.
 * 1935번 포트로 시도하여 실패 시, 433 포트(RTMPS)나 80 포트(RTMPT)로 재시도.

RTMPT

(RTMP Tunneled)

 * RTMP 데이터를 HTTP로 랩핑. 기본 포트는 80번. HTTP 헤더로 인해 RTMP보다 크기가 큼.

RTMPS

(RTMP Secure)

 * RTMP 데이터를 HTTPS로 랩핑. 플래시 플레이어는 SSL 입출력을 지원하므로 그 기능을 사용.

RTMPE
(Encrypted RTMP)

 * 128비트로 암호화된 RTMP. SSL보다는 가볍지만 SSL과 같은 인증 없음.
암호화 채널을 사용하기 때문에 기본 RTMP보다 약간 성능에 영향을 줄 수 있음.

RTMPTE
(Encrypted RTMP Tunneled)

 * 80번 포트 사용.
 * RTMPT, RTMPE 섞어 놓은 형태로 플래시 플레이어 9,0,115,0 필요. 서버 성능에 영향을 줌.

RTMFP
(Real Time Media Flow Protocol)

 * UDP에서 동작. 항상 암호화 된 상태로 데이터를 전송.

 

RTSP (Real Time Streaming Protocol)
* 실시간 스트리밍 프로토콜(Real Time Streaming Protocol, RTSP)은 Real Networks 와 netscape Communication이 공동 개발하고, IETF가 1998년에 표준화한 통신 규약. RFC2326에 정의.
* 스트리밍 시스템에 사용되며, 미디어 서버를 원격으로 제어할 때 사용. (스트리밍 데이터를 제어하기 위한 방법)
* 명령어는 "PLAY", "PAUSE" 같이 VCR 동작하고 유사하며 시간 정보를 바탕으로 서버에 접근. (재생, 일시정지, 빨리감기, 되감기, 재생 위치 변경에 대한 명령 전송.)
* 실제 미디어 스트리밍 데이터를 전송하는 프로토콜이 아니며, 사용자가 멀티미디어 스트리밍을 제어할 수 있도록 도와주는 프로토콜.
* 대부분의 RTSP 서버는 RTP(Realtime Transport Protocol) 규약을 사용해서 전송 계층을 통해 실제 오디오/비디오 데이터를 전송(Transport Layer). 

* 표준에는 실제 데이터 전송에 대한 모델이 정해져 있지 않음. (TCP or UDP)
* 데이터 전송 포트와 다른 포트 사용 (554)

사용자가 미디어의 재생, 중지, 스킵, 되감기 등의 기능을 이용하여 미디어를 재생하고자 할 때, 사용자가 이를 제어할 수 있도록 하기 위한 규약. Client와 Server간에 이와 같은 제어 정보를 교환하는 데에 사용되는 프로토콜.

 

RTP (Real Time Transport Protocol)
* OSI 7계층에서 Transport Layer에 속함 (UDP/IP로 패킷 전송).
* Video, Audio 데이터 전송을 위한 프로토콜.
* Header Info : Codec, Order ,Timestamp, SSRC Identifier(세션에서 소스 구분하는 고유 번호).
* 헤더에 코덱 정보 포함 – 유동성 있는 Video, Audio 품질 전송 가능.
* Server -> Client 단방향 전송

 

RTCP (Real Time Control Protocol)
* OSI 7계층에서 Transport Layer에 속함.
* RTP 데이터의 전송 상태 감시, 세션 관련 정보 전송 (상태 점검을 위한 Protocol) – Flow Control
* Report Packet : 보낸 패킷, 손실된 패킷, 패킷 수신 간격 변화
* Server <-> Client 양방향 통신
* 관련 수집된 패킷 정보를 통해 다양한 처리 가능 (RTCP 표준에는 처리에 대한 명시 없음)

 

HLS (HTTP Live Streaming)
* HTTP 기반의 미디어 스트리밍 통신 프로토콜로 자사의 QuickTime, Safari, OS X, iOS의 일부로 사용하기 위해 2009년 Apple 사에서 개발 및 발표한 프로토콜.

* HLS는 전체 스트림 데이터를 일련의 HTTP기반의 작은 파일로 쪼개어 전송 한 후, 이를 다시 재 조합하여 플레이어를 통해 재생.

* 파일 조합 정보는 m3u8 파일에 있으며, 이를 플레이어에 먼저 전달하여 재생.

* 현재는 사용자가 많아짐에 따라 Adobe의 Flash Media Server는 4.0부터, MS의 IE Media Server도 4.0 부터 HLS를 정식 지원. Google의 Android도 3.0(Honeycomb)부터 HLS 지원.

[특징]
* HTTP 를 사용하기 때문에 양방향(Full-Duplex) 방식을 지원하지 않아 라이브 스트리밍을 구현하기 어렵지만, 방화벽 설정이 단순하고, 요청 응답이 1:1로 대응되기 때문에 NAT 환경에서의 서버 통신도 쉬움.
* 웹 서비스를 위한 캐시 구조를 그대로 사용할 수 있으며, 기존에 구축된 CDN도 별도의 변경없이 그대로 이용 가능.

 

다음 출처 참조 :

* RTMP (Real Time Messaging Protocol) : http://ko.wikipedia.org/wiki/%EB%A6%AC%EC%96%BC_%ED%83%80%EC%9E%84_%EB%A9%94%EC%8B%9C%EC%A7%95_%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C

* RTSP (Real Time Streaming Protocol) : http://ko.wikipedia.org/wiki/%EC%8B%A4%EC%8B%9C%EA%B0%84_%EC%8A%A4%ED%8A%B8%EB%A6%AC%EB%B0%8D_%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C

* HSL (HTTP Live Streaming) : http://en.wikipedia.org/wiki/HTTP_Live_Streaming  / http://helloworld.naver.com/helloworld/7122 
* RFC2326 : http://www.ietf.org/rfc/rfc2326.txt


 

반응형