동영상 플랫폼

GreenBean·2023년 1월 11일
0
post-thumbnail
post-custom-banner

동영상 플랫폼

동영상 플랫폼 이해하기 | HLS
동영상 플랫폼 이해하기 | AWS MediaConvert

  • 스트리밍 동영상 플랫폼 구성을 위한 정리

HLS 란?

  • HLS ( HTTP Live Streaming ) 는 HTTP 로 영상을 스트리밍을 할 때 사용하는 프로토콜을 의미
    • 이 프로토콜은 2009년에 애플에서 공개한 표준이며 현재는 많은 플랫폼에서 HLS 프로토콜을 지원하고 활용하고 있음
  • HLS 에서 사용되는 호출은 2가지인데 M3U8TS
    • M3U8 은 재생할 목록에 대한 호출이며 TS 는 대상 미디어 파일
    • 이 2가지 타입의 호출을 통해 미디어를 라이브 스트리밍 함

HLS 특징

  • HLS 프로토콜을 사용하면 네트워크 상태에 따라 영상 화질을 선택할 수 있는 Adaptive Bitrate Streaming 을 사용할 수 있음
    • 클라이언트에서 영상을 청크 ( 비디오 조각 ) 단위로 나눠서 다운받을 수 있으며 부분 재생을 할 수 있는 기능도 제공
    • 이러한 특징 덕분에 사용자는 영상을 재생 할 때 전체 영상 파일을 다운받지 않아도 되며, 특정 재생 위치부터 영상을 보는 경우 해당 위치부터 영상을 다운받아 볼 수 있게 됨

M3U8 ∙ TS 확장자 파일

  • 위와 같은 특징을 지원하기 위하여 HLS 프로토콜은 M3U8 확장자 파일과 TS 확장자 파일로 구성되어 있음

  • M3U8 파일에는 영상 재생을 위한 메타 정보들이 담겨있음
    • 이 메타 정보에는 대역폭별 M3U8 파일경로 혹은 TS 파일경로 등이 담겨있음
    • TS 파일은 실제 스트리밍 영상 데이터이며 시간 단위로 작게 나누어져 있음
  • M3U8 파일을 통해 Adaptive Bitrate Streaming 이 구현 가능하며 TS 파일을 통해 영상을 부분적으로 다운로드 가능

M3U8 샘플

# 대역폭별 m3u8 파일 경로

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-INDEPENDENT-SEGMENTS
#EXT-X-STREAM-INF:BANDWIDTH=3082123,AVERAGE-BANDWIDTH=3082123,CODECS="avc1.640028,mp4a.40.2",RESOLUTION=1080x1920,FRAME-RATE=29.970
2f898c392d6cb7cd69f9ca0bb3ffc642_20191216131423_hpt_q8.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=3864924,AVERAGE-BANDWIDTH=3864924,CODECS="avc1.640028,mp4a.40.2",RESOLUTION=1080x1920,FRAME-RATE=29.970
2f898c392d6cb7cd69f9ca0bb3ffc642_20191216131423_hpt_q9.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=5213165,AVERAGE-BANDWIDTH=5213165,CODECS="avc1.640028,mp4a.40.2",RESOLUTION=1080x1920,FRAME-RATE=29.970
2f898c392d6cb7cd69f9ca0bb3ffc642_20191216131423_hpt_q10.m3u8
# ts 파일 경로
( 대역폭별 m3u8 파일을 다운받은 후, 실제로 영상을 재생하기 위한 ts 파일 경로 )

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:4
#EXT-X-MEDIA-SEQUENCE:1
#EXT-X-PLAYLIST-TYPE:VOD
#EXTINF:3,
2f898c392d6cb7cd69f9ca0bb3ffc642_20191216131423_hpt_q8_00001.ts
#EXTINF:3,
2f898c392d6cb7cd69f9ca0bb3ffc642_20191216131423_hpt_q8_00002.ts
#EXT-X-ENDLIST

