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를 지원하지 않는다.

스트리밍이란? 


위키 에서는 스트리밍은 주로 소리(음악)이나 동영상 등의 멀티 미디어 파일을 전송하고 재생하는 방식이다. 라고 말하고 있다.




스트리밍의 역사


1970년대 

1. 컴퓨터 스트리밍의 기본 개념과 이용성이 증명되었다.

- 스트리밍을 위해서는 필요한 데이터 속도를 뒷 받쳐 줄 충분한 CPU 전력과, 버스 대역폭을 가지고 있어야 하고

- 클라이언트에서 낮은 레이턴시를 만들어서 버퍼가 생기는 것을 막아야 한다.

1990년 말

1. 네트워크의 대역폭 증가

2. 인터넷 보급 및 상업화

3. TCP/IP, HTTP, HTML과 같은 표준 프로토콜 포맷을 사용


이러한 상황이 맞물려서 인터넷에서 다운로드 받는 형식의 스트리밍인 Progressive Download 형태로 동영상이 많이 보급되었다.

1995년 

1. 리얼 네트워크사 - 리얼 오디오에서 최초의 다운로드가 없는 스트리밍이 실현 되었다.



스트리밍의 방식


1. Progressive Download


기본

- 웹 서버에서 비디오를 다운로드 받아서 재생하는 방식.

- 이러한 방식은 충분한 데이터가 있을 때 까지 다운로드를 진행하고, 이후에 동영상 재생을 시작한다.

- 전체를 다운로드 할 때 까지 계속 다운로드를 진행한다.


지원 기기

- Flash

- Html5   

- ios

- android


단점

- 다운로드를 진행 할 때, 사용자의 사용성 고려를 하지 않는다.

ex) 10분 길이의 동영상을 시청하는데, 1분만 보고 페이지를 종료 한다고 해도, 나머지 9분에 대한 모든 동영상을 다운로드함.

- 비디오 품질의 변경 불가

- 다운로드시 비디오 품질은 고정된다.

- 전체화면으로 시정하게 되면, 동영상 끊김을 방지하기 위해서 낮은 해상도를 제공하기에, 흐린 화면 감상한다.

- 사용자가 시청한 동영상은 캐쉬 형태로 저장되기 떄문에 동영상 보안에 문제가 생길 수 있다.


2. Streaming


기본

- 사이트의 버튼을 클릭하면 즉시 재생이 시작되고, 동영상이 끝까지 부드럽게 계속 재생된다.

- 미리 인코딩된 데이터가, 전반적인 사용자의 인터넷 대역폭 용량보다 작아야 한다.

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


종류

- RTMP

- RTSP

- RTP


단점 

- 지속적으로 필요한 부분만 다운로드 하기에, 인터넷 환경이 안 좋으면 계속 끊기게 된다.



3. Adaptive Streaming


기본

- 실시간으로 스트림을 인코딩하고, 변화화는 사용자의 인터넷 환경 및 전송 컨디션에 따라서 동영상의 화질을 조절 한다.

- 이는 사용자의 인터넷 환경이 좋다면 고품질의 동영상을, 안 좋다면 저품질의 동영상을 제공해, 끊기지 않는 것을 최선으로 한다.


종류

- HLS (Http Live Streaming )

- MPEG-DASH 

- HDS

- MSS

- WebRTC







'스트리밍' 카테고리의 다른 글

RTMP란?  (0) 2019.02.12

+ Recent posts