Video Streaming Structure (part1)

2020. 4. 14. 22:50Dev

Video streaming을 Client(Android platform)에서 구현하기 위해 전체적인 구조와 메커니즘, 프로토콜을 확인하고 기록하기 위해 작성하는 글입니다. 

Streaming?

스트리밍(영어: streaming)은 주로 소리(음악)나 동영상 등의 멀티미디어 파일을 전송하고 재생하는 방식의 하나이다. 
보통 파일은 내려받고 난 뒤에 열리는 작업을 하지만, 동영상과 같이 크기가 큰 파일을 재생할 때에는 내려받는 데에 시간이 오래 걸릴 수 있다. 파일을 다운로드하는 것과 더불어 재생을 함으로써 기다리는 시간을 크게 줄일 수 있다.
이 기술을 응용하여, 디브이 카메라 등을 사용해 컴퓨터 네트워크 위에 스트리밍 하여(스트리밍-streaming-은 "흘리다"라는 뜻) 실시간 중계도 가능하다.

 

Video coding format 

비디오 스트림은 파일 크기를 더 작게 만들기 위해 비디오 코딩 포맷을 사용하여 압축된다. 비디오 코딩 포맷에는 H.264, HEVC, VP8, VP9이 포함된다. 

H.264 (MPEG-4 AVC)

- 기존의 표준(MPEG-2, H.263, MPEG-4 파트 2)과 비교했을 때, 낮은 (절반 이하의) 비트레이트에서 비슷하거나 더 좋은 화질을 얻을 수 있도록 개발되었다. 

- 또한 비메오, 유튜브, 아이튠즈 스토어 영상 등의 인터넷 스트리밍 서비스와 어도비 플래시 플레이어 및 마이크로소프트 실버라이트 등의 웹 소프트웨어, 다양한 HDTV 방송에 널리 사용된다 (= 가장 많이 사용되는 표준)

 

 

Container bitstream

인코딩 된 오디오와 비디오 스트림들은 MP4, FLV, WebM, ASF, ISMA 등의 컨테이너 비트스트림(바이트가 나열된 것으로 일반적으로 각각 8비트로 되어 있으며 특별한 경우의 비트스트림으로 취급할 수 있다.) 내에 조합된다.

 

Transfer Protocol

비트스트림은 어도비의 RTMP, RTP 등의 전송 프로토콜을 사용하여 스트리밍 서버에서 스트리밍 클라이언트로 전달된다. 2010년대에는HLS, 마이크로소프트의 스무스 스트리밍(Smooth Streaming), 어도비의 HDS, 또 MPEG-DASH 등의 비 사유 포맷 등의 기술들이 등장하여 사유 전송 프로토콜을 사용하지 않고도 HTTP를 통한 가변 비트레이트 스트리밍을 가능케 하였다.

  •  RTMP
  •  RTP
  •  HLS
  •  Smooth Streaming
  •  HDS
  •  MPEG-DASH

 

Control Protocol

스트리밍 클라이언트(최종 사용자)는 MMS 또는 RTSP와 같은 제어 프로토콜을 사용하여 스트리밍과 통신할 수 있다.

  • MMS
  • RTSP

 

 

Video streaming flow

[ Server ]

1. 비디오 

2. 압축 (use coding format) 

3. Encoding video 

4. Transfer (Bitstream) 

 

[ Client ]

4. Transfer (Bitstream)

5. Decoding video (android.media.MediaCodec?)

6. Streaming

7. Communication to server(Control Protocol)

 

 

Part1 ) Video Streaming Structure

Part2 ) Transfer Protocol

Part3 ) Decoding video

Part4 ) Streaming

Part5 ) Control Protocol

 

 

 

 

Reference 

(https://ko.wikipedia.org/wiki/스트리밍)

'Dev' 카테고리의 다른 글

Rxjava interval로 Timer구현하기  (0) 2020.04.11