Stream Segmenter

  • HLS 로 영상을 제공하기 위하여 필요한 데이터 흐름
    • 원본 > 인코더 > 스트림 세그먼터 > 웹 서버 > 플레이어 단계로 구성
    • 스트림 세그먼터 는 원본 데이터를 화질별로 잘게 분할하여 TS 파일을 생성
    • 그리고 이 분할한 파일에 접근할 수 있도록 메타 데이터 파일인 M3U8 파일을 만듬

AWS MediaConvert

  • AWS MediaConvert스트림 세그먼터 역할을 해주는 AWS 솔루션
    • 파일 기반 콘텐츠를 여러 디바이스에 송출할 할 수 있도록 파일을 변환해주는 프로그램

File Based Transcoding 이란?

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

영상 변환

  • 영상 파일의 해상도를 낮춰서 파일을 압축하거나 파일을 여러개로 분할해주는 역할을 수행
  • Adative Streaming 을 위하여 네트워크 대역폭별로 내려줄 영상 파일을 지정할 수 있음
  • 영상의 썸네일 이미지를 추출할 수 있음
  • 영상 음성 파일을 추출
  • 영상 파일 포맷을 변환
    • 예를 들어 M2TS 포맷 영상 파일을 HLSMP4 파일로 변환 가능

패키징

  • 여러 디바이스 타입에서 영상 파일을 사용할 수 있도록 영상 파일을 패키징
    • 파일의 접근 권한을 제한하는 DRM 솔루션을 적용할 수 있음

AWS MediaConvert 사용 이유

  • 서비스 운영을 AWS 에서 해주기 때문에 관리 비용을 줄일 수 있음
  • File Transcoding 기술에 대한 진입장벽이 낮아짐
    • File Transcoding 기반 지식과 프로그램 설정에 대해 DeepDive 를 하지 않아도 됨
    • AWS MediaConvert 사용 방법만 알면 가능
  • 서비스를 쉽게 확장할 수 있음
  • 비용 예측이 쉬움
  • File Transcoding 기능을 쉽게 도입하고 유지 보수할 수 있다는 것이 장점

AWS MediaConvert 플로우

스튜디오 영상 관리 플로우

  • 영상 제작자가 만든 고화질 영상 원본 파일이 영상 소비자에게 전달되는 플로우

  • 원본 영상을 S3 에 업로드를 하고 CMS 툴을 활용하여 AWS MediaConvert 에서 파일 변환 작업을 수행
    • 이 때 영상 보안 설정 ∙ 영상 압축 ∙ 오디오 파일 분리 등의 작업들이 수행
    • 이렇게 변환된 파일은 다시 S3 에 저장
    • 그리고 이 영상은 유료 TV 방송 채널 혹은 OTT 로 송출

인터넷 영상 제공 플로우

  • 일반적인 인터넷 서비스에서 영상을 업로드하고 송출하는 플로우

  • 영상을 S3 에 업로드하면 이 이벤트가 트리거가 되어 AWS LambdaAWS MediaConvert 를 실행
    • 이렇게 변환된 데이터는 S3 에 저장되고 Cloud Front 에 캐싱되어 여러 디바이스에 송출

AWS MediaConvert Job 구성 요소

  • AWS MediaConvert 에서 File Transcoding 을 실제로 수행하는 작업을 JOB 이라고 부름
    • INPUT 은 원본 리소스를 의미하며 OUTPUT 은 변환된 파일을 의미
    • OUTPUT 결과는 여러 개의 그룹으로 묶어서 지정할 수 있음
  • 위의 그림은 원본 리소스를 HLS 그룹과 DASH 그룹으로 나눠서 변환하는 케이스를 의미
    • 각 그룹 안에서 원하는 해상도와 Adaptive Streaming 을 위한 대역폭 설정 등을 할 수 있음
profile
🌱 Backend-Dev | hwaya2828@gmail.com
post-custom-banner

0개의 댓글