뒤로
강용민
강용민 ·

비디오 스트리밍

이번 프로젝트들(온라인 스터디 & 영상 기반 포트폴리오)을 통해 비디오 스트리밍이라는 기술에 손 대볼 기회가 생겼고, 이번 프로젝트들을 하면서 고민했던 문제들에 대해 공유해보려 합니다.


Video Streaming의 종류

비디오 스트리밍 기술이 하나로 이뤄져 있는 줄 알았는데 알아보니 현재 쓰고 있는 기술을 크게 두 가지(WebRTC, HLS)로 나뉘었습니다. 이 두 가지의 기술을 이해하려면 전에 어떤 이유에서 비디오 스트리밍을 사용하는지 다음과 같은 고민이 필요합니다.


  • 영상 흐름 방향은 어떻게 되나??
  • 영상 송신자와 수신자의 비율이 어떻게 되나 고민해야 합니다. 크게 (1: N), (M : N)으로 나눌 수 있습니다.
  • (1 : N) : 송신자 한 명이 여러 수신자에게 영상을 뿌려줍니다. 즉, 단방향 통신입니다. `Youtube나 Instagram 등의 SNS 라이브 방송` 이나 `인터넷 쇼핑`을 예로 들 수 있습니다.
  • (M : N) : 여러 송신자가 여러 수신자에게 영상을 뿌려줍니다. 즉 양방향 통신이 돼야 합니다. 송신자가 수신자가 될 수도 있습니다. `Youtube, Gather와 같은 화상 채팅`을 예로 들 수 있습니다.
  • 지연 시간(Latency)이 있어도 되나??
  • 물론 지연 시간이라는 게 짧으면 짧을수록 좋지만 지연 시간이 좀 있어도 허용 가능한가에 대한 고민해야 합니다. 지연 시간이 적으면 적을수록 그만큼 데이터 통신이 빠르게 오가야 하고, 이는 처리하는 서버에 대한 자원 부담이 됩니다.
  • 지연 시간 허용 가능 : SNS 라이브 방송은 송신자가 영상을 이끌어 가기에 약간의 지연 시간(10~20초)을 허용해줍니다.
  • 지연 시간 허용 불가능 : 회의는 송신자와 수신자가 서로 계속해서 소통을 해야 하기 때문에 지연 시간이 길 수 없습니다.
  • 사용자는 얼마나 될까?
  • 이는 영상 방향과 지연 시간과 연관이 되긴 합니다. 사용자 수가 같다면 모든 사용자의 영상 데이터가 양방향으로 오가야 한다면 그만큼 자원 부담이 커질 테고, 지연 시간도 짧아야 한다면 더욱 커집니다.

이러한 고민을 했다면 이제 기술에 대해 알아보겠습니다.


WebRTC

WebRTC는 웹 브라우저 간 P2P 연결을 통해 데이터 교환을 가능케 하는 시술입니다. 양방향 통신이 가능하며, Latency가 짧은 것이 특징입니다. 하지만 그만큼 자원을 많이 잡아먹는다는 단점이 있어 자세한 정보는 포스팅에 남겨 놓았습니다.


HLS

HLS는 Http Live Streaming의 약자로 HTTP가 들어간 것을 보면 예상할 수 있듯이 HTTP 프로토콜의 일종입니다. WebRTC보다 자원에 대한 부담이 적어 그만큼 많은 사용자를 받아들일 수 있는 것이 특징입니다. 하지만 Latency가 있으며, 양방향 통신에 최적화돼있지 않습니다.


선택

온라인 스터디

온라인 스터디의 경우 서로 소통해야 하고, 방마다 사용자가 많아도 20명 이하일 것이라는 가정하에 WebRTC를 택했습니다. 그중 빠른 프로토타입을 만들고, 비용 절감을 위해 Mesh type 구조를 택했습니다.


영상 기반 포트폴리오

영상 기반 포트폴리오의 경우 SNS 방송처럼 단방향 소통으로 해도 되고, 약간의 지연시간을 허용해도 괜찮기에 HLS 기술을 택했습니다.


이외에도 실시간 비디오 스트리밍이라는 기술을 배우면서 새로 알게 된 지식도 있지만 TCP/UDP처럼 네트워크 개념에 대해 다시 상기할 기회가 됐습니다. 앞으로 Encoding/Decoding, Caching 등 여러 해결해야 할 길이 많지만 하나하나 해결하다 보면 언젠가는 부끄럽지 않은 프로젝트가, 사람이 되기를 희망하며 마칩니다.

4

댓글

로그인 후 댓글을 남길 수 있습니다.

아직 댓글이 없습니다.