RTMP - Real Time Messaging Protocol


1. 어도비사의 독점 컴퓨터 통신 규약


2. 오디오, 비디오 및 기타 데이터를 인터넷을 통해 스트리밍 할 때 사용한다.


3. 비디오의 품질 변경이 가능하다.


- 이를 통해 사용자 환경( wifi, mobile, 전체화면)에 따라 최적의 품질 이용이 가능하다.


4. 지속적으로 필요한 부분만 다운로드를 진행 하기 때문에 사용자의 인터넷 환경이 좋지 못하면 계속 끊긴다.


- 잠시 기다렸다가 동영상을 재생하는 행위는 불가능.


5. 순수한 TCP/IP 기반 프로토콜이다.


1. 지속적으로 접속을 유지하는데 소켓을 이용한다.


6. 전송 방식


1. 비디오 데이터를 여러 조각 ( Fragments)로 나누어서 전송하게 된다.


- Fragments의 크기는 서버 간에 유동적으로 결정한다.


- 데이터 스트림의 기본 조각들의 크기는 128byte


- 오디오 스트림의 기본 조각들의 크기는 64bytes


2. 각 스트림으로 부터 꺼내온 조각들은 합쳐지게 된다. ( 인터리빙 : 꺼내서 끼워 넣는다 )


- 실제로 조각들은 보통 인터리빙 되지 않고, 패킷 수준에서 수행이 된다.


3. 데이터의 크기가 클 경우, 프로토콜의 헤더를 1byte까지 줄일 수 있다.


7. 패킷을 전송 할 떄 여러가지 채널이 정의 된다


1. RPC 요청,응답 채널


2. 비디오 스트림 데이터 채널 


3. 오디오 스트림 데이터 채널


4. 제어 메세지 채널


-- 이러한 채널들은 모두 동시에 활성화 될 수 있다.




RTMP Packet Header


1. Basic Header 


- 첫 1byte 부분


2. Chunk Message Header 


 - 나머지 부분


-- 2bit : Chunk type


00 : full header


11 : Basic Header


10 : Basic Header + Timestamp


-- 6bit : stream ID


1 : extaended stream ID : 뒤에오는 2byte 가 stream ID


2 : Ping or Set Client Bandwidth 같은 Low Level Message


-- 12bit : timestamp delta


-- 12bit : length


-- 4bit : message type id 


--16bit : message stream ID




*추가 설명


1. TCP 기반이기 떄문에, 손실 된 패킷은 재전송을 기다린다.


2. 이는 품질 향상으로는 이루어 질 수는 있지만, 전송 속도에 딜레이가 생길 수 있다.


- 체감하기 힘들다.


- 과연 사용자는 체감하기 힘든 동영상 품질에 신경을 쓸까? 아니면 끊기지 않는 동영상에 신경을 쓸까?


3. Flash를 사용하지만, 어도비에서는 더이상 Flash를 지원하지 않는다.

+ Recent posts