ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • AWS 미디어 서비스를 이용한 Live/VOD 서비스 구축
    Media/AWS Media 2022. 6. 15. 00:36

    AWS 미디어 서비스를 이용한 Live/VOD 서비스 구축


    1. AWS 미디어 서비스 소개

    AWS 전체 서비스


    AWS 미디어 서비스를 이용한 워크플로우


    2. 라이브 스트리밍 서비스 구축

    라이브 스트리밍 미디어 애플리케이션

    • 라이브 이벤트
    • 상업 이벤트
    • E-Sports
    • 방송
    • IoT & 보안
    • 정부 & 교육

    2-1. 라이브 스트리밍 워크플로우


    2-1 Source Contribution

    고려사항

    • 인코더 H/W
    • 코덱/기능 지원
    • 영상 화질과 프로토콜
    • 전용망 또는 퍼블릭 네트워크
    • 공연 장소의 대역폭
    • 응답 시간
    • 그 외 제약사항

    OTT의 장애물

    1. 불안정한 네트워크 ➡️ ABR
    2. 다양한 패키지들의 생성, 저장, 전달 비용 ➡️ JITP

    HLS Manifest 파일 구조

    Manifest 파일에는 각 bitrate에 맞는 청크들의 리스트 존재


    Adaptive Bitrate (ABR)

    • 가장 낮은 bitrate(가장 작은 사이즈의 청크)를 받아서 재생
    • 다운로드 속도에 따라 더 나은 품질의 파일(크기가 큰 파일)을 다운로드 

     

    ABR 작업을 해줄 수 있는 트랜스코딩 서비스 ➡️ MediaLive

    2-2. AWS Elemental MediaLive

    텔레비전이나 디바이스로 전달할 라이브 영상을 인코딩

    • 몇번의 클릭만으로 라이브 방송 시작
    • 무제한의 라이브 채널 확장
    • 방송 수준의 라이브 영상 서비스 제공

    이전은 온프레미스 하드웨어에서만 가능했던 트랜스코딩 작업이 클라우드로 이전

    라이브 비디오에서 사용 

    인프라 스트럭처 이용해서 간편하게 생성

    확장성, 중복성 있게 만들어짐

    온디맨드 요금 ➡️ 비용 효율적


    어떻게 동작하나?

    인제스트 ➡️ 입력으로 정의된 HLS, RTS 등 ➡️ 트랜스코딩 ➡️ 오리진  ➡️ CDN ➡️ 플레이어
    • 코덱, 비트레이트, gop인스트럭처, 오디오 파라미터, 캡션 등 정의하고,
    • HLS, MS smooth, UDP, RTAP와 같은 비디오와 아웃풋 포맷 정의해서,
    • 채널을 통해 multiple bitrate video profile로 비디오를 트랜스 코딩

     

    Origin

    • 비디오, 오디오 캡션과 같은 미디어 청크를 서빙하는 http 서버
    • 미디어 패키지 또는 스토어 사용 가능

    Input - 클라우드로 영상 가져오기

    미디어 ingest하는 방법

    PUSH / PULL


    Channel - Input 에서 받은 영상을 트랜스코딩/패키징하여 Output으로 전달

     

    Channel

    • input에서 받은 영상을 트랜스코딩/패키징하여 output으로 전달
    • 1개 이상의 인풋 연결 가능
    • 채널 안에는 encoding, output, outputgroup 존재
    encoding : video, audio, caption에 대한 instructure 존재
    output : encoding의 조합
    outputgroup : output의 조합

    Output Group 종류

    • Archive : Save to S3 Bucket
    • HLS : Apple HTTP LIve Streaming, stream to AWS Elemental MediaStore, AWS Elemental Media Package as origin. Or other CDN services
    • Smooth : Send to origin or CDN
    • UDP : Broadcast live stream vias RTP/UDP
    • RTMP : RTMP destination such as Facebook, YouTube etc.

    AWS Elemental MediaLive 추가적인 기능

    • 캡션/자막
    • 광고 삽입
    • 광고 passthrough
    • 오디오 믹싱
    • 정적 키 암호화

    2-3. AWS Elemental MediaPackage

    JITP 이용하여 디바이스에 맞는 컨텐츠를 보내고 DRM으로 보호

    • 하나의 소스에서 다양한 디바이스로 영상 전송
    • DRM 연동으로 콘텐츠 보호
    • DVR 기능 탑재
    다양한 디바이스 지원하기 위해 패키징 개별 필요
    그때그때 영상 청크를 패키징 해줘야하는 번거로움 발생
    이때 패키징을 빠르게 처리해주는 기능 ➡️ JITP

    Just In Time Packaging (JITP)


    Pre-processing과 JITP 차이

    예를 들어,
    MPEG-DASH & HLS 각각 요청이 들어오면 그 포맷에 맞게 매번 응답해줘야함 ➡️ 스토리지 낭비 발생

    JITP
    플레이어 단에서 MPEG-DASH or HLS 로 받을거라고 이야기를 하면 그 자리에서 영상 파일들을 참조하는 플레이리스트 파일을 만들어 줌

    인코더에서 한 번만 표준 형태로 저장을 해주면,
    ➡️ 플레이어가 들어와서 오리진 요청시 중간에 패키지가 포맷에 맞게 그 자리에서 패키징을 해준다
    ➡️ 플레이어에게 플레이어리스트 파일을 넘겨줌
    ➡️ 오리진에서 여러개 세트 준비 필요 없이 원본 세트 하나만 준비하여 MPEG-DASH & HLS 지원 가능

    ABR + JITP

    MPEG, ts 로 오리진 저장

    그때그때 필요한 티비에 / 아이폰에 맞게 포맷, bitrate 조정해서 전송


    MediaPackage and JITP

    • MediaPackage는 JITP 지원
    • 플레이어가 컨텐츠 요청 ➡️ 패키지가 클라이언트와 호환되는 형식으로 엔드포인트에서 직접 스트리밍 가능
    • CDN, CF, 서드파티 이용하여 캐시 전달도 가능

    MediaPackage의 채널

    • 미디어 라이브나 다른 인코더와 같은 소스에 라이브 컨텐츠 스트림을 수신해서 패키징한 후 엔드포인트로 보내는 통로라고 이해
    • 인풋으로 Apple HLS만 허용
    • 채널 생성시 input url 생성
    • 필요시 엔드포인드에 붙일 CF 디스트리뷰션 생성 가능
    • redundancy(중복성) 위해 2개의 인풋 생성

    MediaPackage의 엔드포인트

    한개의 인풋으로부터 세그먼트 duration의 5초를 더한만큼 기다려도 세그먼트 못받으면 ➡️ 자동으로 백업 소스로 전환


    Endpoint 옵션

    • AD Markers
    • Time Delay
    • Startover Window
    • Segment Duration
    • Manifest Window

    Endpoint 액세스 컨트롤 및 스트림 관련 기능

    • 액세스 컨트롤 설정 : 엔드포인트에 클라이언트 접근 설정 ip제한
    • 스트림의 순서 : 스트림 필드의 비트레이트 오더를 원본 그대로 / 오름차순 , 내림차순
    • 스트림 필터링 : 임계값을 통해 재생할 수 있는 스트림을 제한 가능

    컨텐츠 보호

    DRM (Digital Rights Management)

    스피크라는 별도의 프로토콜 지정 -> DRM솔루션 이용 가능

    • 패키지 보안, 인코더 키 교환 (SPEKE)
    • Apple FairPlay, MS PlayReady, Google Widevine

    2-4. AWS 솔루션 구현 - 라이브 영상 스트리밍

     


    3. VoD 서비스 구축

     

    3-1. 파일 기반 스트리밍

    • 저장소 필요 (S3 등)
    • 저장된 영상 타입에 따라 사이즈가 너무 커서 스트리밍에 이슈 발생 가능성 있고, 네트워크 상황에 맞게 스트리밍 못할 수 있음 ➡️ 트랜스코딩과 같은 processing 필요
    • 송출 packaging, CDN
    • 네트워크 상황에 따라 ABR 필요

    ABR (Adaptive Bitrate Streaming)

    • 네트워크 상황에 따라 스트리밍이 되도록 ABR 작업
    • ABR 작업위한 인코딩 서비스 ➡️ Media Convert

    3-2. AWS Elemental MediaConvert

    텔레비전이나 디바이스로 전달할 영상 파일을 인코딩

    • 수분내에 VoD 워크플로우 구축
    • 방송품질의 영상 서비스 제공
    • AWS service들과 손쉬운 통합

    AWS Elemental MediaConvert Terms

     

    MediaConvert는 ➡️ 인코더 역할을 하는 서비스. 인코더가 어떤 비디오 파일을 가지고 처리

     

    Job

    • 인코더가 어떤 비디오 파일을 가지고 처리할때, 이 처리하는 일의 단위 ➡️ job
    • Primary unit of work, input and output 지정

    Job Template

    • 어떤 작업을 할지에 대한 상세한 내역 정의
    • Collection of commonly used job setting (자주 사용되는 잡 세팅의 모음)
    • Useful when processing a collection of inputs to porduce a fixed set of outputs (인풋의 모음 프로세싱 할 때 정의된 아웃풋 세트 생산에 유용함)
    • ✅Output Preset - Settings to create a single output
      • 단일 아웃풋 생성위한 세팅
      • 다양한 아웃풋으로 나오게도 하게함
    • 규격화가 잘되어있음

    Queue

    • 모든 작업은 큐에 제출됨
    • 사용자가 분리되도록 하거나 프로세싱을 위해 잡을 그룹화함
    • 큐에 있는 작업들은 병렬로 처리되고, 큐들은 병렬로 처리됨

    2가지 큐

    1. 일반적 큐
    2. 프라이버티 큐

    MediaConvert 워크플로우

    • job 내부에는 ➡️ input file, output group 존재 / Metadata / job configuration
    • job을 만들어서 큐에 넣으면 적재됨
    • 큐에 앞선 작업이 없다면 바로 실행
    • 결과적으로, S3와 같은 저장소에 저장
    • 이벤트를 발생시켜 추가 작업도 가능

    Inputs


    Output Groups


    Job Settings

    METADATA

    • 어떤 큐에 이 작업을 제출할지 S3에 있는 파일을 읽고, 저장할 수 있도록 하는 IAM 역할
    • 광고, 스코티 역할  등이 모두 메타데이터에 들어감

    Working with Queues



    큐 동시 처리 최대 20개
    리전마다 수치 상이하니 미리 확인



    Working with Presets

    Job Template Output Group의 Preset

    • Preset : 아웃풋을 어떻게 뽑을지 지정함
    • 아웃풋 그룹에는 여러개의 아웃풋 존재
    • 아웃풋 하나에는 비디오, 오디오, 캡션 존재
    • preset으로 만들어 둔다면, 반복적으로 이루어지는 Job에 활용 가능

    Working with Job Templates


    추가적 기능

    • 추가 고급 기능 이용 가능


    AWS 솔루션 구현 - VOD

     

Designed by Tistory.