본문 바로가기

Media Services/MediaLive

AWS Elemental MediaLive

AWS에서 Live Encoder가 출시되었다.

 

기존 Elastic Transcoder의 경우 S3 내의 VOD 파일을 단순히 Transcoding 해준 서비스였다면, 이번 AWS Elemental MediaLive는 여러 input Live stream에 대해 인코딩/트랜스코딩이 가능하다.

기존 Elastic Transcoder와 대비되는 서비스는 MediaConvert

 

AWS Elemental MediaLive

- AWS의 Encoder 서비스로 Live 비디오 스트림을 실시간으로 인코딩하고 배포하는 서비스

 

1) 주요 특징

- 두 개의 가용 영역에 리소스 분산

- 스트림에 따라 리소스를 자동적으로 관리하여 고가용성을 제공

- Input Stream은 RTP, RTMP(push), RTMP(pull), HLS Protocol 그리고 두 개의 Input Stream을 지원

- Ouput Stream은 HLS, Microsoft Smooth, UDP, to S3를 지원

- Codec은 현재까지 H.264만 지원

 

2) 사용 방법

2-1. Input Stream에 대한 정의(RTP, RTMP pull/push, HLS)

2-2. Input security groups 정의 후 inputs에 Attach

2-3. Channels 생성 후 미리 정의된 Channel template 중 선택하고, Output에 대한 Destnation url과 옵션을 지정

(Output의 경우 그룹핑이 가능)

그 외 *input(HLS)/ouput optional한 설정이 매우 많음!!!!!

 

3) 비용 비교

Wowza VS AWS Elemental MediaLive

(사실 Wowza와 MediaLive는 비교 대상군이 아니긴하다. Wowza는 부분적으로 인코딩/트랜스코딩이 가능한 미디어 서버고, MediaLive는 전문 인코더)

 

기준

Input: 1080p HD, HEVC, 20Mbps

Output: 1080p HD / 720p HD / 480 SD

 

Elemental MediaLive: $546

 

MediaLive 요금

예 1: 온디맨드, 표준 채널 미국 동부(버지니아 북부) 지역에서 고급 오디오 출력 5개를 생성하고 HD 입력 2개(입력 전환 사용)로 구성된 라이브 표준 채널을 실행할 경우 시간당 비용은 3.942 USD입니다. 입력 1080p HD, HEVC, 20Mbps = 시간당 0.588 USD 1080p HD, HEVC, 20Mbps = 시간당 0.588 USD AVC 출력 1080p HD, 5Mbps, 30fps = 시간당 0.702 USD 720p HD,

aws.amazon.com

 

Wowza 미디어 플랫폼(CPU: 16/Mem: 30GiB): $1000 이상(Wowza License 온디맨드 라이센스 금액 포함)

 

Wowza 이중화 구성의 경우 운영/비용적으로 MediaLive가 더 우위에 있으며, 라이센스를 보유하더라도 Elemental MediaLive가 더 저렴할 것으로 예상

(Input Live HD Stream -> Output 5개의 채널 기준으로 EC2 Type의 경우 개인적 경험에 의한 기준임으로 더 절약될 수도 있음, Wowza 기준)

 

4) 아쉬운 점

로그가 현재 CloudWatch Logs와 Integration이 되어 있지 않음. Stream 로그를 어디서 확인해야 할지 모르겠다. 

도큐먼트를 뒤져도 로그에 대한 설명은 없음. 이제 CloudWatch Logs와 Integration 되었음!!

 

5) 테스트(Archive)

Input: RTMP(PULL)

Encoder: AWS Elemental MediaLive 

Output: S3(HLS) - destination의 경우 http(s), s3(ssl) 형태로 입력(S3는 아카이빙용! 실제 서비스는 Mediastore와 연동 필요)

(CDN Settings Hls basic put의 경우 s3(ssl), http(s) 사용 가능)

 

ex)s3(ssl)://'bucketname'/경로/파일명(하위 경로에 파일명.m3u8 형태로 저장)

