CS

스트리밍 서버를 구현하기 위한 프로토콜 선택

ri5 2021. 11. 6. 21:26

스트리밍 서비스들

넷플릭스, 티빙, 디즈니 플러스등 다양한 OTT 플랫폼 서비스 시장에 나오고 있다. 기존에 영상 매체를 사용하지 않던 몇몇 플랫폼 서비스들도 틱톡, 유튜브 쇼츠 등의 유행으로 짧은 영상 형태로 컨텐츠를 제공하는 것이 트렌드가 되면서 시장이 커지기 시작했고 더불어 스트리밍과 관련된 기술들이 많이 발전하게 되었다. 그런 스트리밍 기술들을 직접적으로 사용하기 전에 스트리밍 기술의 기반이라고 할 수 있는 스트리밍 프로토콜들을 알아보고 각각의 장단점을 살펴보고자 한다.

 

스트리밍 프로토콜의 작동 방식

 

스트리밍 프로토콜을 설명하기에 앞서서 프로토콜을 간단하게 설명하자면 컴퓨터끼리 송수신할 때 어떤 규칙으로 통신할 지 정의한 것이다. 예를들어 우리가 한국에 살면 한국어를 암묵적으로 쓰는 것처럼 스트리밍 프로토콜의 동작방식은 생각보다 어렵지 않습니다. 용량이 큰 파일의 데이터를 잘게 쪼개서 클라이언트에서 조금씩 조립하면서 사용자에게 영상형태로 제공하는 것이다.

 

1. 스트리밍 프로토콜과 코덱의 차이점

코덱은 큰 용량의 데이터를 압축하거나 해제하여 영상과 같이 용량이 큰 파일을 작은 용량으로 저장하거나 스트리밍하기 위해 나온 소프트웨어이다. 스트리밍 프로토콜과 코덱의 차이를 식품에 비유하자면 코덱은 육수와 같은 많은 양의 국물을 농축시켜 크기를 줄이고 배송하는 것이고 스트리밍 프로토콜은 육수를 작은 단위로 소포장하여 배송하는 것이다.

 

2. 스트리밍 프로토콜을 사용하는 이유

코덱의 압축하는 기술이 아무리 좋더라도 파일크기를 줄이는 것은 한계가 존재했고 무선 인터넷과 같이 네트워크가 변칙적인 환경에서 사용하기에는 부적절했다. 만약 기차와 같은 환경에서 영화를 다운로드를 한다고 처음에는 30분이였지만 가정해보자 터널을 들어갈 때 마다 들쑥날쑥하는 남은 시간을 보고는 금방 싫증을 느끼고 보지않게 될 것이다.

 

그래서 통신 환경이 안정적이지 않은 환경에서도 원활하게 동작할 수 있도록 대용량의 데이터를 잘게 쪼개서 전송하는 통신 방식인 스트리밍 프로토콜을 채택하게 되었다. 요즘은 두개의 방식을 혼용하여 활용함으로써 전송하는 데이터의 크기를 더 줄이게 되었고 그로인해 우리는 영상들을 지연없이 더 빠르게 볼 수 있게 되었다.

 

3. 스트리밍 프로토콜의 종류

HLS 프로토콜

HTTP Live Streaming 프로토콜의 줄임말이다. 처음에는 애플 제품에서 사용하기 위해 애플에서 개발되었지만 현재는 대중적인 라이브 스트리밍 프로토콜로 자리잡았습니다. HLS 프로토콜은 주문형 스트리밍과 라이브 스트리밍이 가능한데 그이유는 HLS의 동작하는 동작방식인 적응 비트 전송률 스트리밍 덕이다. 간단하게 설명하자면 작은 데이터를 HTTP 프로토콜을 활용하여 전송하는데 네트워크의 환경에 따라 비디오 품질을 조절하면서 끊기지 않고 지속적으로 전송하기 때문에 라이브와 주문형 스트리밍이 가능한 것이다. 

 

장점

  • 높은 호환성: HLS는 HTML5 비디오 플레이어와 호환해서 HLS 프로토콜은 거의 모든 인터넷을 지원하는 장치에 스트리밍 하는데 있어서 적합하다.
  • 보안: HLS는 보안 스트리밍으로 유명하다. 세그먼트를 암호화된 데이터로 보내고 권한이 있는 사용자가 재생할 때 복호화가 되면서 보안적으로도 안전하게 전송할 수 있다.
  • 고품질: HLS는 적응 비트 전송률 스트리밍 기술 덕분에 고화질 비디오 스트리밍을 제공한다.

