동영상 스트리밍 기술 - 1

김민건·2021년 12월 19일
0

기술

목록 보기
13/19

#주저리주저리

Zoom, Google Meet 등에서 WebRTC로 화상회의 서비스를 제공한다는 소식을 예~~전에 접했었다. 하지만 그 이후로 나도 모르게 "실시간 영상 서비스? 그럼 WebRTC 사용하겠지~" 라고 어마어마한 착각을 하고 있었다... 아프리카 TV, YouTube, 트위치 등, 다수의 불특정 대상자에게 제공하는 스트리밍 서비스는 Progressive Download, RTMP를 사용하고 있었던 것!
( 지금은 HLS, Adaptive HTTP Streaming, MPEG-DASH, SRT 등을 사용한다고 합니다 )
WebRTC는 소규모 실시간 서비스에서만 뛰어난 성능을 보이기 때문에 스트리밍 서비스에서는 사용하지 않았던 것이다.

따라서 저번 시간에는 기본적인 실시간 통신 기술들에 대해 간략히 살펴보았는데, 오늘은 스트리밍 서비스가 정확히 어떤 것인지, 스트리밍에 사용되는 기술에는 어떤 것들이 있는지 알아보자

스트리밍이란?

스트리밍은 인터넷으로 음성이나 영상 파일 등을 실시간으로 재생하는 기술이다. 여기서 핵심은 사용자 환경에 별도로 저장하지 않고 전달받은 데이터를 그대로 재생시켜버리는 것이다.

하지만 우리는 모두 카카오톡을 사용하면서 동영상을 실행할 때 별도로 다운로드 받고, 다운로드가 끝나기 전까지는 실행하지 못하는 그런 경험을 모두 겪었을 것이다. 그렇다면 다운로드할 때도 마찬가지로 실시간으로 바로 영상을 재생시켜버리면서 다운로드하면 안되는 것일까...?

하지만 스트리밍 서비스를 제공하기 위해서는 한가지 핵심적인 조건을 만족해야한다. 바로 동영상처럼 무거운 파일을 하나의 큰 파일로 전달하는 것이 아니라 여러개로 쪼개서 전달하는 것이다. 물론 카카오 측에서도 다운로드와 실시간 재생을 병행할 수는 있겠지만, 서비스의 성격 차이로 인해 불필요한 스펙을 추가하지 않은 것으로 추측한다. 개인적으로 스트리밍으로 실행할 수 있으면 엄청 편할듯...

개인적으로 프론트에서 사용되는 Lazy Loading 개념 혹은 Multipart 기능과 유사한 맥락이라고 생각되었다.

Lazy Loading은 사용자에게 빠르게 ( 대기시간을 최소화하여 ) 화면을 뿌려주기 위해 당장 필요하지 않은 요소들은 배제하고 먼저 주요 요소들부터 뿌려주는 방식을 채택한다고 알고 있다.

그렇기에 아프리카 TV, 유튜브, 트위치에서 우리가 이런 기술과 개념들로 인해서 실시간으로 영상을 시청할 수 있는 것이다! 이는 4G, 5G 등의 정보 통신 기술의 발전이 없었다면... 아마 아직도 영상을 다운로드해서 영상을 시청해야하지 않았을까..... 생각만 해도 역ㄱ...

아무튼 실시간, 혹은 정말 대용량의 데이터들을 다루는 데에 있어서 해당 기술이 필수적이라는 것을 알 수 있었다. 그렇다면 이러한 스트리밍 기술의 종류에는 어떤 것들이 있을까?

고전 스트리밍 기법 종류

1. Progressive Download

웹 서버로부터 지속적으로 데이터를 다운로드받으면서 필요한 영상 데이터가 도착하는 대로 재생시켜주는 방식이다.
해당 비디오의 URL에 접근만 하면 되기에 가장 간단하게 구현할 수 있는 방식이지만 몇가지 단점이 존재한다. 영상을 시청하면서 계속 다운로드를 진행하기 때문에, 사용자가 "시청"한 만큼이 아니라 "다운로드"한 만큼 비용이 발생한다. 또한, 화질이 다른 영상의 경우에는 별도로 처음부터 다운로드해야하는 문제점이 있으며 동영상을 전체 시청할 때까지 동영상이 계속 저장되어 있는다는 단점이 있다.

2. RTMP

프로그레시브 다운로드와 달리, 시청중인 프레임만 전송해주고, 이미 시청된 데이터는 삭제시킨다. 이는 우리가 한 때 많이 사용하던 Adobe Flash에서 사용되던 프로토콜이다.
즉, HTML5에서는 더이상 지원하지 않는다... 하지만 아직 실시간 스트리밍 서비스에서 가장 많이 사용되는 프로토콜이고, 동영상 시청을 위한 대기 시간이 짧다는 장점을 지니고 있다.

하지만 미디어 전용의 스트리밍 서비스가 구축되어야 서비스가 가능해서 구축 과정이 복잡하고 비용이 비싸다는 단점을 지니고 있으며, 역설적이게도 미리 데이터를 저장해두지 않기 때문에 안정적인 네트워크 환경이 아니라면 종종 스트리밍 영상이 끊키는 경험이 발생할 수 있다.
또한, HTTP를 통해 직접적으로 스트리밍할 수 없기 때문에 웹에서 사용하려면 타사 CDN을 통해 제공해야한다.

마무리

불과 몇년 전까지만 해도 자주 사용되었던 기술들이 이제는 거의 한물간 기술들이 되었다는 것에서 조금 소름이.. 끼쳤다. 그리고 평소 말로만 듣던 "어떤 기술을 사용하는 지에 대해서는 정답이 없다" 라는 문구에 대해서 다시 한번 상기할 수 있는 시간이었던 것 같다. 같은 실시간 영상 기술을 다루더라도 그 성격에 따라서 사용되는 기술 스펙트럼이 정말 달라진다는 것을 깨달았기 때문이다. 다음에는 최근에 핫한 스트리밍 기술들에 대해서 한번 살펴보자!

profile
백엔드 꿈나무

0개의 댓글