본문 바로가기
토이프로젝트/[스트리밍] 동영상 스트리밍 서비스 개발하기

[스트리밍] 영상 스트리밍 서비스란? - 1

by 프룹 2022. 3. 4.
반응형

예전부터 영상 스트리밍 서비스를 직접 만들어 보고 싶었다.

왓차, 넷플릭스를 목표로 클론 코딩을 진행하면서 파트별로 소규모 토이스토리를 진행하려고 한다.

 

이 전 포스팅으로 네이버에서 영화 데이터를 크롤링해오는 방법을 소개하였다.

이번 포스팅의 목표는 영상 스트리밍을 이해하고, 구현해보는 시간을 가지려고 한다.

이때, 이 포스팅의 목표는 단순히 서드파티 라이브러리를 사용하는 것이 아니라, 직접 그 라이브러리 구현을 통해 스트리밍 서비스를 구현하는 것을 목표로 한다.

 

# 스트리밍 서비스 종류

1. Progressive Download (HTTP 프로토콜)

 Progressive Download는 서버에 있는 동영상을 시청자가 다운받는 동시에 재생을 하는 방식을 이용한 스트리밍 방식이다. 동영상을 전부 다운받지 않아도 재생할 수 있다는 점에서 이후에 소개/사용 할 Adaptive Streaming방식과 유사하나, 동영상을 끝까지 보지 않더라고 영상을 다운받는 점과 각 화질별로 영상을 다 다운받아야 화질 변경을 할 수 있다는 점에서 트래픽을 많이 요구한다는 단점이 있다. 또한, 동영상이 결국엔 사용자 PC의 임시 폴더에 저장된다는 점에서 보안에 취약하다.

2. Adaptive HTTP Streaming (HTTP 프로토콜)

 Adaptive HTTP Streaming은 하나의 동영상을 chunk라 불리는 작은 단위의 파일로 쪼개어 재생하는 것을 말한다.

즉 20분짜리 영상을 10초 단위로 나누어 저장을 하면 총 240개의 chunk파일이 생성된다. 이때 chunk의 개수가 120개가 아닌 이유는 동영상 chunk 120 / 음원 chunk 120개로 나뉘기 때문이다.

앞서서 Progressive Download에서 설명했지만, Adaptive 방식은 파일을 N초 단위로 나눠 저장했기 때문에 사용자가 재생하는 시간보다 약간의 시간만 앞서서 데이터를 가져오면 되며, 영상이 나뉘어 있기 때문에 화질을 변경했을 때 새로 영상을 다운하는 것이 아니라 요청한 시간에 해당하는 chunk를 다운받으면 된다는 장점이 있다. 다만, 동영상을 사전에 각 화질별, N초 별로 나눠야 한다는 번거로움이 있다.

 

 

# 이미지 출처 : https://idlecomputer.tistory.com/92

반응형

댓글