AWS 기술 블로그
라이브 스트리밍에서 광고 마커 삽입을 위한 AWS Elemental Media Services 사용하기
라이브 스트리밍을 위한 광고 수익화 시대
현대의 디지털 콘텐츠 산업은 그 어느 때보다 빠르게 진화하고 있습니다. 그 중에서도 실시간 라이브 스트리밍 서비스는 OTT(Over-the-top media service) 중심으로 확대되고 있으며, 더 이상 단순한 실시간 콘텐츠 제공 수단이 아닌 하나의 강력한 비즈니스 플랫폼으로 자리매김하게 되었습니다. 특히 인기있는 글로벌 스포츠, K-POP 콘서트 등과 같이 수십만 명의 시청자가 동시에 접속하는 대규모 이벤트에서는, 콘텐츠 제공업체가 단순히 스트리밍 품질을 확보하는 것을 넘어서 수익화를 고려한 광고와 같은 정교한 전략이 요구됩니다. 하지만 과거에는 모든 시청자에게 동일한 광고가 노출되었고, 이는 광고 효율성과 사용자 경험 측면에서 한계가 있었습니다.
오늘날에는 SSAI(Server-Side Ad Insertion) 기술을 활용해서 광고를 서버 측에서 원본 콘텐츠와 결합하여 하나의 연속된 스트림으로 사용자에게 전달하기 때문에, 사용자는 끊김 없는 시청 경험을 유지하면서도 개인화 타겟 광고를 통해 높은 수익성을 확보할 수 있습니다. 이 블로그에서는 AWS Elemental Media Services를 기반으로, 온프레미스에서 생성된 방송 소스와 광고 마커를 클라우드로 안정적으로 전송하고 SSAI 방식으로 광고를 삽입하여 전 세계 시청자에게 제공하는 엔드-투-엔드 아키텍처를 자세히 설명합니다.
광고 마커의 필요성과 SSAI 기술의 장점
최근 몇 년 간 디지털 미디어 시장에서는 유료 구독 기반 모델과 광고 기반 모델이 함께 공존하고 있으며, 그 중에서도 광고 기반의 수익 창출 방식은 여전히 높은 성장 가능성을 지니고 있습니다. SSAI의 핵심 작동 원리는 광고 삽입을 위한 시점을 명확히 식별하는 광고 마커(SCTE-35)를 활용하는 데 있습니다. 이 마커는 콘텐츠 스트림 내 특정 지점에서 광고를 삽입할 수 있는 기회를 정의하며, SSAI 시스템은 이 마커를 기반으로 시청자의 요청 시점에 맞춰 광고를 결정하고 삽입합니다. 따라서 SSAI의 효과적인 구현을 위해서는 광고 마커의 정확한 삽입과 유지가 매우 중요합니다. AWS Elemental Live와 MediaLive는 이러한 광고 마커(SCTE-35)를 삽입하거나 전달할 수 있는 기능을 제공하며, 이후 MediaPackage에서 이 마커를 유지하고, MediaTailor가 이를 기반으로 광고를 삽입하게 됩니다. 기존의 클라이언트 사이드 광고 삽입(CSAI)은 사용자의 기기에서 광고를 별도로 호출하고 재생하기 때문에, 브라우저 광고 차단기나 네트워크 지연 등의 영향을 받는 단점이 있었습니다. 반면 SSAI는 서버에서 본 콘텐츠와 광고를 사전 병합하여 스트림을 구성함으로써, 광고 차단을 우회하고 일관된 화질과 재생 경험을 제공할 수 있습니다. 무엇보다도 시청자의 요청 시점 기준으로 맞춤형 광고를 실시간으로 삽입할 수 있다는 점은 콘텐츠 제공자에게 매우 매력적인 기능입니다.
아키텍처 개요
AWS 기반의 라이브 스트리밍 아키텍처에서 광고 마커를 삽입하고 이를 활용한 광고 삽입이 가능하도록 구성된 전체 워크플로우는 각 구성 요소의 역할에 따라 유기적으로 연결되어 있습니다. 이 구조는 방송 현장에서 광고 신호를 생성하여 클라우드로 전달하고, 최종적으로 시청자에게 맞춤형 광고를 삽입하는 전 과정을 포괄합니다. 가장 먼저 방송 현장에서 생성된 영상 및 음성 신호는 인코딩 및 광고 마커 삽입을 위해 AWS Elemental Live로 전달됩니다. 이후 고품질 스트림은 MediaConnect를 통해 클라우드로 안전하게 전송되며, 클라우드에서는 MediaLive가 이를 다양한 해상도와 포맷으로 트랜스코딩합니다.
이후 MediaPackage에서 다양한 디바이스 호환성을 고려한 HLS 및 DASH 포맷으로 콘텐츠를 패키징하고, SSAI 처리의 핵심인 MediaTailor가 시청자 기반으로 개인화된 광고를 삽입합니다. 최종적으로 이 스트림은 Amazon CloudFront를 통해 글로벌 시청자에게 전달되며, 저지연 고화질로 재생됩니다.
[그림1. 실시간 스트리밍 및 광고 삽입 워크플로우]
단계별 구성
방송 현장에서의 Elemental Live (인코딩)과 광고 마커 삽입
AWS Elemental Live는 방송 부조정실에서 송출되는 SDI 또는 IP 신호를 실시간으로 인코딩하며, 광고 마커 (Cue-point)를 삽입할 수 있습니다. 이러한 광고 마커는 향후 SSAI 삽입 시 광고 타이밍 기준으로 사용됩니다. Elemental Live 에서 광고 마커를 전달하기 위해서는 아래와 같이 광고 마커인 SCTE-35 부분에 체크를 해야 합니다.
[그림2. Elemental Live 에서 광고 마커 삽입 정보]
Elemental Live 에서 In/Out 설정과 인코딩 설정 부분 이외에 광고 마커를 위해서는 출력 설정 부분에서 SCTE-35 를 체크해야 합니다. 참고로 ESAM SCTE-35 는 별도의 광고 마커를 삽입할 수 있는 기능입니다.
[그림3. Elemental Live 에서 광고 마커 삽입 설정]
광고 마커 구성이 완료되면, 광고가 삽입되어야 할 위치에 API를 통해 광고 마커를 삽입할 수 있습니다. 광고 마커 삽입 방식에는 정해진 시간에 맞춰 삽입하는 방법과 즉시 삽입하는 방법이 있습니다.
- Elemental Live 에서 정해진 시간에 광고 마커 삽입하기
curl -k -s -H "Accept: application/xml" -H "Content-Type: application/xml" -d "<cue_point><event_id>1</event_id> <splice_time><hours>12</hours><minutes>00</minutes><seconds>0</seconds> <frames>0</frames></splice_time><duration>30</duration></cue_point>" https://localhost/api/live_events/xx/cue_point
- Elemental Live 에서 즉시 광고 마커 삽입하기
curl -k -s -H "Accept: application/xml" -H "Content-Type: application/xml" -d "<cue_point><event_id>1</event_id><splice_offset>1</splice_offset> <duration>30</duration></cue_point>" https://localhost/api/live_events/xx/cue_point
- 광고 마커 삽입에 대한 응답 정보
<?xml version="1.0" encoding="UTF-8"?> <response> <tag>2</tag> <event_id>1</event_id> <splice_time> <hours>0</hours> <minutes>00</minutes> <seconds>00</seconds> <frames>0</frames> </splice_time> <splice_offset>1</splice_offset> <message></message> <value>cue_point</value> </response>
Elemental Live 에 광고 마커를 삽입하게 되면, 아래와 같이 HLS 의 하위 m3u8 Manifest (예 : index_1.m3u8) 에서 광고 마커 (#EXT-X-CUE-OUT) 을 확인할 수 있습니다.
index_1_104886.ts?m=xxxxxxxxx #EXT-X-CUE-OUT-CONT:ElapsedTime=27.500,Duration=30.000, SCTE35=xxxxx #EXT-X-PROGRAM-DATE-TIME:2025-07-xxT02:41:10.100Z #EXTINF:2.500, index_1_104887.ts?m=xxxxxxxxx #EXT-X-CUE-IN
MediaConnect는 다양한 미디어 전송 프로토콜을 지원하며 원격지의 광고 마커와 함께 원본 컨텐츠를 안전하게 전달할 수 있습니다. . 이 블로그의 워크플로우에서 제시된 것 같이 SRT(Secure Reliable Transport) 프로토콜은 고품질 비디오를 AWS 리전으로 전송하며, 패킷 복구 기능과 암호화를 지원합니다. SRT는 낮은 지연 시간, 신뢰성 있는 전송, 네트워크 적응성 등의 장점을 갖고 있어서 인터넷 환경에서도 방송 품질을 유지할 수 있도록 설계 되었습니다. 전송 설정은 다음과 같은 형태로 구성할 수 있습니다.
- Oregon Region 에서 SRT 전송을 위한 MediaConnect 출력 설정 예시
[그림4. MediaConnect 의 SRT 프로토콜을 활용해서 미디어 소스와 광고마커 송신]
- Seoul Region 에서 SRT 수신을 위한 MediaConnect 입력 설정 예시
[그림5. MediaConnect 의 SRT 프로토콜을 활용해서 미디어 소스와 광고마커 수신]
[그림6. MediaConnect 에서 암호화를 통해 미디어 소스와 광고 마커 암호화된 전송 예]
MediaConnect 는 원격지에서 보다 안전한 미디어 소스를 전달하기 위해 소스를 암호화 할 수 있습니다. 미디어 소스를 암호화 하기 위해 IAM 의 Role 과 설정된 AWS Secrets Manager 의 ARN 으로 쉽게 구성할 수 있습니다.
MediaConnect 는 안정성과 거의 실시간 미디어 전송을 구성할 수 있습니다. 여기서 “buffering”: “100ms”는 수신 측에서 데이터를 최대 100밀리초까지 기다려 재정렬 및 복구할 수 있도록 하는 시간 설정 입니다. 이 값이 짧을수록 지연은 줄어들지만 네트워크가 불안정할 경우 품질 저하 위험이 커지며, 값이 클수록 안정성은 높아지지만 레이턴시는 증가될 수 있습니다.
MediaLive에서 광고 마커 삽입 및 트랜스코딩
AWS Elemental Live는 현장에서 광고 마커를 삽입할 수 있는 주요 장비이지만, AWS MediaLive 또한 클라우드 환경에서 광고마커를 삽입할 수 있는 기능을 제공합니다. 광고 마커를 제대로 처리하기 위해서는 MediaLive 에서 ‘Avail Configuration‘ 설정도 활성화해야 합니다. 이 설정은 광고 마커 메시지를 어떻게 처리할지 정의하는 설정입니다. 이 설정을 통해서 광고 마커를 MediaTailor 로 전달 할 수 있습니다.
MediaLive에서는 광고 마커를 스케줄 기반으로 삽입할 수 있으며, 특히 SCTE-35 splice_insert 명령을 통해 즉시(ad_immediate) 광고 삽입이 가능하도록 구성할 수 있습니다. 이를 통해 방송 현장의 제약을 벗어나, 클라우드 상에서도 광고 타이밍 제어가 가능하며 스케줄 기반 또는 API를 통한 자동화가 가능합니다. 이는 AWS Management Console의 스케줄 탭 또는 MediaLive API를 통해 설정할 수 있으며, 다음은 즉시 광고 삽입을 위한 SCTE-35 splice_insert 명령 설정 예시입니다
[그림7. MediaLive 에서 광고 마커인 SCTE-35 를 삽입하기]
{
"ActionName": "Ad marker",
"ScheduleActionSettings": {
"Scte35SpliceInsertSettings": {
"Duration": 2700000,
"SpliceEventId": 1001
}
},
"ScheduleActionStartSettings": {
"ImmediateModeScheduleActionStartSettings": {
"Time": "2025-07-xxT08:27:36.072037533"
}
}
}
이러한 설정을 통해 광고 삽입의 타이밍과 구간에 대한 제어를 강화할 수 있습니다.
MediaPackage 에서 광고 마커 설정
Elemental LIve 나 MediaLive 에서 광고 마커를 포함하는 경우, MediaPackage는 SCTE-35 마커를 유지한 채 콘텐츠를 HLS/DASH 포맷으로 패키징을 해야 합니다. ediaPackage 에서도 광고 마커에 대한 설정이 필요합니다. MediaPackage 의 엔드포인트 관리 부분에서 패키지 설정 아래 추가 구성에 광고 마커를 설정할 수 있습니다.
[그림8. MediaPackage 에서 광고 마커 설정 1]
[그림9. MediaPackage 에서 광고 마커 설정 2]
MediaTailor 에서 SSAI 기반 광고 삽입
MediaTailor는 광고 결정 서버로부터 받은 광고를 메인 콘텐츠와 합성하여 사용자 맞춤형 스트림을 생성합니다. 또한, MediaTailor는 광고 요청을 사전에 예측하고 준비할 수 있는 Prefetch 기을 제공합니다. 이 기능을 활용하면 광고 재생 직전에 필요한 광고 소재를 미리 확보할 수 있어 응답 지연을 최소화하고 광고 채널의 수익 기회를 극대화할 수 있습니다. 이는 특히 대규모 트래픽이 예상되는 이벤트나 광고 인벤토리가 민감한 환경에서 효과적으로 작동합니다. MediaTailor 설정 예시는 다음과 같습니다.
[그림10. MediaPackage 에서 광고 마커 설정 2]
HLS 경우, 플레이어는 광고 마커가 MediaTailor 를 거쳐서 Manifest 로 전달이 됩니다. 만약 아래처럼 광고 마커 패스스루 설정을 활성화 하게 되면 광고 마커 값이 그대로 전달이 될 수 있습니다.
[그림11. MediaTailor 에서 광고 마커 전달 설정]
광고 마커에 의한 광고 삽입 테스트 시나리오
기존 광고 마커가 종료되기 전에 새로운 SCTE-35 광고 마커가 삽입이 될 경우, MediaTailor는 중복된 광고 마커를 동시에 추적하게 됩니다. 이때 MediaTailor는 어떤 광고 세그먼트를 우선적으로 재생할 지 결정 하지 못해 광고 세그먼트의 재생 문제가 발생합니다. 일반적으로 광고 마커는 시작과 종료 지점이 순차적으로 발생해야 하므로, MediaTailor는 광고 브레이크를 하나씩 순차적으로 처리하도록 설계되어 있습니다. 따라서 광고 마커가 겹치면 광고나 원본 컨텐츠 재생에 문제가 발생할 수 있습니다. 이러한 문제를 방지하려면 광고 마커인 SCTE-35 가 순차적으로 발생하도록 설정을 점검하고, 광고 브레이크 간에 충분한 간격을 확보하는 것이 중요합니다. 아래에서는 다양한 워크플로우 시나리오를 기반으로, 지원되는 케이스와 지원되지 않는 케이스에 대해 설명합니다.
[그림12. 올바른 광고 마커 삽입]
[성공 케이스]
- 위 그림과 같이, 가장 일반적인 시나리오는 광고 마커에 활용되는 Splice Insert 신호에 의해 광고가 시작되어 미리 설정된 Duration 동안 재생된 후, 원본 콘텐츠로 자연스럽게 복귀하는 과정입니다. 이러한 패턴은 일정 간격으로 반복되며 테스트가 가능합니다. 이는 방송 및 스트리밍 환경에서 정확한 광고 타이밍의 광고 삽입과 원활한 콘텐츠 전환을 가능하게 하는 표준화된 메커니즘으로, 시청자들에게 끊김 없는 시청 경험을 제공합니다.
- 광고 마커 삽입시 정확한 duration을 지정하는 것이 권장 되는 사항이지만, 남은 광고를 일찍 종료하고 즉시 콘텐츠로 전환해야 하는 경우 MediaLive의 ‘return-to-network‘ 기능을 API로 활용할 수 있습니다.
- 지정한 Duration 기간이 종료되어 원본 콘텐츠로 복귀하거나, ‘return-to-network’ API를 통해 조기 종료된 것을 확인한 후 새로운 광고 마커를 위해 Splice Insert 신호를 생성하여 다음 광고를 삽입할 수 있습니다. 이러한 전체 과정을 통해서 시청자들에게 끊김 없는 스트리밍 경험을 제공할 수 있습니다.
[실패 케이스]
[그림13. 잘못된 광고 마커 삽입]
- ID가 1인 Splice Insert 신호가 생성합니다. 이 신호의 Duration 필드는 120초로 설정되어 있으며, 이 지속시간이 경과하면 “Scheduled return ID=1″를 통해 자동으로 원본 콘텐츠 스트림으로 복귀합니다. 그러나 MediaLive의 ‘return-to-network’ API를 호출과 같이 early return 시그널 없이 바로 새로운 Splice Insert 신호 (ID : 2)를 발생 시키면 그림에서처럼 일정 구간의 오버래핑 마커 구간이 발생이 되고 이는 광고가 중간에 잘리거나 잘못된 광고가 전달이 되는 오류가 발생이 됩니다.
정리해보자면 MediaLive를 통해 광고 브레이크 시작 및 종료 이벤트를 명시적으로 신호하는 경우, 이전 브레이크의 종료 신호를 보내기 전에는 새로운 브레이크 시작을 신호하지 않도록 주의해야 합니다. 또한 브레이크 시작 시 지속 시간을 설정하지 않으면 광고가 잘리거나, 브레이크 복귀 신호가 누락되거나 늦게 트리거될 경우 브레이크가 콘텐츠를 무기한 가릴 수 있습니다. 이러한 이유로 항상 지속 시간을 설정하는 것을 권장합니다.
ADS (Ad Dicision Server)를 위한 고려사항
트래픽 패턴의 이해
대규모 라이브 스트리밍 서비스 환경에서는 광고 마커는 미리 정해지지 않고 대부분 즉시 모드(Immediate Mode) 로 사용이 되며, 모든 사용자가 동일한 타임코드에서 동시에 광고 요청을 보내기 때문에 일반적인 웹 서비스와는 달리 특정 시점에 트래픽이 급격히 집중되는 특성이 있습니다. 이를 위해서는 광고 마커의 빈도, 동시 시청자 수와 초당 발생되는 요청 수는 ADS 와 밀접한 관계를 가지고 있습니다. 동시 시청자수가 많을 수록 ADS 의 성능을 충분히 고려해야 합니다.
성능 요구사항
대규모 라이브 환경에서 광고 마커를 즉시 사용하는 경우, ADS 에서 안정적으로 동작 하기 위해서는 다음 요구사항을 충족해야 합니다.
- 응답 시간 : 재생 지연이 발생 되지 않기 위한 빠른 응답 시간
- 동시 처리 능력 : 동시 접속자 수에 비례한 RPS 처리
- 가용성 : 99.9% 이상의 안정적인 서비스 가용성
- 확장성 : 광고 요청 트래픽 급증 시 대응 가능한 자동 스케일링
아키텍처 설계 고려사항
MediaTailor 기반 SSAI 환경에서 ADS와의 안정적 통합 및 운영을 위해 고려해야 할 주요 설계 항목은 다음과 같습니다.
- 순간 트래픽 처리 : 일반 웹 서비스 대비 높은 순간 트래픽 집중를 처리할 수 능력 확보
- 지속적 성능 모니터링 : 실시간 성능 지표 추적 및 알림 체계 구축
- 자동 확장 : 예측 가능한 트래픽 패턴에 대한 사전 스케일링
- 장애 대응 전략 : ADS 광고 실패 시 대체 광고 또는 콘텐츠 연속 재생 전략
실제 프로덕션 환경에서는 대규모 스포츠 이벤트나 인기 콘텐츠가 방송될 때, 광고 요청 트래픽이 특정 시점에 급격히 몰리는 현상이 자주 발생합니다. 이러한 피크 트래픽은 ADS에 과부하를 유발해서 광고 응답 지연 또는 요청 실패율 증가로 이어질 수 있습니다. 응답 지연이 발생하면 광고 삽입 타이밍이 어긋나거나 콘텐츠 재생이 지연되어 시청 경험이 저하됩니다. 또한 광고 요청 실패는 곧바로 광고 수익 손실로 이어지기 때문에, 시스템의 높은 RPS 처리 능력과 안정성 확보가 매우 중요합니다. 광고 마커가 전달 되는 순간부터 MediaTailor 에서 광고와 컨텐츠를 매끄럽게 연결 할 수 있도록, ADS 의 안정적이고 빠른 응답은 SSAI 기반 스트리밍 서비스 운영의 핵심 성공 요소입니다.
광고 마커와 SSAI 중심의 스트리밍 서비스
SSAI 기술이 효과적으로 동작하기 위해서는 광고 마커의 존재와 그 정확한 처리 과정이 무엇보다 중요합니다. 광고 마커는 스트리밍 콘텐츠내에서 광고 삽입 시점을 정의하는 기준점으로 활용되며, AWS Elemental Media Services는 이러한 마커의 생성부터 전달, 유지에 이르기까지 전 과정을 포괄적으로 지원합니다. Elemental Live와 MediaLive는 온프레미스 및 클라우드 환경에서 광고 마커를 삽입하거나 수정할 수 있는 기능을 제공하며, MediaConnect로 원거리 미디어 소스를 안전하게 잔달할 수있으며, MediaPackage는 해당 마커를 보존한 상태로 콘텐츠를 패키징 합니다. 이를 기반으로 MediaTailor는 서버 사이드 광고 삽입(SSAI)을 구현하며, 본 콘텐츠와 광고를 하나의 연속된 스트림으로 구성하여 시청자에게 고품질의 스트리밍 경험을 제공합니다. 스트리밍 환경에서 AWS Elemental Media Services 의 광고 삽입 기능은 어디서든 안정적으로 광고 수익을 창출할 수 있는 구조를 마련할 수 있으며 AWS는 그 중심에서 신뢰할 수 있는 인프라와 서비스를 통해 미디어 고객들이 보다 효율적인 스트리밍 광고 전략을 실현할 수 있습니다.
YoHan Choi, Media Edge Sr.Specialist SA
Yongzhe Ren, SA
Kil Han Kim Sr.TAM