On‐Demand Streaming Video Streaming Service - low-hill/Knowledge GitHub Wiki

스트리밍 동영상 플랫폼을 구성하기 위해 필요한 사전 지식을 정리한다.

동영상 플랫폼 이해하기

HLS(HTTP Live Streaming)?

HTTP기반의 스트리밍 프로토콜로 동영상이나 오디오를 실시간으로 전송하는데 사용된다. 2009년에 애플에서 공개한 표준이며, 현재는 많은 플랫폼에서 HLS 프로토콜을 지원하고 활용하고 있다.

HLS 특징

HLS 프로토콜을 사용하면 네트워크 상태에 따라 영상 화질을 선택할 수 있는 Adaptive Bitrate Streaming을 사용할 수 있다. 그리고 클라이언트에서 영상을 청크 단위로 쪼개서 다운받을 수 있고, 부분 재생을 할 수 있는 기능도 제공한다. 이러한 특징 덕분에 사용자는 영상 재생 시, 전체 영상 파일을 다운받지 않아도 되게 되었다. 그리고 특정 재생 위치부터 영상을 보는 경우, 해당 위치부터 영상을 다운받아 볼 수 있게 되었다.

HLS 파일 확장자

HLS 프로토콜에서 사용되는 미디어 파일의 확장자는 주로 다음과 같다:

  • .m3u8:

    • HLS에서 주로 사용되는 플레이리스트 파일의 확장자로 미디어 스트림의 구조와 재생을 위한 정보를 포함한다. (대역폭별 m3u8 파일경로, 혹은 ts 파일경로 등이 포함됨)
  • .ts:

    • Transport Stream의 약어로, 각각의 세그먼트를 나타내는 미디어 세그먼트 파일의 확장자로 작은 시간 간격으로 나누어진다.
    • .ts 확장자를 가진 파일은 특정 시간 간격 동안의 미디어 데이터 데이터를 담고 있는 미디어 세그먼트(segment)이고, 이러한 세그먼트는 전체 동영상 또는 오디오 스트림을 작은 조각들로 나누어서 전송하고, 클라이언트는 이 세그먼트들을 받아 순차적으로 재생함으로써 스트리밍을 제공한다.

HLS에 대한 데이터 흐름의 주요 단계

HSL으로 영상을 제공하기 위하여 필요한 데이터 흐름은 "원본 > 인코딩 > 스트림 세그먼터 > 플레이리스 생성 > 웹 서버 > 플레이어" 단계로 구성되어 있습니다.  스트림 세그먼터는 원본 데이터를 화질별로 잘게 분할하여, ts 파일을 만듭니다. 그리고 이 분할한 파일에 접근할 수 있도록 메타 데이터 파일인 m3u8 파일을 만듭니다.

HLS에 대한 데이터 흐름은 "원본 > 인코더 > 스트림 세그먼터 > 플레이리스 생성 > 웹 서버 > 플레이어" 단계로 구성되어 있다. 아래는 각 단계에 대한 설명이다.

  1. 원본 데이터:
  • 일반적으로 고화질 및 고해상도로 제작된 동영상이나 오디오의 원본 데이터
  1. 인코딩 (Optional):
  • 원본 데이터를 압축하고 인코딩하여 다양한 화질과 비트레이트의 버전으로 만든다. 다양한 버전의 동영상을 만들어 각 디바이스 및 네트워크 환경에 최적화된 스트리밍을 제공한다.
  1. 스트림 세그먼터 (Segmenter):
  • 인코딩된 데이터는 일정한 시간(예: 몇초) 단위로 나눠지고, 각각의 조각을 세그먼트(segment)라 한다. 이 세그먼트들은 HLS 스트리밍을 위한 .ts 형식으로 저장되며, 클라이언트는 이 세그먼트들을 순차적으로 다운로드하여 스트리밍을 재생한다.
  1. 플레이리스트 생성:
  • 세그먼트들의 목록을 가진 메타데이터 파일인 .m3u8 플레이리스트가 생성된다. 이 플레이리스트는 클라이언트가 각 세그먼트에 접근할 수 있도록 URL과 시간 정보를 제공합니다.
  1. 웹 서버:
  • 세그먼트들과 플레이리스트는 HTTP 웹 서버에 호스팅된다. 이 서버는 클라이언트의 요청에 따라 세그먼트 및 플레이리스트를 동적으로 제공한다.
  1. 플레이어:
  • 클라이언트(예: 브라우저, 모바일 앱)는 웹 서버에서 .m3u8 플레이리스트를 받아와 각 세그먼트를 다운로드하고 재생한다. 플레이어는 네트워크 상태 및 사용자 디바이스의 화면 크기 등을 고려하여 적절한 세그먼트를 선택하여 재생한다.

이러한 데이터 흐름은 동적이고 효율적인 스트리밍을 가능케 하며, 클라이언트는 네트워크 상태에 따라 적절한 화질과 비트레이트를 선택하여 끊김 없는 스트리밍을 받아올 수 있다.

File based Transcoding이란?

영상 콘텐츠 파일에 영상 변환과 압축, 패키징, 접근 권한 제어를 수행한다.

  • 영상 변환 영상 변환은 주어진 영상 파일을 다른 형식이나 해상도로 변환하는 과정이다. 일반적인 영상 변환의 목적은 다음과 같다:
    • 형식 변환: 한 형식의 비디오 파일을 다른 형식으로 변환하는 경우 (예를 들어, MP4에서 GIF로 변환하거나, AVI에서 MP4로 변환하는 등)

    • 해상도 조정: 비디오 파일의 해상도를 변경하여 화질을 개선하거나 용량을 줄여 모바일 장치 또는 다양한 디스플레이 크기에 맞게 조정

    • 스트리밍 포맷으로 변환: Adaptive Streaming을 위해 비디오를 특정 형식으로 변환하여 더 효율적으로 스트리밍할 수 있게 함

    • 영상 압축(Codec): 파일 크기를 줄이기 위해 영상을 압축 (대역폭을 절약하거나 저장 공간을 효율적으로 활용 가능)

AWS Elemental MediaConver란?

방송급 기능을 갖춘 파일 기반 트랜스코딩 서비스입니다. 이를 통해 방송 및 멀티스크린 전송을 위한 주문형 비디오(VOD) 콘텐츠를 대규모로 쉽게 제작할 수 있습니다. 이 서비스는 고급 비디오 및 오디오 기능과 간단한 웹 서비스 인터페이스, 종량제 요금제를 결합한 서비스입니다. AWS Elemental MediaConvert를 사용하면 자체 비디오 처리 인프라 구축 및 운영의 복잡성에 대해 걱정할 필요 없이 매력적인 미디어 경험을 제공하는 데 집중할 수 있습니다.

 

Reference