ex)http(s)://경로(s3를 http(s) 경로로 사용할 경우 role 적용이 안 되기 때문에 s3는 s3(ssl) 경로 사용 권장)

 

HLS 청크의 주요 옵션(Output Group Manifest and Segments): Segment Length, Num Segments

Archive의 경우: Rollover Interva 옵션 이용

 

Name Modifier에 $dt$, $rv 등 옵션 값을 통해 파일명에 메타 정보 입력 가능

 

S3로 미디어 hls chunk들이 저장

 

 

일단은 Play가 된다.

 

Archive 용도로 Live의 VOD 서비스로는 사용할만하다. CloudFront와 연동하면 좀 더 나은 성능으로 볼 수 있을 듯 하다.

 

다만 국내 리전에 없어서 실제 서비스로 사용하기에는 무리가 있다. (해외 송출 Stream 끊김 현상이 발생될 수 있으므로)

 

Media 카테고리까지 접수....어서 빨리 한국 리전에도 런칭되기를

 

추가 정보

Document

AWS Korea Blog

 

AWS Media Services – 클라우드 기반 비디오 처리, 저장 및 수익 창출 서비스 출시 | Amazon Web Services

초기에 웹 비디오가 어떤 것이었는지 기억하십니까? 독립 실행형 플레이어, 우표보다 크지 않은 비디오, 느리고 불안정한 연결, 오버로드된 서버 및 상존하는 버퍼링 메시지는 20년 전의 기준이었습니다. 오늘날 기술 진보와 광범위한 표준으로 인해 상황이 매우 개선되었습니다. 이제 비디오 소비자가 제어합니다. 소비자는 모든 모양, 크기 및 빈티지의 디바이스를 사용하여 방송, 스트리밍 또는 OTT(over-the-top)로 전송된 실시간 및 기록된 콘텐츠를 […]

aws.amazon.com

 

 

*Input option 추가

 

Channel and input details

General info

Channel name: 채널 이름

IAM role: role 권한 부여

Create role from template를 통해 MediaLive에서 사용할 Role을 생성할 수 있음

(S3 GET/PUT 등 and SSM ReadOnlyAccess 권한)

Remember role 선택 시 추가로 채널을 생성할 경우 기존 Role을 사용

 

Channel input

Create input 선택

Input details

Input details

Input name - required: Input 이름

Input type - required

RTP, RTMP(push), RTMP(pull), HLS 중 선택

Input security Group

Use existing: 기존 생성한 Security Group 사용

(VPC S.G와 별개, MediaLive의 경우 Public 서비스)

Create: Security Group 생성

 

Input codec

MPEG2, AVC, HEVC 중 선택

Input resolution

SD, HD, UHD 중 선택

Maximum input bitrate

10, 20, 50 Mbps 중 선택

 

Channel template

이미 구성된 template 혹은 Custom template(매우 다양한...옵션을 통해, 서비스별 설정 가능) 생성

 

 

General channel settings

Blanking 및 AD 관련 등 설정으로 중계 서버가 필요

 

input settings

Disable

Network Input Settings: HLS(HTTP) 사용할 때 필요한 설정(보통 INPUT은 RTMP로...)

Server Validation

CHECK_CRYPTOGRAPHY_AND_VALIDATE_NAME: HTTPS 통신 시 인증서 확인 옵션

(wildcard 사용 시 subdomain과 인증은 에러가 발생될 수 있음)

CHECK_CRYPTOGRAPHY_ONLY: SSL 인증서만 확인하는 옵션인가?

HLS Input Settings

DIsable

HLS Input Settings

Bandwidth: m3u8 bandwidth 옵션에서 가장 근접한 input을 받음

   (입력 안 하면 가장 큰 bandwidth input을 받음)

Retries: input 실패에 대한 재시도

Retry Interval: Retries 옵션 주기

Buffer Segments: segment 버퍼 갯수(입력 안 하면 바로 Ingest)

