AWS Elemental로 클라우드 비디오 처리 파이프라인 구성하기
이 글의 핵심
AWS Elemental 미디어 서비스는 방송급 스트리밍 인프라를 클라우드로 제공합니다. 이 가이드는 라이브 비디오 인코딩을 위한 MediaLive, 비디오 패키징과 오리진 서비스를 위한 MediaPackage, 서버 사이드 광고 삽입을 위한 MediaTailor, 그리고 완전한 비디오 워크플로우를 위한 MediaStore, MediaConnect, MediaConvert를 상세히 다룹니다.
AWS Elemental 미디어 서비스 소개
AWS Elemental 미디어 서비스는 2015년 Elemental Technologies 인수에서 탄생한 아마존의 전문가급 비디오 인프라를 나타냅니다. 이러한 서비스는 전 세계 주요 방송사, 스포츠 리그, 스트리밍 플랫폼 및 미디어 회사를 지원하며, 방송 품질로 수백만 개의 동시 스트림과 라이브 이벤트를 처리합니다.
AWS Elemental 포트폴리오
Elemental 제품군은 클라우드에서 엔드 투 엔드 비디오 처리를 제공합니다:
- AWS Elemental MediaLive — 실시간 라이브 비디오 인코딩 및 트랜스코딩
- AWS Elemental MediaPackage — 저스트 인 타임 비디오 패키징 및 오리진 서비스
- AWS Elemental MediaTailor — 서버 사이드 광고 삽입 및 개인화
- AWS Elemental MediaStore — 비디오에 최적화된 고성능 오리진 스토리지
- AWS Elemental MediaConnect — IP를 통한 안정적인 라이브 비디오 전송
- AWS Elemental MediaConvert — VOD를 위한 파일 기반 비디오 트랜스코딩
왜 AWS Elemental을 사용해야 하나요?
전통적인 방송 인프라에는 다음이 필요합니다:
- 고가의 하드웨어 인코더 (대당 $50K-$500K)
- 이중화 전원/냉각 시스템을 갖춘 온프레미스 데이터 센터 공간
- 방송 엔지니어링 전문 지식을 갖춘 전문 직원
- 피크 용량을 위한 과다 프로비저닝 (슈퍼볼, 선거)
- 긴 하드웨어 교체 주기
AWS Elemental은 이를 다음과 같이 전환합니다:
- 종량제 클라우드 리소스 (CapEx 없음)
- 온디맨드 글로벌 스케일 아웃 용량
- 99.9% SLA를 제공하는 관리형 서비스
- AWS 에코시스템과의 통합 (S3, CloudFront, Lambda)
- 신속한 기능 업데이트 및 코덱 지원
AWS Elemental MediaLive
핵심 개념
MediaLive는 실시간으로 라이브 비디오 스트림을 처리하는 방송급 라이브 비디오 인코딩 서비스입니다. 입력 소스(RTMP, RTP, HLS, MediaConnect)를 가져와서 적응형 비트레이트(ABR) 포맷으로 인코딩/트랜스코딩하고, MediaPackage, S3 또는 MediaStore와 같은 다운스트림 서비스로 출력합니다.
아키텍처 구성 요소
입력 타입
MediaLive는 여러 입력 프로토콜을 지원합니다:
RTMP Push — 라이브 인코더 및 카메라에 가장 일반적:
rtmp://a.b.c.d:1935/live/stream-key
인코더가 MediaLive로 푸시합니다. 기본/백업 이중화를 지원합니다.
RTP/RTSP — 전문 방송 장비용:
rtp://10.0.1.100:5000
일반적으로 관리형 전송을 위해 MediaConnect와 함께 사용됩니다.
HLS Pull — 기존 HLS 소스에서 수집:
https://example.com/live/stream.m3u8
MediaLive가 풀링하고 재인코딩합니다.
MediaConnect — 안전하고 안정적인 라이브 전송:
medialive://arn:aws:mediaconnect:us-west-2:123456789012:flow:...
FEC, ARQ 및 이중화가 필요한 전문 워크플로우에 선호됩니다.
MP4/TS 파일 — 라이브 입력으로 처리되는 VOD 파일:
s3://my-bucket/input.mp4
테스트 또는 24/7 반복 콘텐츠에 유용합니다.
입력 보안 그룹
CIDR 화이트리스트를 통해 RTMP/RTP 입력에 대한 액세스 제어:
{
"InputSecurityGroupId": "isg-1234567890abcdef0",
"WhitelistRules": [
{"Cidr": "203.0.113.0/24"},
{"Cidr": "198.51.100.42/32"}
]
}
이러한 IP만 입력으로 푸시할 수 있습니다. 무단 스트림 방지에 중요합니다.
채널
채널은 핵심 인코딩 파이프라인입니다:
Input → Input Attachment → Channel → Output Groups → Outputs → Destinations
채널 클래스:
- STANDARD — 이중 파이프라인 이중화, 자동 페일오버, 99.9% SLA
- SINGLE_PIPELINE — 단일 인코딩 파이프라인, 저비용 (~50% 저렴)
Standard 클래스는 다른 AZ에서 두 개의 동일한 파이프라인을 실행합니다. 파이프라인 0이 실패하면 파이프라인 1이 시청자 중단 없이 원활하게 인계받습니다.
출력 그룹
대상 유형별로 출력을 구성합니다:
HLS 출력 그룹 — HLS 매니페스트 및 세그먼트 생성:
{
"OutputGroupSettings": {
"HlsGroupSettings": {
"Destination": "s3://my-bucket/live/",
"ManifestDurationFormat": "FLOATING_POINT",
"SegmentLength": 6,
"ProgramDateTimePeriod": 600
}
}
}
MediaPackage 출력 그룹 — MediaPackage 채널로 전송:
{
"OutputGroupSettings": {
"MediaPackageGroupSettings": {
"Destination": "arn:aws:mediapackage:us-west-2:123456789012:channels/my-channel"
}
}
}
Archive 출력 그룹 — 전체 해상도 아카이브를 S3에 기록:
{
"OutputGroupSettings": {
"ArchiveGroupSettings": {
"Destination": "s3://my-archive-bucket/",
"RolloverInterval": 3600
}
}
}
Frame Capture 출력 그룹 — 썸네일 이미지 추출:
{
"OutputGroupSettings": {
"FrameCaptureGroupSettings": {
"Destination": "s3://my-thumbnails/",
"FrameCaptureInterval": 30
}
}
}
출력 및 인코딩 프로필
각 출력 그룹은 여러 출력(비트레이트 래더)을 포함합니다:
{
"Outputs": [
{
"OutputName": "1080p",
"VideoDescriptionName": "video_1080p30",
"AudioDescriptionNames": ["audio_aac_128k"],
"OutputSettings": {
"HlsOutputSettings": {
"NameModifier": "_1080p",
"HlsSettings": {"StandardHlsSettings": {"M3u8Settings": {...}}}
}
}
},
{
"OutputName": "720p",
"VideoDescriptionName": "video_720p30",
"AudioDescriptionNames": ["audio_aac_128k"],
"OutputSettings": {
"HlsOutputSettings": {
"NameModifier": "_720p",
"HlsSettings": {"StandardHlsSettings": {"M3u8Settings": {...}}}
}
}
},
{
"OutputName": "480p",
"VideoDescriptionName": "video_480p30",
"AudioDescriptionNames": ["audio_aac_96k"],
"OutputSettings": {
"HlsOutputSettings": {
"NameModifier": "_480p",
"HlsSettings": {"StandardHlsSettings": {"M3u8Settings": {...}}}
}
}
}
]
}
비디오 인코딩 설정
H.264/AVC — 가장 널리 지원됨:
{
"VideoDescriptions": [
{
"Name": "video_1080p30",
"CodecSettings": {
"H264Settings": {
"Profile": "HIGH",
"Level": "H264_LEVEL_4_1",
"RateControlMode": "CBR",
"Bitrate": 5000000,
"FramerateControl": "SPECIFIED",
"FramerateNumerator": 30,
"FramerateDenominator": 1,
"GopSize": 2.0,
"GopSizeUnits": "SECONDS",
"SceneChangeDetect": "ENABLED",
"LookAheadRateControl": "MEDIUM",
"AdaptiveQuantization": "HIGH"
}
},
"Width": 1920,
"Height": 1080,
"ScalingBehavior": "DEFAULT"
}
]
}
H.265/HEVC — 40-50% 더 나은 압축, 채택 증가:
{
"CodecSettings": {
"H265Settings": {
"Profile": "MAIN",
"Tier": "MAIN",
"Level": "H265_LEVEL_4_1",
"RateControlMode": "CBR",
"Bitrate": 3000000,
"FramerateNumerator": 30,
"FramerateDenominator": 1,
"GopSize": 2.0,
"LookAheadRateControl": "MEDIUM",
"AdaptiveQuantization": "HIGH"
}
}
}
레이트 컨트롤 모드:
- CBR (Constant Bitrate) — 예측 가능한 대역폭, 라이브 스트리밍에 선호
- VBR (Variable Bitrate) — 더 나은 품질, 덜 예측 가능, VOD에 적합
- QVBR (Quality-defined VBR) — 목표 비트레이트에서 지각 품질 최적화
GOP (Group of Pictures) 구조:
{
"GopSize": 2.0,
"GopSizeUnits": "SECONDS",
"GopClosedCadence": 1,
"GopBReference": "ENABLED"
}
- GopSize — 키프레임 간격 (2s = 2초마다 키프레임)
- Closed GOP — 모든 GOP가 IDR 프레임으로 시작 (더 나은 시킹, 광고 삽입)
- B-frames — 양방향 예측 프레임 (더 나은 압축, 약간의 지연)
오디오 인코딩 설정
AAC — 표준 오디오 코덱:
{
"AudioDescriptions": [
{
"Name": "audio_aac_128k",
"CodecSettings": {
"AacSettings": {
"Bitrate": 128000,
"CodingMode": "CODING_MODE_2_0",
"SampleRate": 48000,
"RawFormat": "NONE",
"Profile": "LC"
}
},
"AudioSelectorName": "default"
}
]
}
AC-3/EAC-3 (Dolby Digital) — 서라운드 사운드:
{
"CodecSettings": {
"Eac3Settings": {
"Bitrate": 384000,
"CodingMode": "CODING_MODE_3_2",
"LfeControl": "LFE",
"DcFilter": "ENABLED",
"SurroundMode": "ENABLED"
}
}
}
고급 기능
자동 입력 페일오버
이중 입력이 있는 STANDARD 채널의 경우:
{
"InputAttachments": [
{
"InputId": "input-primary-1234567890abc",
"InputSettings": {
"SourceEndBehavior": "CONTINUE",
"InputFilter": "AUTO"
},
"AutomaticInputFailoverSettings": {
"SecondaryInputId": "input-backup-9876543210xyz",
"ErrorClearTimeMsec": 60000,
"FailoverConditions": [
{"FailoverConditionSettings": {"InputLossSettings": {"InputLossThresholdMsec": 3000}}}
]
}
}
]
}
기본 입력이 3초 동안 끊어지면 MediaLive가 백업으로 전환합니다. 기본이 복구되어 60초 동안 안정적으로 유지되면 페일백이 발생합니다.
SCTE-35 광고 마커 처리
스트림에 광고 브레이크 마커 삽입:
{
"AvailBlanking": {
"State": "ENABLED",
"AvailBlankingImage": "s3://my-bucket/slate.png"
},
"Scte35Control": "PASSTHROUGH"
}
모드:
- PASSTHROUGH — SCTE-35 마커를 변경하지 않고 전달 (MediaTailor용)
- NONE — 마커 제거
- SPLICE_INSERT — splice_insert 마커 생성
오디오 정규화
일관된 음량 유지:
{
"AudioNormalizationSettings": {
"Algorithm": "ITU_1770_2",
"TargetLkfs": -23.0
}
}
ITU-R BS.1770은 국제 음량 표준입니다. 방송의 경우 -23 LKFS, 스트리밍 플랫폼의 경우 -14 LUFS를 목표로 합니다.
비디오 전처리
디인터레이싱:
{
"DeinterlaceMode": "ADAPTIVE",
"DeinterlaceAlgorithm": "INTERPOLATE"
}
노이즈 감소:
{
"FilterSettings": {
"TemporalFilterSettings": {
"PostFilterSharpening": "AUTO",
"Strength": "STRENGTH_8"
}
}
}
임베디드 자막/서브타이틀
자막 추출 및 전달:
{
"CaptionDescriptions": [
{
"CaptionSelectorName": "caption-selector-1",
"Name": "caption_608",
"DestinationSettings": {
"EmbeddedDestinationSettings": {}
}
}
]
}
WebVTT 사이드카:
{
"DestinationSettings": {
"WebvttDestinationSettings": {}
}
}
비디오 세그먼트와 함께 .vtt 파일을 생성합니다.
스케줄링 및 자동화
스케줄 액션
시간 경과에 따른 채널 동작 제어:
입력 시작/중지:
aws medialive create-schedule-action \
--channel-id 1234567 \
--action-name "start-feed-0800" \
--schedule-action-start-settings FixedModeScheduleActionStartSettings={Time="2026-05-14T08:00:00Z"} \
--schedule-action-settings InputSwitchSettings={InputAttachmentNameReference="main-feed"}
정적 이미지 삽입 (슬레이트):
aws medialive create-schedule-action \
--channel-id 1234567 \
--action-name "show-slate" \
--schedule-action-start-settings FixedModeScheduleActionStartSettings={Time="2026-05-14T12:00:00Z"} \
--schedule-action-settings StaticImageActivateSettings={Image={Uri="s3://my-bucket/slate.png"}}
SCTE-35 Splice Insert:
aws medialive create-schedule-action \
--channel-id 1234567 \
--action-name "ad-break-1" \
--schedule-action-start-settings FixedModeScheduleActionStartSettings={Time="2026-05-14T15:30:00Z"} \
--schedule-action-settings Scte35SpliceInsertSettings={Duration=90000}
지속 시간은 90kHz 틱으로 표시됩니다 (90000 = 1초).
EventBridge 통합
채널 상태 변경 시 Lambda 함수 트리거:
{
"source": ["aws.medialive"],
"detail-type": ["MediaLive Channel State Change"],
"detail": {
"channel_arn": ["arn:aws:medialive:us-west-2:123456789012:channel:1234567"],
"state": ["RUNNING", "IDLE", "STARTING", "STOPPING"]
}
}
모니터링 및 문제 해결
CloudWatch 메트릭
모니터링할 주요 메트릭:
입력 비디오:
InputVideoFrameRate— 소스 프레임 레이트InputTimecodesPresent— 입력에 타임코드가 있는지 여부
파이프라인 상태:
Pipeline0Active/Pipeline1Active— 파이프라인 상태ActiveAlerts— 활성 알림 수
출력 상태:
OutputVideoFrameRate— 인코딩된 출력 프레임 레이트NetworkIn/NetworkOut— 네트워크 처리량Svq(Statistical Video Quality) — 비디오 품질 점수 (0-100)
드롭된 프레임:
DroppedFrames— 과부하로 인해 드롭된 프레임FillerMsec— 검은 프레임으로 채워진 시간 (입력 손실)
알림
CloudWatch 알람 구성:
aws cloudwatch put-metric-alarm \
--alarm-name medialive-pipeline-failure \
--comparison-operator LessThanThreshold \
--evaluation-periods 1 \
--metric-name Pipeline0Active \
--namespace AWS/MediaLive \
--period 60 \
--statistic Average \
--threshold 1 \
--dimensions Name=ChannelId,Value=1234567 \
--alarm-actions arn:aws:sns:us-west-2:123456789012:ops-alerts
로그
MediaLive는 CloudWatch Logs로 로그를 푸시합니다:
/aws/medialive/{channel-id}
로그 이벤트에는 다음이 포함됩니다:
- 입력 연결 상태
- 인코딩 오류
- 페일오버 이벤트
- 스케줄 액션 실행
AWS Elemental MediaPackage
개요
MediaPackage는 적응형 스트리밍을 위한 확장성이 뛰어난 오리진 역할을 하는 저스트 인 타임 비디오 패키징 서비스입니다. MediaLive에서 인코딩된 콘텐츠를 수집하고, 동적으로 스트리밍 포맷(HLS, DASH, CMAF)으로 패키징하며, CDN에 매니페스트와 세그먼트를 제공합니다.
핵심 개념
채널
채널은 수집 지점입니다:
aws mediapackage create-channel \
--id my-live-channel \
--description "Live sports channel"
응답에는 두 개의 이중화 수집 엔드포인트가 포함됩니다:
{
"Id": "my-live-channel",
"HlsIngest": {
"IngestEndpoints": [
{
"Id": "endpoint1",
"Url": "https://abcdef.mediapackage.us-west-2.amazonaws.com/in/v2/my-live-channel/channel",
"Username": "user-e8d9f7c6",
"Password": "pass-a1b2c3d4"
},
{
"Id": "endpoint2",
"Url": "https://ghijkl.mediapackage.us-west-2.amazonaws.com/in/v2/my-live-channel/channel",
"Username": "user-5f4e3d2c",
"Password": "pass-9z8y7x6w"
}
]
}
}
MediaLive는 이중화를 위해 두 엔드포인트 모두에 HLS 세그먼트를 전송합니다.
오리진 엔드포인트
오리진 엔드포인트는 콘텐츠가 패키징되고 전달되는 방식을 정의합니다:
HLS 엔드포인트:
aws mediapackage create-origin-endpoint \
--channel-id my-live-channel \
--id hls-endpoint \
--manifest-name index \
--hls-package '{
"SegmentDurationSeconds": 6,
"PlaylistWindowSeconds": 60,
"ProgramDateTimeIntervalSeconds": 60,
"AdMarkers": "PASSTHROUGH",
"IncludeIframeOnlyStream": true
}'
다음 위치에서 HLS 출력을 생성합니다:
https://abcdef.mediapackage.us-west-2.amazonaws.com/out/v1/xyz123/index.m3u8
DASH 엔드포인트:
aws mediapackage create-origin-endpoint \
--channel-id my-live-channel \
--id dash-endpoint \
--manifest-name manifest \
--dash-package '{
"SegmentDurationSeconds": 6,
"ManifestWindowSeconds": 60,
"Profile": "NONE",
"AdMarkers": "PASSTHROUGH"
}'
다음 위치에서 DASH 출력을 생성합니다:
https://abcdef.mediapackage.us-west-2.amazonaws.com/out/v1/abc456/manifest.mpd
CMAF 엔드포인트:
aws mediapackage create-origin-endpoint \
--channel-id my-live-channel \
--id cmaf-endpoint \
--cmaf-package '{
"SegmentDurationSeconds": 6,
"HlsManifests": [
{"Id": "hls", "ManifestName": "index"}
],
"DashManifests": [
{"Id": "dash", "ManifestName": "manifest"}
]
}'
CMAF(Common Media Application Format)는 HLS와 DASH 모두에서 사용 가능한 통합 세그먼트를 생성합니다.
고급 기능
타임시프트 시청 (Catch-Up TV)
Startover 윈도우:
{
"StartoverWindowSeconds": 3600
}
시청자가 최대 1시간 전부터 라이브 스트림을 다시 시작할 수 있습니다.
시간 지연:
{
"TimeDelaySeconds": 30
}
라이브 엣지를 30초 지연시킵니다 (검열, 스포일러 방지에 유용).
DVR (Network PVR)
DVR을 위한 매니페스트 윈도우 구성:
{
"PlaylistWindowSeconds": 86400
}
24시간 DVR 윈도우. 시청자는 라이브 스트림에서 최대 24시간 뒤로 탐색할 수 있습니다.
콘텐츠 보호 (DRM)
암호화:
{
"Encryption": {
"SpekeKeyProvider": {
"SystemIds": [
"9a04f079-9840-4286-ab92-e65be0885f95",
"edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"
],
"Url": "https://drm-provider.example.com/speke/v2",
"ResourceId": "my-live-channel"
}
}
}
시스템 ID:
9a04f079-9840-4286-ab92-e65be0885f95— PlayReadyedef8ba9-79d6-4ace-a3c8-27dcd51d21ed— Widevine94ce86fb-07ff-4f43-adb8-93d2fa968ca2— FairPlay
MediaPackage는 AWS Elemental MediaConvert SPEKE Proxy, BuyDRM KeyOS, Irdeto, EZDRM과 같은 SPEKE(Secure Packager and Encoder Key Exchange) 제공자와 통합됩니다.
AES-128 (간단한 암호화):
{
"Encryption": {
"EncryptionMethod": "AES_128",
"KeyRotationIntervalSeconds": 600,
"ConstantInitializationVector": "0x12345678901234567890123456789012"
}
}
DRM은 아니지만 세그먼트를 암호화합니다. 키는 매니페스트를 통해 배포됩니다.
매니페스트 필터링
스트림 선택:
{
"StreamSelection": {
"MinVideoBitsPerSecond": 500000,
"MaxVideoBitsPerSecond": 5000000,
"StreamOrder": "ORIGINAL"
}
}
비트레이트 래더를 필터링합니다. 디바이스별 엔드포인트에 유용합니다 (예: 모바일 전용 엔드포인트는 4K 제외).
광고 마커 시그널링
SCTE-35 Enhanced:
{
"AdMarkers": "SCTE35_ENHANCED"
}
HLS 매니페스트에 SCTE-35 데이터가 있는 #EXT-X-DATERANGE 태그를 삽입합니다.
PASSTHROUGH:
{
"AdMarkers": "PASSTHROUGH"
}
SCTE-35 마커를 변경하지 않고 전달합니다.
Harvest 작업
시간 범위를 VOD 자산으로 내보내기:
aws mediapackage create-harvest-job \
--origin-endpoint-id hls-endpoint \
--s3-destination BucketName=my-vod-bucket,ManifestKey=highlights/game1/index.m3u8,RoleArn=arn:aws:iam::123456789012:role/MediaPackageHarvest \
--start-time 2026-05-14T19:00:00Z \
--end-time 2026-05-14T21:00:00Z
2시간의 라이브 스트림을 S3에 VOD HLS로 추출합니다. 하이라이트, 리플레이 또는 아카이빙에 유용합니다.
VOD 자산
MediaPackage는 VOD 콘텐츠도 패키징할 수 있습니다:
aws mediapackage-vod create-asset \
--id my-vod-asset \
--source-arn arn:aws:s3:::my-bucket/videos/movie.mp4 \
--source-role-arn arn:aws:iam::123456789012:role/MediaPackageVOD \
--packaging-group-id my-packaging-group
패키징 구성:
aws mediapackage-vod create-packaging-configuration \
--id hls-vod-config \
--packaging-group-id my-packaging-group \
--hls-package '{
"SegmentDurationSeconds": 6,
"IncludeIframeOnlyStream": true
}'
소스 파일에서 HLS VOD 매니페스트를 생성합니다.
모니터링
CloudWatch 메트릭
인그레스:
IngressBytes— MediaLive에서 받은 데이터IngressResponseTime— 수집 요청 지연
이그레스:
EgressBytes— CDN/시청자에게 제공된 데이터EgressResponseTime— 오리진 응답 지연EgressRequestCount— 매니페스트 및 세그먼트 요청4xxErrorCount/5xxErrorCount— 오류율
DRM:
KeyProviderResponseTime— SPEKE 키 제공자 지연
알람
aws cloudwatch put-metric-alarm \
--alarm-name mediapackage-ingress-failure \
--comparison-operator GreaterThanThreshold \
--evaluation-periods 2 \
--metric-name 4xxErrorCount \
--namespace AWS/MediaPackage \
--period 60 \
--statistic Sum \
--threshold 10 \
--dimensions Name=Channel,Value=my-live-channel
AWS Elemental MediaTailor
개요
MediaTailor는 서버 사이드 광고 삽입(SSAI) 및 콘텐츠 개인화 서비스입니다. 서버 측에서 광고를 비디오 스트림에 스티칭하여, 플레이어(및 광고 차단기)가 광고를 구별할 수 없는 매끄러운 시청 경험을 만듭니다.
왜 서버 사이드 광고 삽입인가?
클라이언트 사이드 광고 삽입(CSAI):
플레이어가 매니페스트 요청 → 매니페스트에 광고 마커 포함 → 플레이어가 광고 서버 호출 → 광고 서버가 광고 URL 반환 → 플레이어가 광고 매니페스트 요청 → 플레이어가 스트림 전환
문제점:
- 광고 차단기가 광고 URL을 쉽게 감지하고 차단
- 스트림 전환으로 버퍼링 발생
- 광고와 콘텐츠에 대한 다른 DRM/패키징
- 복잡한 플레이어 로직
서버 사이드 광고 삽입(SSAI):
플레이어가 매니페스트 요청 → MediaTailor 가로채기 → MediaTailor가 광고 서버 호출 → MediaTailor가 광고 세그먼트를 매니페스트에 스티칭 → 플레이어가 세그먼트 요청 → 플레이어는 광고 존재 모름
이점:
- 광고가 같은 오리진에서 제공됨 (차단하기 어려움)
- 매끄러운 재생 (버퍼링 없음)
- 통합 DRM/패키징
- 더 간단한 플레이어
- 더 나은 광고 시청률 및 완료율
핵심 개념
구성
구성은 통합을 정의합니다:
aws mediatailor put-playback-configuration \
--name my-live-channel \
--video-content-source-url https://abcdef.mediapackage.us-west-2.amazonaws.com/out/v1/xyz123/index.m3u8 \
--ad-decision-server-url https://ad-server.example.com/vast?user=[session.user_id]&device=[player_params.device] \
--cdn-configuration '{
"AdSegmentUrlPrefix": "https://cdn.example.com/ads/",
"ContentSegmentUrlPrefix": "https://cdn.example.com/content/"
}' \
--slate-ad-url https://cdn.example.com/slate.mp4
MediaTailor 재생 URL:
https://abcdef.mediatailor.us-west-2.amazonaws.com/v1/master/xyz123/my-live-channel/index.m3u8
시청자는 직접 MediaPackage URL 대신 이 URL을 요청합니다.
세션 초기화
시청자가 매니페스트를 요청하면 MediaTailor는:
- 쿼리 매개변수와 함께 광고 결정 서버(ADS)를 호출
- 광고 크리에이티브가 있는 VAST/VMAP 응답 수신
- 광고 메타데이터 캐싱
- 광고 세그먼트를 포함하도록 매니페스트 재작성
- 개인화된 매니페스트를 플레이어에 반환
광고 결정 서버 URL:
https://ad-server.example.com/vast?user=[session.user_id]&ip=[session.client_ip]&ua=[player_params.user_agent]&geo=[session.geo_country]
MediaTailor는 변수를 실제 세션 데이터로 대체합니다.
VAST/VMAP 통합
VAST (Video Ad Serving Template):
<VAST version="4.2">
<Ad id="ad1">
<InLine>
<AdTitle>Amazing Product</AdTitle>
<Duration>00:00:30</Duration>
<MediaFiles>
<MediaFile delivery="progressive" type="video/mp4" width="1920" height="1080">
https://ad-cdn.example.com/ad123.mp4
</MediaFile>
</MediaFiles>
<TrackingEvents>
<Tracking event="start">https://ad-server.example.com/track/start?ad=ad1</Tracking>
<Tracking event="firstQuartile">https://ad-server.example.com/track/q1?ad=ad1</Tracking>
<Tracking event="midpoint">https://ad-server.example.com/track/mid?ad=ad1</Tracking>
<Tracking event="complete">https://ad-server.example.com/track/complete?ad=ad1</Tracking>
</TrackingEvents>
</InLine>
</Ad>
</VAST>
VMAP (Video Multiple Ad Playlist):
<vmap:VMAP version="1.0">
<vmap:AdBreak timeOffset="start" breakType="linear" breakId="preroll">
<vmap:AdSource id="preroll-ad">
<vmap:VASTAdData>
<VAST>...</VAST>
</vmap:VASTAdData>
</vmap:AdSource>
</vmap:AdBreak>
<vmap:AdBreak timeOffset="00:05:00" breakType="linear" breakId="midroll-1">
<vmap:AdSource id="midroll-ad-1">
<vmap:VASTAdData>
<VAST>...</VAST>
</vmap:VASTAdData>
</vmap:AdSource>
</vmap:AdBreak>
</vmap:VMAP>
VMAP는 VOD 콘텐츠에서 여러 광고 브레이크를 정의합니다.
매니페스트 조작
HLS 매니페스트 개인화
원래 MediaPackage 매니페스트:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:1000
#EXTINF:6.0,
segment1000.ts
#EXTINF:6.0,
segment1001.ts
#EXT-X-DATERANGE:ID="splice-1",START-DATE="2026-05-14T20:00:00.000Z",DURATION=90,SCTE35-OUT=0xFC302F00
#EXTINF:6.0,
segment1002.ts
MediaTailor 개인화된 매니페스트:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:1000
#EXTINF:6.0,
https://cdn.example.com/content/segment1000.ts?aws.sessionId=xyz
#EXTINF:6.0,
https://cdn.example.com/content/segment1001.ts?aws.sessionId=xyz
#EXT-X-DISCONTINUITY
#EXTINF:6.0,
https://cdn.example.com/ads/ad-seg1.ts?aws.sessionId=xyz
#EXTINF:6.0,
https://cdn.example.com/ads/ad-seg2.ts?aws.sessionId=xyz
#EXTINF:6.0,
https://cdn.example.com/ads/ad-seg3.ts?aws.sessionId=xyz
#EXT-X-DISCONTINUITY
#EXTINF:6.0,
https://cdn.example.com/content/segment1002.ts?aws.sessionId=xyz
MediaTailor는:
- SCTE-35 마커 감지 (90초 광고 브레이크)
- 광고 서버 호출, 3x 6초 광고 세그먼트 수신
- 인코딩 변경을 알리기 위해
#EXT-X-DISCONTINUITY태그 삽입 - CDN URL로 세그먼트에 접두사 추가
- 추적을 위한 세션 ID 추가
광고 트랜스코딩
광고 크리에이티브가 콘텐츠 인코딩과 일치하지 않는 경우:
광고 트랜스코드 프로필:
{
"AdTranscoding": {
"HlsAdTranscoding": {
"MaxDurationInSeconds": 60,
"SegmentDurationSeconds": 6
}
}
}
MediaTailor는 콘텐츠 비트레이트 및 포맷과 일치하도록 광고를 즉석에서 트랜스코딩합니다. 트랜스코딩된 광고는 재사용을 위해 캐싱됩니다.
추적 및 비콘
서버 사이드 비콘 발사
MediaTailor는 플레이어를 대신하여 추적 비콘을 발사합니다:
비콘 프록시:
{
"AvailSuppression": {
"Mode": "OFF"
},
"Bumper": {
"StartUrl": "https://cdn.example.com/bumper-start.mp4",
"EndUrl": "https://cdn.example.com/bumper-end.mp4"
}
}
시청자가 광고 세그먼트를 시청하면 MediaTailor는:
- CDN 로그에서 세그먼트 요청 감지 (통합된 경우)
- VAST 추적 URL 발사 (
start,firstQuartile,midpoint,complete) - 광고 네트워크에 노출 비콘 전송
클라이언트 사이드 보고 API:
더 나은 정확도를 위해 플레이어가 보고할 수 있습니다:
POST https://abcdef.mediatailor.us-west-2.amazonaws.com/v1/tracking/xyz123/event
{
"sessionId": "xyz-session-123",
"event": "impression",
"adBreakId": "midroll-1",
"adId": "ad123"
}
개인화
동적 구성 변수
플레이어 매개변수:
https://abcdef.mediatailor.us-west-2.amazonaws.com/v1/master/xyz123/my-live-channel/index.m3u8?user_id=12345&device=mobile&subscription=premium
광고 서버로 전달:
https://ad-server.example.com/vast?user=12345&device=mobile&sub=premium
광고 서버는 사용자 프로필을 기반으로 타겟 광고를 반환합니다.
Avail 억제
프리미엄 구독자를 위한 광고 억제:
{
"AvailSuppression": {
"Mode": "BEHIND_LIVE_EDGE",
"Value": "00:00:05"
}
}
라이브 엣지 5초 이내의 광고 브레이크를 억제합니다 (지연 감소).
VOD 광고 삽입
VOD 구성:
aws mediatailor put-playback-configuration \
--name my-vod-asset \
--video-content-source-url https://cdn.example.com/vod/movie.m3u8 \
--ad-decision-server-url https://ad-server.example.com/vmap \
--personalization-threshold-seconds 1
MediaTailor는:
- VOD 세션당 한 번 광고 서버 호출
- 광고 브레이크 타이밍이 있는 VMAP 수신
- 지정된 오프셋에 광고 삽입
- 세션당 VOD 매니페스트 캐싱 (1초 개인화 윈도우 = 적극적인 캐싱)
채널 어셈블리
선형 채널 어셈블리:
광고 삽입과 함께 VOD 콘텐츠에서 24/7 선형 채널 생성:
aws mediatailor create-channel \
--channel-name my-linear-channel \
--outputs '[{"ManifestName": "index", "SourceGroup": "default"}]' \
--playback-mode LOOP
소스 위치:
aws mediatailor create-source-location \
--source-location-name my-vod-library \
--http-configuration-base-url https://cdn.example.com/vod/
프로그램:
aws mediatailor create-program \
--channel-name my-linear-channel \
--program-name program-1 \
--source-location-name my-vod-library \
--vod-source-name movie1 \
--schedule-configuration StartTime=2026-05-14T00:00:00Z,DurationSeconds=7200
광고 브레이크와 함께 VOD 자산을 반복 재생하는 예약된 선형 채널을 생성합니다.
모니터링
CloudWatch 메트릭
광고 전달:
AdDecisionServer.Errors— ADS 실패AdDecisionServer.Duration— ADS 응답 시간Avail.Duration— 총 광고 브레이크 지속 시간Avail.FillRate— 채워진 광고 슬롯 비율
재생:
GetManifest.Requests— 매니페스트 요청GetManifest.Errors— 매니페스트 오류Origin.Errors— 콘텐츠 오리진 실패
추적:
Beacon.Requests— 추적 비콘 발사Beacon.Errors— 실패한 비콘
AWS Elemental MediaStore
개요
MediaStore는 미디어 워크로드에 최적화된 고성능, 저지연 객체 스토리지 서비스입니다. 라이브 및 VOD 비디오의 오리진 역할을 하며, 일관된 10ms 미만의 PUT 지연과 수평적 확장성을 제공합니다.
MediaStore와 S3를 언제 사용해야 하나요?
MediaStore 사용 경우:
- 라이브 스트리밍 오리진 (낮은 쓰기 지연)
- 청크 전송 인코딩 (인코딩 중 HLS 세그먼트 업로드)
- 빈번한 소형 객체 쓰기
- 일관된 저지연 읽기 (CDN용 오리진)
S3 사용 경우:
- VOD 아카이브 (대용량 파일, 드문 액세스)
- 비용 최적화 스토리지 (S3가 더 저렴)
- 광범위한 AWS 서비스와의 통합 (Lambda, Athena)
- 장기 보존
컨테이너 구성
aws mediastore create-container \
--container-name live-origin
CORS 정책:
aws mediastore put-cors-policy \
--container-name live-origin \
--cors-policy '[
{
"AllowedOrigins": ["*"],
"AllowedMethods": ["GET", "HEAD"],
"AllowedHeaders": ["*"],
"MaxAgeSeconds": 3000
}
]'
컨테이너 정책:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": ["mediastore:GetObject"],
"Resource": "arn:aws:mediastore:us-west-2:123456789012:container/live-origin/*",
"Condition": {
"StringEquals": {
"aws:UserAgent": "Amazon CloudFront"
}
}
}
]
}
CloudFront로만 액세스를 제한합니다.
MediaLive 통합
MediaLive HLS 출력을 MediaStore로:
{
"OutputGroupSettings": {
"HlsGroupSettings": {
"Destination": "mediastoressl://abcdef.data.mediastore.us-west-2.amazonaws.com/live/stream"
}
}
}
MediaLive는 인증된 저지연 쓰기를 위해 mediastoressl:// 프로토콜을 사용합니다.
청크 전송 인코딩
MediaStore는 HTTP 청크 전송을 지원합니다:
PUT /live/stream/segment1000.ts HTTP/1.1
Host: abcdef.data.mediastore.us-west-2.amazonaws.com
Transfer-Encoding: chunked
6\r\n
chunk1\r\n
8\r\n
chunk2ab\r\n
0\r\n
\r\n
인코더는 인코딩 완료 전에 세그먼트 업로드를 시작할 수 있어 glass-to-glass 지연을 줄입니다.
모니터링
CloudWatch 메트릭
PutRequests— 쓰기 작업GetRequests— 읽기 작업DeleteRequests— 삭제 작업ListRequests— 목록 작업4xxErrorCount/5xxErrorCount— 오류율TotalRequestLatency— 요청 지연
AWS Elemental MediaConnect
개요
MediaConnect는 기여 및 배포를 위한 안정적이고 안전한 라이브 비디오 전송 서비스입니다. 위성 및 광섬유 링크를 AWS 글로벌 네트워크를 통한 IP 기반 전송으로 대체합니다.
사용 사례
기여:
- 원격 제작 (경기장에서 방송 센터로 라이브 피드 전송)
- 클라우드 편집을 위한 다중 카메라 피드
- 재해 복구 (백업 기여 경로)
배포:
- 지역 데이터 센터로 콘텐츠 배포
- 제휴사 배포 (파트너 방송국으로 피드 전송)
- MediaLive 입력 이중화
핵심 개념
플로우
플로우는 라이브 비디오 전송 연결입니다:
aws mediaconnect create-flow \
--name remote-camera-feed \
--source Name=Camera-1,Protocol=zixi-push,WhitelistCidr=203.0.113.0/24 \
--vpc-interfaces Name=vpc-interface-1,NetworkInterfaceType=efa,SubnetId=subnet-12345
프로토콜:
- Zixi — FEC, ARQ, 본딩을 갖춘 UDP 기반 (전문 방송)
- RIST — Reliable Internet Stream Transport (개방형 표준)
- RTP/RTP-FEC — Forward Error Correction을 갖춘 Real-time Protocol
- SRT — Secure Reliable Transport (오픈 소스, 채택 증가)
- CDI — Cloud Digital Interface (비압축, 초저지연)
소스
푸시 소스 (카메라가 MediaConnect로 푸시):
aws mediaconnect update-flow-source \
--flow-arn arn:aws:mediaconnect:us-west-2:123456789012:flow:abc123 \
--source-arn arn:aws:mediaconnect:us-west-2:123456789012:source:src-xyz \
--ingest-port 5000 \
--whitelist-cidr 203.0.113.42/32
수집 URL:
zixi-push://abcdef.mediaconnect.us-west-2.amazonaws.com:5000
풀 소스 (MediaConnect가 인코더에서 풀링):
aws mediaconnect create-flow \
--source Name=Encoder,Protocol=rtp,IngestIp=203.0.113.42,IngestPort=5000
출력
MediaLive 출력:
aws mediaconnect add-flow-outputs \
--flow-arn arn:aws:mediaconnect:us-west-2:123456789012:flow:abc123 \
--outputs Protocol=rtp,Destination=10.0.1.100,Port=5000,Name=To-MediaLive
MediaLive 입력은 MediaConnect 플로우를 참조합니다:
{
"InputSettings": {
"SourceEndBehavior": "CONTINUE",
"MediaConnectFlows": [
{"FlowArn": "arn:aws:mediaconnect:us-west-2:123456789012:flow:abc123"}
]
}
}
Entitlements (파트너에게 배포):
aws mediaconnect grant-flow-entitlements \
--flow-arn arn:aws:mediaconnect:us-west-2:123456789012:flow:abc123 \
--entitlements Name=Partner-A,Subscribers=123456789012,Encryption={"Algorithm":"aes128","RoleArn":"arn:aws:iam::123456789012:role/MediaConnect"}
파트너가 entitlement를 사용하여 자신의 계정에서 출력을 생성합니다.
이중화
이중 소스 이중화:
aws mediaconnect update-flow \
--flow-arn arn:aws:mediaconnect:us-west-2:123456789012:flow:abc123 \
--source-failover-config State=ENABLED,FailoverMode=MERGE,SourcePriority={"PrimarySource":"source-1"}
페일오버 모드:
- MERGE — 두 소스의 패킷 결합 (무중단 페일오버)
- FAILOVER — 기본 손실 시 보조로 전환
모니터링
CloudWatch 메트릭
SourceBitRate— 인바운드 비트레이트SourcePacketLossPercent— 소스의 패킷 손실ARQRecoveredPackets— ARQ를 통해 복구된 패킷FECRecoveredPackets— FEC를 통해 복구된 패킷OutputConnected— 출력 연결 상태
AWS Elemental MediaConvert
개요
MediaConvert는 VOD 콘텐츠를 위한 파일 기반 비디오 트랜스코딩 서비스입니다. 전문 방송 기능을 갖춘 적응형 비트레이트 포맷으로 소스 파일(MP4, MOV, MXF 등)을 변환합니다.
작업 제출
aws mediaconvert create-job \
--role arn:aws:iam::123456789012:role/MediaConvertRole \
--settings file://job-settings.json
job-settings.json:
{
"Inputs": [
{
"FileInput": "s3://my-source-bucket/input-video.mp4",
"TimecodeSource": "ZEROBASED",
"VideoSelector": {},
"AudioSelectors": {
"Audio Selector 1": {"DefaultSelection": "DEFAULT"}
}
}
],
"OutputGroups": [
{
"Name": "HLS ABR",
"OutputGroupSettings": {
"Type": "HLS_GROUP_SETTINGS",
"HlsGroupSettings": {
"Destination": "s3://my-output-bucket/hls/",
"SegmentLength": 6,
"MinSegmentLength": 0,
"ManifestDurationFormat": "FLOATING_POINT",
"SegmentControl": "SEGMENTED_FILES"
}
},
"Outputs": [
{
"NameModifier": "_1080p",
"VideoDescription": {
"CodecSettings": {
"Codec": "H_264",
"H264Settings": {
"RateControlMode": "QVBR",
"QvbrSettings": {"QvbrQualityLevel": 8},
"Bitrate": 5000000
}
},
"Width": 1920,
"Height": 1080
},
"AudioDescriptions": [
{
"CodecSettings": {
"Codec": "AAC",
"AacSettings": {"Bitrate": 128000, "SampleRate": 48000}
}
}
]
}
]
}
]
}
고급 기능
자동 ABR
QVBR (Quality-defined VBR):
머신 러닝을 사용하여 목표 비트레이트에서 품질을 최적화합니다.
HDR 지원
HDR10:
{
"VideoDescription": {
"ColorMetadata": "INSERT",
"ColorSpace": "HDR10",
"Hdr10Metadata": {
"RedPrimaryX": 34000,
"RedPrimaryY": 16000,
"GreenPrimaryX": 13250,
"GreenPrimaryY": 34500,
"BluePrimaryX": 7500,
"BluePrimaryY": 3000,
"WhitePointX": 15635,
"WhitePointY": 16450,
"MaxFrameAverageLightLevel": 1000,
"MaxContentLightLevel": 4000
}
}
}
Dolby Vision:
소스에서 Dolby Vision 프로필 메타데이터가 필요합니다.
오디오 처리
Dolby Atmos Pass-Through:
{
"AudioDescriptions": [
{
"CodecSettings": {
"Codec": "PASSTHROUGH"
}
}
]
}
자동 콘텐츠 검열
AWS Rekognition Video:
{
"VideoDescription": {
"AfdSignaling": "AUTO",
"RespondToAfd": "PASSTHROUGH"
}
}
부적절한 콘텐츠를 감지하고 플래그합니다.
아키텍처 패턴
라이브 스트리밍 아키텍처
표준 라이브 워크플로우:
Encoder (RTMP) → MediaLive (Transcode) → MediaPackage (Origin) → CloudFront (CDN) → 시청자
광고 삽입 포함:
Encoder → MediaLive (w/ SCTE-35) → MediaPackage → MediaTailor (SSAI) → CloudFront → 시청자
이중화 기여:
Encoder (Primary) ─┐
├─→ MediaConnect (Merge) → MediaLive → MediaPackage → CloudFront
Encoder (Backup) ─┘
VOD 워크플로우
Source File (S3) → MediaConvert (Transcode) → S3 (ABR Assets) → CloudFront → 시청자
DRM 포함:
Source → MediaConvert → S3 → MediaPackage VOD (SPEKE Encryption) → CloudFront → 시청자
하이브리드 Live-to-VOD
Encoder → MediaLive → MediaPackage (Live + Archive) → S3 (Recording)
↓
CloudFront (Live)
S3 Archive → MediaConvert (Trim/Edit) → S3 VOD → CloudFront (VOD)
다중 지역 복원력
Encoder (Primary) → MediaLive (us-west-2) → MediaPackage (us-west-2) → CloudFront
↓
Encoder (Backup) → MediaLive (us-east-1) → MediaPackage (us-east-1) ────────┘
지역 간 페일오버를 위해 Route53 상태 확인을 사용합니다.
가격
MediaLive
입력 가격:
- HD (1080p, H.264): ~$2.40/시간
- HD (1080p, HEVC): ~$4.80/시간
- UHD (4K, H.264): ~$9.60/시간
- UHD (4K, HEVC): ~$19.20/시간
출력 가격:
- HD 출력: ~$1.00/시간 출력당
- UHD 출력: ~$4.00/시간 출력당
예시: 5개 출력이 있는 24/7 HD 채널:
입력: $2.40/시간 × 24 × 30 = $1,728/월
출력: $1.00/시간 × 5 × 24 × 30 = $3,600/월
총계: ~$5,328/월
MediaPackage
인그레스: $0.075/GB
이그레스 (오리진): $0.100/GB
매니페스트 요청: 10,000개 요청당 $0.005
예시: 5 Mbps 스트림, 10,000명의 동시 시청자:
인그레스: 5 Mbps × 3600s × 24h × 30d / 8 / 1024 / 1024 = ~1,620 GB
비용: 1,620 GB × $0.075 = $121.50
이그레스: 5 Mbps × 10,000 시청자 × ... = ~16,200 TB
(그러나 이그레스는 CloudFront로 가며, CloudFront 자체 가격이 있음)
매니페스트 요청: ~10M 요청/월
비용: 10,000,000 / 10,000 × $0.005 = $5
MediaTailor
세션 초기화: 세션당 $0.01
매니페스트 요청: 10,000개 요청당 $0.005
광고 결정 서버 호출: 1,000개 호출당 $0.025
예시: 100,000명의 시청자, 2시간 세션, 3개의 광고 브레이크:
세션: 100,000 × $0.01 = $1,000
ADS 호출: 100,000 × 3 × $0.025/1000 = $7.50
총계: ~$1,007.50
MediaStore
스토리지: $0.025/GB/월
PUT 요청: 1,000개 요청당 $0.01
GET 요청: 1,000개 요청당 $0.001
데이터 전송: $0.025/GB (인터넷으로)
MediaConnect
플로우 시간: $0.075/시간
데이터 전송:
- 인바운드: 무료
- 아웃바운드 (인터넷으로): $0.050/GB
- 아웃바운드 (MediaLive로): 무료
MediaConvert
HD (1080p):
- Basic: $0.015/분
- Professional: $0.030/분
UHD (4K):
- Basic: $0.060/분
- Professional: $0.120/분
예시: 100시간의 HD VOD 콘텐츠 트랜스코딩:
100시간 × 60분 × $0.030 = $180
모범 사례
고가용성
- 프로덕션에는 STANDARD MediaLive 채널 사용 (이중 파이프라인)
- 입력 페일오버 구현 (기본/백업 인코더)
- 중요한 이벤트를 위한 다중 지역 이중화
- 적극적인 모니터링 (CloudWatch 알람, PagerDuty)
비용 최적화
- 적절한 인코딩 크기 조정 (시청자의 90%가 모바일인 경우 4K 인코딩하지 않음)
- 중요하지 않은 스트림에는 SINGLE_PIPELINE 채널 사용
- 효율적인 비트레이트 래더 (중복 프로필 제거)
- 채널 스케줄링 (비수기 시간 동안 인코딩 중지)
- CDN 캐싱 최적화 (오리진 이그레스 감소)
보안
- 저장 시 암호화 (S3 암호화, MediaStore 암호화)
- 전송 중 암호화 (HTTPS, TLS)
- 프리미엄 콘텐츠에 DRM (SPEKE 통합)
- 액세스 제한 (IAM 정책, 입력 보안 그룹, 서명된 URL)
- 감사 로그 (CloudTrail, 액세스 로그)
품질
- ABR 전환 및 광고 삽입을 위한 Closed GOP 사용
- GOP 크기 최적화 (라이브의 경우 2s, VOD의 경우 4-6s)
- 오디오 정규화 (ITU-R BS.1770)
- 입력 손실을 위한 슬레이트/필러 콘텐츠
- 정기적인 페일오버 테스트
모니터링
- CloudWatch 대시보드 (실시간 메트릭)
- 사용자 정의 알람 (파이프라인 실패, 입력 손실, 높은 오류)
- EventBridge 자동화 (자동 복구)
- 합성 모니터링 (지속적인 재생 테스트)
- 플레이어 분석 (경험 품질, 리버퍼링)
결론
AWS Elemental 미디어 서비스는 소규모 라이브 스트림에서 수백만 명의 동시 시청자가 있는 글로벌 스포츠 이벤트까지 확장할 수 있는 포괄적인 클라우드 네이티브 방송 인프라를 제공합니다. 인코딩을 위한 MediaLive, 오리진 서비스를 위한 MediaPackage, 광고 수익화를 위한 MediaTailor를 활용하고 글로벌 배포를 위해 CloudFront와 통합함으로써, 전통적인 방송 인프라의 자본 지출 및 운영 복잡성 없이 전문가급 비디오 워크플로우를 구축할 수 있습니다.
클라우드의 탄력성은 사용한 만큼만 비용을 지불한다는 것을 의미하며, 피크 이벤트를 위해 확장하고 비수기 시간 동안 축소할 수 있습니다. 광범위한 AWS 에코시스템(자동화를 위한 Lambda, 아카이빙을 위한 S3, 콘텐츠 검열을 위한 Rekognition 등)과의 통합은 온프레미스 솔루션으로는 엄청나게 비싼 강력한 비디오 애플리케이션을 가능하게 합니다.
라이브 스포츠 플랫폼, VOD 스트리밍 서비스, 24/7 선형 채널 또는 하이브리드 워크플로우를 구축하든, AWS Elemental은 인터넷 규모로 방송 품질의 비디오를 제공하는 빌딩 블록을 제공합니다.