단점

  • 높은 지연 시간: HLS는 네트워크 상태를 체크하고 그에 맞는 품질의 데이터를 전송하기 때문에 다른 스트리밍 프로토콜에 비해 상대적으로 높은 지연 시간을 기다리게 된다.
  • HLS를 사용하는 스트리밍 프로토콜을 사용하는 서버는 영상 데이터 전송 뿐만 아니라 동영상 파일을 읽고 변형키켜야하는 기능도 갖춰야 하기 때문에 도입비용이 높다.
  • HTTP는 서로 다른 네트워크를 통해 데이터를 교환하기 때문에 방화벽이나 NAT을 사용하는 환경에서는 서비스가 원활하지 않다.

RTMP(Real Time Message Protocol)

어도비사에서 개발한 프로토콜로 지연 시간이 매우 짦은 스트리밍을 제공하는 프로토콜이다. 이전에는 Flash 플레이어가 웹 브라우저에서 지원해줬기 때문에 사용이 가능했지만 익스플러어가 종료된 지금은 Flash Player가 역사속으로 사라졌기 때문에 HTML5 플레이어와 호환하지 않는다. RTMP를 웹으로 사용하려면 자체적으로 인코딩을 해줘야하기 때문에 전용 프로그램을 사용해야 한다. 그래서 이전처럼 범용적으로 활용하지 않는다.

 

장점

  • 짧은 지연 시간: 인터넷 연결이 불안정 하더라도 안정적은 비디오 스트림을 유지 할 수 있다. 인터넷이 불안정한 상태에서 동영상을 볼 때 지연이 줄어들고 안정화되면 다시 스트리밍을 빠르게 재생을 할 수 있다.
  • 적응 가능:  시청자가 한 방향으로 피드를 시청하는데 고정되어 있지 않아 적응성을 통해 피드 일부를 건너 뛰고 되감아지거나 시작이 되면 실시간 스트리밍을 참여할 수 있다.
  • 유연성: MP3, AAC 오디오 스트리밍 또는 MP4, FLV 및 F4V 비디오 스트리밍과 같은 다양한 채널을 변경할 수 있다.

단점

  • HTML5에서 지원하지 않음: Flash 플레이어에 보안 및 전력 이슈로 인해 지원이 종료 되었고 HLS와 같은 변환해주는 기능이 없기 때문에 재생할 수 없다.
  • 대역폭 문제: RTMP는 낮은 대역폭 문제에 취약해서 이로 인해 스트리밍이 자주 중단될 수도 있다.
  • HTTP 비호환: RTMP를 사용하려면 Flash Media Server과 같은 특수 서버에 연결하고 타사 CDN을 사용해야 한다.

WebRTC(Web Real-Time Communication)

실시간 컴퓨팅으로 스트리밍을 할 수 있는 오픈 소스 프로젝트이다. 해당 오픈소스가 가지고 있는 차별점 중 하나는 중간 매개체가 없다는 것이다. 서버를 사용하지 않고 사용자끼리 스트리밍이 가능하며 데이터의 교환도 가능하다는 장점을 가지고 있다. 미팅 기능 중 사용자 간 화면 공유가 이에 해당한다. 

 

WebRTC는 실시간 컴퓨팅을 사용하는 프로젝트에 관련된 설정을 많이 지원하기 때문에 다수와 스트리밍을 하는 서비스에 적합하며 대표적으로 스냅샷, 페이스북, whatsApp의 화상 채팅 예시들이 존재한다.

 

장점

  • 오픈 소스: 오픈 소스 프로젝트이므로 특정 스트리밍 요구 사항에 맞게 설정을 할 수 있습니다.
  • 실시간 컴퓨팅: 동영상이 거의 실시간으로 시청자의 화면으로 전송이 된다.

단점

  • 플랫폼에 종속적: 구글에서 만든 오픈소스이기 때문에 크롬에서는 안정적인 호환성을 제공하지만 다른 웹브라우저에서는 특정 기능을 활용할 수 없다는 단점을 가지고 있다.

SRT(Secure Reliable Transport)

