막무가내 삽질 블로그
[스트리밍] 기본지식 본문
스트리밍이란? 흐르다, 흐름이란 사전적 의미를 가지고 있다
기술적인 의미는
인터넷으로 음성이나 영상 파일 등을 실시간으로 재생하는 기술
우리가 일상에서 볼 수 있는 스트리밍 서비스는 대표적으로
youtude, netflix, twitch, afreecatv 등이 있다.
스트리밍 서비스 종류에는 다음과 같은 것들이 있다.
1. Progressive Download
2. RTSP/RTMP Streaming
3. Adaptive HTTP Streaming
1. Progressive Download
서버에서 클라이언트로 정보가 올 때, 파일의 일부가 전송되더라고 도착한 파일의 일부를 재생하는 방법
(대표적으로 youtube가 사용했던 방식, 지금은 아님)
장점 : 가장 구현하기 쉬운 방식으로 웹 서버에 비디오를 올려 놓으면 사용자는 해당 비디오의 url만 알면 된다
전체 파일을 다운받기 전에 재생하므로 매우 스트리밍과 동일하게 보인다.
단점 : 사용자가 보는 만큼이 아니라 다운로드 된 만큼의 데이터가 차감된다.
(동영상을 1초만 보고 종료하여도 100MB를 다운 받은경우 그 비용을 모두 지불)
인터넷이 빠를 경우 원활한 서비스를 제공받을 수 있지만 그렇지 않은 경우에는 일정 양을 다운 받을 떄까지
동영상 재생을 멈추기 때문에 불편하다.
2. RTSP/RTMP Streaming (Real Time Streaming Protocal / Real Time Messagin Protocal)
이 방식은 데이터를 다운받지 않는다. 사용자가 현재 시청하고 있는 비디오 프레임만 전송하며, 이미 시청한 데이터는 버린다.
장점 : 중간에 비디오 화질을 변경해도 이상이 없기 때문에 통신망이 변경되거나, 화면 크기가 달라져도 정상적으로
영상 재생이 가능하다.
스트리밍이 가능하다.
단점 : 별도의 소프트웨어가 설치된 스트리밍 서버가 구축되어야 한다.
특정포트를 사용해야 하는데 클라이언트측 포트가 방화벽에서 막힌 경우 재생하려면 방화벽을 열어야 한다.
3. Adaptive HTTP Streaming
이 방식은 PD + RTMP/RTSP의 장점을 결합한 방식이다. (현재 youtube, netflix 등.. 사용중으로 알고있음)
서버의 작은 조각 단위의 비디오를 가지고 스트리밍 하게 되며, 플레이어는 이 미디오 조각을 연속된 스트림으로 연결한다. 대중적인 사례는 애플의 HLS 이고 HLS 프로토콜은 표준으로 지정되었다.
동영상 컨텐츠를 다양한 해상도로 인코딩해 저장해두고 데이터 단위도 동영상 컨텐츠 하나로 저장하는게 아니라 잘게 쪼개서 저장한다.
우리가 youtube 또는 netflix를 시청할때 네트워크 상황에 따라 해상도가 자동으로 변경되어 출력되는 상황을 기억하고 있다면 Adaptive HTTP Streaming 방식이다.
참고
'개념정리' 카테고리의 다른 글
OkHttp Interceptor (0) | 2020.03.11 |
---|---|
REST, REST API, RESTful, Retrofit 정리 (0) | 2020.02.18 |
자바 컬렉션 (Java Collection) 정리 (0) | 2020.02.17 |
OSI 7계층과 TCP/IP 정리 (0) | 2020.02.14 |
TCP/IP 란? TCP/IP의 개념 (0) | 2019.11.07 |