Input Filter: MPEG-2 input deblocking filter가 default

AUTO: input에 따라 deblokcing 필터 적용

DISABLED: 적용하지 않음

FORCED: input type에 관계없이 적용

Filter Strength: 필터 크기

Deblock Filter: Deblock Filter 사용 유무

Denosise Filter: Denoise Filter 사용 유무

Source End Behavior: File의 경우 Loop 선택(default continue)

Video Selector: map 옵션

Selector Settings: 스트림이 멀티 채널의 경우 Program id 또는 pid를 기준으로 Input 제어

Video selector program program id

Video selector pid

Color Space

FOLLOW

REC_601

REC_709

Color Space Usage: Color Space가 FOLLOW가 아닐 때 적용

FALLBACK: input color space가 없을 경우 space에 정의한 옵션 적용

FORCE: input color space 관계 없이 space에 정의한 옵션 적용

 

Audio Selectors: demuxing audio 설정

Caption Selectors: demuxing caption 설정

 

*output option 추가(HLS기준)

확인 중... 학습해야 할 설정 값이 너무 많음.

 

참고로 모니터링은 아래를 참고, 모든 AWS Media의 Resource들을 가시적으로 볼 수 있음. 열일하는 Elemental Team.

 

awslabs/aws-media-services-application-mapper

Media Services Application Mapper is a browser-based tool that allows operators to visualize the structure and logical connections among AWS Media Services and supporting services in the cloud. The...

github.com

 

프로파일 구성은 유튜브를 그냥 참고해서 해도 무난한 서비스는 가능할 듯?

 

라이브 인코더 설정, 비트 전송률, 해상도 선택 - YouTube 고객센터

도움이 되었나요? 어떻게 하면 개선할 수 있을까요? 예아니요

support.google.com

 

QVBR의 경우 해상도별 권장 프로파일

추가

1. Elemental 인코더 장비 - 비디오 프로파일 (To MediaLive)

- Insert Color Metadata (On이 기본) : 입력 색상이 보내는 화면에 맞춰서 출력에 적용되는 옵션 (Off를 권장)

- Aspect Ratio - MediaStore-> INITIALIZE_FROM / Package -> SPECIFIED

 

- FrameRate - XXX는 30 FPS 사용중 (29.97은 프레임이 빠질 수 있음), 30 FPS를 적용하는 걸로 결정

- BitRate - QVBR로 설정 (Elemental 인코더 장비 -> MediaLive로 8M, QVBR 퀄리티 레벨 : 7(권장))

- BufferSize (레이턴시가 증가되지만 끊기면 안되기에 설정해 줘야함 - 보통 BitRate 1배로 잡음, 4K는 1.5~2배)

- Reference Frame (P-Frame) : 3 으로 두었을때가 (QVBR 화질에서 제일 좋음), Progressive 방식 사용

 

- Profile (FHD는 High에 4.2로 지정, Auto가 권장되지만 최대 맥시멈이 4.2 - 명시적으로 보이기를 원함)

 

- Framerate Control - SPECIFIED, Numerator - 30, Denominator - 1

 

- GOP Size 1, Units SECONDS

 

- 1080P - Profile HIGH, 720P - MAIN

 

- Input Loss Action PAUSE_OUTPUT, Redundant Manifest ENABLED

 

 

- Slices 값을 (숫자의 값에 따라서 블록 사이즈 값을 달라짐, FHD는 4로, SD 밑에급은 1로 설정 권장)

- Density vs Quality : 리소스를 퍼포먼스에 투자할건지 (하이퀄리티로 갈수록 매크로 블록을 잘게잘게 쌓아서 화질을 높임, 0 : Default)

- DeInterlace Filter 활성화, Low Latency Mode (체크 해제), GOP Size - 1초 권장 (레이턴시, 비디오 화질 상승에 좋음)

- Audio 노멀라이즈 설정 (엘리멘탈 엔코더 앞단에 적용할지 뒷단인 MediaLive에 적용할 지)