온라인 스트리밍 업계의 선두 주자인 Haivision 새로운 스트리밍 프로토콜로 이 프로토콜은 뛰어난 보안, 안정성, 저지연 스트리밍으로 유명하다. 하지만 다른 현재 IT 환경에서는 SRT 프로토콜을 지원하도록 개발되지 않은 곳이 많아서 범용적으로 사용하는데 있어서 제한이 있다.

 

장점

  • 보안: 최고의 보안과 개인 정보를 보호해주는 툴을 포함하고 있기 때문에 방송사에서 스트리밍을 하는데 안전하게 유지할 수 있음
  • 호환성: 장치 및 운영체제의 구애 받지 않기 때문에 인터넷이 지원 된다면 대부분의 장치에서 스트리밍 프로토콜로 활용할 수 있다.
  • 짧은 지연 로딩: 오류 수정 기술을 사용하여 짧은 지연 로딩 스트리밍을 사용하는데 편이하다.

단점

  • 적은 호환성: WebRTC와 같이 IT 환경에서 SRT 프로토콜을 지원해줘야지 원활한 사용을 할 수 있다.

RTSP(Real-Time Streming Protocol)

엔터테인먼트 및 통신시스템에서 스트리밍용 미디어 서버를 제어하기 위해 개발 되었다. 2016년에 RTSP 2.0을 사용하게 됨으로 엔드포인트 간의 미디어세션을 설정하고 제어하기 위한 프로토콜로 알려져 있다.

 

어떻게 보면 HLS와 유사한 면이 있는데 라이브 스트리밍 데이터를 전송하는건 RTSP가 자체적으로 하는 것이 아니라 RTP(Real-Time-Transfer-Protocol)와 RTCP(real time transfer control protocol)과 함께 작동하면서 스트리밍을 지원한다. 그리고 짧은 스트리밍을 지원하도록 설계 되어서 보안 카메라, IOT장치 및 모바일 SDK와 같은 스트리밍에 사용한다.

 

장점

  • 분할 스트리밍: 시청자가 보기 전에 비디오를 다운로드하기 전에 RTSP 스트림을 사용하면 다운로드 되기전에 콘텐츠 시청 가능하다.
  • 사황에 맞는 프로토콜 활용: TCP 및 UDP와 같은 프로토콜을 사용하여 고유한 비디오 스트리밍 프로그램을 만들 수 있다.

단점

  • 다른 스트리밍 프로토콜에 비교하면 덜 유명해서 대부분의 비디오 플레이어 및 스트리밍 서비스가 지원하지 않음
  • HTTP 비호환: RTMP와 마찬가지로 직접 스트리밍은 불가능하기 때문에 RTSP를 스트리밍 웹 서비스를 하는데 어려움이 있고 보통 기업내 보안 시스템 및 사설 네트워크 비디오 스트리밍을 하도록 설계되었다.

HTTP(MPEG-DASH)를 통한 동적 적응 스트리밍

적응 비트 전송률 스트리밍을 사용하여 높은 품질의 비디오를 제공할 수 있고 데이터의 전송이 초단위로 변경이 되는데 MPEG-DASH는 이것을 효율적인 전달과 압축에서 발생하던 오래된 기술 문제를 했다. 코덱의 구애받지 않기 때문에 거의 모든 스트리밍 인코딩 형식의 사용될 수 있습니다. 브라우저 기반 DRM(디지털 권한 관리)을 위한 표준 기반 API인 EME(암호화된 미디어 확장) 및 MSE(미디어 소스 확장) 또한 지원한다.

 

장점

  • 적응형: DASH는 실시간으로 가변 비트레이트 스트리밍을 지원함으로 다양한 인터넷 속도를 가진 사용자에게 고품질의 서비스를 제공하는데 적합하다.
  • 오픈 소스: 오픈 소스이기 때문에 사용자 요구에 맞게 변경해서 사용할 수 있다.

단점 

  • 제한된 지원: Apple과 IOS와 호환되지 않기 때문에 제한된 서비스를 지원할 수밖에 없다.
  • 미래 전망: DASH가 선호하는 미래적 지향 기술에 대한 희망이 있었지만 점점 희박해지고 있다.

출처

https://www.dacast.com/blog/video-streaming-protocol/

https://restream.io/blog/streaming-protocols/