Skip to content

스트리밍 프로토콜

SeoKyung Lim edited this page Dec 14, 2023 · 1 revision

일단 스트리밍이 뭐야?

인터넷을 통해 사용자에게 비디오/오디오 미디어를 전달하는 방법.

  • 파일을 한 번에 조금씩 지속적으로 보냄
  • 사용자의 장치가 먼저 모든 파일을 다운로드 하지 않고도 재생 가능

스트리밍 프로토콜의 종류

  1. Progressive Download

    = 웹 서버로부터 동영상을 모두 다운로드 한 뒤 파일이 도착하는대로 재생

  2. RTSP, RTMP 스트리밍

    = Real-time Streaming Protocol

    = 사용자가 현재 시청하고 있는 비디오 프레임만을 전송

    (대충 찾아봐서 몰랐는데 요게 스트리밍 프로토콜의 원조? 느낌)

    다만 스트리밍 서버가 따로 있어 서로 다른 네트워크로 데이터를 교환해야 하므로 서비스가 원활하지 않다는 문제가 있음 (ex. 방화벽, NAT)

  3. Adaptive HTTP Streaming

    = 컨텐츠를 잘개 쪼개어 저장하고 재생할 때 네트워크 상황에 따라 컨텐츠 해상도를 조절

    ⇒ 아래의 3가지 프로토콜은 Adaptive HTTP Streaming 방식(컨텐츠를 잘개 쪼개 그때 그때 제공)인데, 이는 공급사마다 프로토콜이 달라 표준화가 부족하다.

    ** 기존과는 2가지 큰 차이가 있다.

    1. 동영상 정보를 전달하는 방식

    2. 스트림 세그먼트

      일정한 시간 간격으로 입력받은 미디어 데이터 분할

      → 그 파일에 접근할 수 있는 메타데이터(m3u8) 생성

      → “잘게 쪼갠 영상 + 다음 동영상 정보”를 클라이언트에게 전달

HLS (HTTP Live Streaming)

근데 왜 많이 사용?

  • 모든 인터넷 연결 장치가 HTTP를 지원하기 때문에 전용 서버가 필요한 스트리밍 프로토콜보다 간단하게 실행할 수 있다.

  • 재생에 지장을 주지 않고 네트워크 상태에 따라 비디오 품질을 높이거나 낮출 수 있음 (= 적응 비트 전송률 스트리밍)

    ** 적응 비트 전송률 = 네트워크 상태에 따라 스트리밍 비디오 품질 조정

간단히 소개하는 HLS

→ 동영상을 작은 조각들로 분할하고, 이를 HTTP 기반의 웹 서버로 전송.

→ (TMI) 본래 탄생 목적은 애플이 자사 제품에 사용하기 위함이었음

동작 순서

"원본 > 인코더 > 스트림 세그먼터 > 웹 서버 > 플레이어”

HLS 구성

주로 m3u8과 ts(타스 아님)를 사용한다.

** m3u8 = 영상 재생을 위한 메타 정보 (UTF-8로 인코딩)

** ts = 잘개 쪼갠 미디어 파일 (MPEG-2의 Transport Stream 포맷)

Untitled

가볍게 정리하면 m3u8 → 적응 비트레이트 스트리밍(사용자의 네트워크 환경에 따라 품질 조절) 구현 가능, ts → 부분재생 가능

⇒ 중간에 네트워크가 끊겨도 문제되지 않음

서버의 프로세스

  1. 인코딩

    비디오 데이터의 포맷을 다시 설정하여 모든 장치가 데이터를 인식하고 해석할 수 있도록 함

  2. 조각화

    비디오는 몇 초 길이의 세그먼트로 나뉨 (기존 6초)

  3. HLS는 비디오 조각의 인덱스 파일을 만들어 순서를 기록

  4. 다양한 품질로 여러 세트의 조각을 복제

++ 스트리밍을 캐시할 수도 있음

++ CDN을 활용해 여러 지역으로 스트리밍을 편하게 배포할 수 있음

HDS (HTTP Dynamic Streaming)

= Adobe에서 개발한 가변 비브레이트 스트리밍 방식.

(그냥 적응 비트 전송률 스트리밍이랑 똑같은 말)

작동 방식

[서버]

  • MP4 → F4F (오디오, 비디오, 메타데이터 포함) 파일 형식으로 변환시킴
  • H.264로 인코딩

HDS 스트리밍이란? | HLS와 HDS의 비교 | Cloudflare

(아직 적다 말았음)

HLS와의 차이

  • HDS가 HLS보다 지원과 채택이 덜 광범위함

    (단종된 Adobe Flash와 함께 사용하기 위함이었음)

MPEG-DASH (Dynamic Adaptive Streaming over HTTP)

간단한 특징

  • 비디오를 작은 조각으로 나누고 다양한 품질 수준에서 해당 조각을 인코딩

작동 방식

  1. 인코딩 및 조각화

    원본 서버가 파일을 조각 분할(마다 색인 파일)하고, 이를 인코딩

    (여기서 어떠한 인코딩 표준도 사용 가능)

  2. 전송

    사용자가 스트림 watch → 인코딩된 조각이 인터넷을 통해 push → (왠만하면) CDN을 통해 효율적으로 배포

  3. 디코딩 및 재생

    사용자 장치가 스트리밍된 데이터 수신 → 데이터 디코딩 → 재생

HLS와의 차이

  • DASH는 어떠한 인코딩 표준도 가능
  • DASH는 세그먼트 길이가 210초 (최적 24초)
  • DASH는 국제 표준 (but HLS는 Not)

안드도 HLS, DASH는 사용 가능

Clone this wiki locally