- Elemental 인코더 장비 세션이 끊기는 이슈

: 현재 설정은 2초에 한번씩 10번 요청 (20초 시도) = 연결 안되면 15초 동안 세션 대기

: Restart Delay = 15에서 0으로 변경 시 수동으로 재시작 해야함

: Restart Delay 옵션으로 메모리가 증가된 이슈는 디지베이스 확인 필요

 

2. Elemental 인코더 장비 - 비디오 프로파일 (To Mediastore)

- MediaStore로 HLS 라이브 송출 시 퍼블릭 네트워크 구간에 대한 보장이 어려움 

- MediaLive -> MediaStore 구조의 경우 아마존 네트워크 구간 사용

- 2초 세그먼트, Seg to index 값 보통 10개를 권장 하지만 2 * 10 = 20초 (물론 동영상 서비스 성향에 따라 다르게)

  (3개 아니면 5개로 세그먼트를 줄이는 방안, 5초 세그먼트 1~2시간 테스트 시 문제는 없었음)

- CABAC 설정 (Main, High이면  CABAC 권장, 360p/480p Baseline이면 CAVLC )

 

AWS Media 서비스 가이드랩은 아래 문서를 참고.

MediaLabGuide_20180327.pdf
4.76MB
Segments TIP

 

Failover의 경우(Redundant)

Redundant

Input Loss Action에서 PAUSE_OUTPUT을 통해 Redundant가 가능하다.

 

Source Stream 1, 2가 있다고 가정할 때, PAUSE_OUTPUT 옵션을 활성화 시키면 Master Menifest에서 Sub Menifest 1, 2를 갖고 있다가 Stream 1이 끊겼을 때 Sub Menifest에서 1 스트림 Path를 삭제하고 Client에 전달한다.

위와 같은 방식으로 Soure Stream이 끊겨도 MediaLive는 Redundant를 보장한다.

만약 EMIT_OUTPUT으로 설정 했다면, Sub Menifest 1 스트림 Path를 삭제하지 않고 블랙화면으로 송출을 계속 한다.

따라서 Source Stream Failover를 고려한다면 PAUSE_OUTPUT 옵션을 활성화 하자.

 

추가로 여기서 MediaStore, MediaPackage 연동의 차이점이 발생되는데, 

MediaStore의 경우 단순히 MediaLive의 Stream Path 2개를 전달한다. 따라서 플레이어 특성에 따라 재요청 없이 Redundant가 동작하지 않을 경우가 발생하기도 한다. (사파리의 경우 바로 재생 가능)

 

MediaPackage의 경우 MediaLive Stream Path를 재가공하기 때문에 플레이어 특성 없이 Redundant 동작이 가능하다.

 

참고

 

AWS Elemental MediaLive는 최상위 매니페스트에서 중복 HLS 출력을 지원합니다.

AWS Elemental MediaLive는 브로드캐스트 수준의 라이브 비디오 처리 서비스입니다. 이를 사용해 인터넷이 연결된 디바이스로 브로드캐스트 및 스트리밍할 수 있는 고품질 비디오를 만들 수 있습니다. 자세히 알아보려면 aws.amazon.com/medialive로 이동하십시오. 이 서비스는 독립적으로 또는 클라우드 기반 워크플로의 기본을 형성하고 비디오 생성, 패키징 및 제공에 필요한 기능을 제공하는 서비스 제품군인 AWS Elemental 미디

aws.amazon.com

 

AWS Media 서비스 활용 low-latency 관련

 

Getting started with ultra-low latency using AWS Elemental Live – Part 2 | Amazon Web Services

The AWS Elemental Live encoder version 2.19.0 now supports chunk delivery to AWS Elemental MediaStore enabling a stable user experience of 3-4 seconds glass-to-glass latency using standard HLS/DASH packaged content and delivered through traditional CDNs. T

aws.amazon.com

 

'Media Services > MediaLive' 카테고리의 다른 글

AWS Elemental MediaConnect 소개  (0) 2020.11.03