SSAI๊ฐ โ๋ฌด์์โ ํด๊ฒฐํ๋ ๋ฐฉ์์ธ๊ฐ
๊ด๊ณ ๋ฅผ ํด๋ผ์ด์ธํธ์ ์์กด์ฑ ์์ด, ์๋ฒ๊ฐ ์คํธ๋ฆผ์ ๋ฏธ๋ฆฌ ๊ฟฐ๋งค์(stitch) ํ๋์ ์คํธ๋ฆผ์ฒ๋ผ ๋ง๋ค์ด ์ ๋ฌํ๋ ๋ฐฉ์
- CSAI (Client-Side Ad Insertion): ํด๋ผ์ด์ธํธ๊ฐ ๊ด๊ณ ์์ฒญ (VAST) โ ๊ด๊ณ ์ฌ์
- SSAI (Server-Side A#d Insertion): ์๋ฒ๊ฐ ๊ด๊ณ ์์ฒญ (VAST) + ๊ด๊ณ ๋ฏธ๋์ด ์ค๋น + ์ธ๊ทธ๋จผํธ ๋จ์๋ก ํฉ์ฑ โ ํด๋ผ์ด์ธํธ๋ ๋จ์ ์ฌ์
์ด๋ฆ์ ๊ฐ ํ์ฌ๋ณ๋ก ๋ค๋ฅด๋ค.
- ๊ตฌ๊ธ์ SSAI๋ฅผ DAI (Dynamic Ad Insertion) https://support.google.com/admanager/topic/7062524
- AWS๋ MediaTailor https://aws.amazon.com/ko/mediatailor/
VAST-CTV ๋ฌธ์๋ฅผ ํ์ธํ๋ฉด VAST ํ๊ทธ๋ฅผ โํ์ฑํ๊ณ ์คํโ ์ฃผ์ฒด๋ฅผ ํด๋ผ์ด์ธํธ(Video Player) ๋ฟ ์๋๋ผ โSSAI vendorsโ๋ ๋ช ์ CTV(Connected TV, ์ค๋งํธ TV๋ก ์์์ ์์ฒญํ ์ ์๋ ๋๋ฐ์ด์ค๋ก ์๊ฐ)
Flow
sequenceDiagram autonumber participant A as A. Broadcaster participant B as B. Live Stream server<br/>(Encoder/Packager) participant C as C. Content Origin<br/>(Live HLS/DASH) participant D as D. SSAI Service<br/>(Session + Stitch) participant E as E. Ad Decision Server (ADS)<br/>(Returns VAST) participant F as F. Ad Media Store / Ad CDN<br/>(MP4/Mezzanine) participant G as G. Transcode+Package<br/>(Make ABR segments) participant H as H. Ad Segment Origin<br/>(Ad HLS/DASH) participant I as I. CDN participant J as J. Viewer/Player A->>B: Start broadcast + schedule/policies<br/>(ad breaks: timing/duration rules) B->>C: Encode+Package live -> publish manifests+segments B->>C: Emit ad-break cues (e.g., SCTE-35 markers) J->>I: Request live manifest (m3u8/mpd) I->>D: Forward manifest request (session context) D->>C: Fetch source manifest (+ cue/avail info) D->>E: Ad request for upcoming break (duration/context) E-->>D: VAST response (ad media URLs + tracking + metadata) D->>F: Fetch ad asset (e.g., mp4/mezzanine) via VAST URL alt Ad already stream-ready (HLS/DASH renditions exist) D->>H: Reference existing ad segments/manifests else Need to match live stream format (codec/ABR/segments) D->>G: Send asset for transcode+package G-->>H: Output ad ABR segments + ad manifests end D->>D: Build stitched session manifest<br/>(replace break window with ad URIs) D-->>I: Return stitched/modified manifest (per-session) I-->>J: Deliver stitched manifest J->>I: Request segments listed in manifest I->>C: Fetch live content segments (if cache miss) I->>H: Fetch ad segments during breaks (if cache miss) I-->>J: Deliver segments (continuous playback)
์ค๋ช (A โ B ํํ + ์์ ๋น์ )
1) A โ B: โ๋ฐฉ์ก ์์ + ๊ด๊ณ ๋ธ๋ ์ดํฌ ์ ์ฑ ์ ๋ฌโ
- ์ค๋ช : Broadcaster(A)๊ฐ โ์ง๊ธ๋ถํฐ ์ด ์ฑ๋ ๋ผ์ด๋ธ ์์โ๊ณผ ํจ๊ป, ์ค๊ฐ๊ด๊ณ (๋ธ๋ ์ดํฌ)๊ฐ ์ธ์ /๋ช ์ด์ธ์ง ๊ฐ์ ๋ฃฐ์ ์ก์ถ ์์คํ (B)์ ์ ๋ฌํฉ๋๋ค.
- ์์: โ20:00 ๋ด์ค ์์, 20:12์ 60์ด ๊ด๊ณ , 20:25์ 90์ด ๊ด๊ณ โ.
- ๋น์ : **๊ณต์ฐ ๊ธฐํ์(A)**๊ฐ **๋ฌด๋ ๊ฐ๋ (B)**์๊ฒ โ๊ณต์ฐ ์ค๊ฐ์ ์ฌ๋ ์๊ฐ(์ธํฐ๋ฏธ์ ) ๋ช ๋ถ ๋ฃ์ด์คโ๋ผ๊ณ ์๋ ค์ฃผ๋ ๊ฒ.
2) B โ C: โ๋ผ์ด๋ธ๋ฅผ ์คํธ๋ฆฌ๋ฐ ํํ(HLS/DASH)๋ก ๋ง๋ค์ด ์ฌ๋ฆผโ
- ์ค๋ช : Live Stream Station(B)์ด ๋ผ์ด๋ธ ์์์ ์ธ์ฝ๋ฉ/ํจํค์งํด์ Content Origin(C)์ ๋งค๋ํ์คํธ(m3u8/mpd)์ ์ธ๊ทธ๋จผํธ๋ฅผ ๊ณ์ ์์ฑ/์ ๋ก๋(๊ฒ์)ํฉ๋๋ค.
- ์์: 2์ด์ง๋ฆฌ fMP4 ์ธ๊ทธ๋จผํธ๋ฅผ ๊ณ์ ๋ง๋ค๊ณ , ๋งค๋ํ์คํธ์ ์ต์ ์ธ๊ทธ๋จผํธ ๋ชฉ๋ก์ ๊ฐฑ์ .
- ๋น์ : **๋ฌด๋ ๊ฐ๋ (B)**์ด ๊ณต์ฐ์ ์งํํ๋ฉด์, ๊ด๊ฐ์ด ๋ณผ ์ ์๊ฒ **์คํฌ๋ฆฐ ์ก์ถ(C)**์ ๊ณ์ ์ ๋ฐ์ดํธํ๋ ๊ฒ.
3) B โ C: โ๊ด๊ณ ๋ธ๋ ์ดํฌ ์ ํธ(ํ/avail) ํ์โ
- ์ค๋ช : ๊ด๊ณ ๊ฐ ๋ค์ด๊ฐ ํ์ด๋ฐ์ด ๋๋ฉด B๊ฐ C์ โ์ฌ๊ธฐ๋ถํฐ ๊ด๊ณ ๊ตฌ๊ฐ ์์/์ข ๋ฃโ๋ฅผ ๋ํ๋ด๋ cue(์: SCTE-35)๋ฅผ ์ฌ์ด๋ก๋๋ค.
- ์์: โ๋ค์ 60์ด๋ ๊ด๊ณ ๊ตฌ๊ฐโ ๋ง์ปค๊ฐ ๋งค๋ํ์คํธ/๋ฉํ๋ฐ์ดํฐ์ ํ์๋จ.
- ๋น์ : ๊ณต์ฐ ๋๋ณธ์ โ์ธํฐ๋ฏธ์ ์์โ ํ์๊ฐ ์ฐํ๋ ๊ฒ.
4) J โ I: โ๋ทฐ์ด๊ฐ CDN์ ๋งค๋ํ์คํธ ์์ฒญโ
- ์ค๋ช : ์์ฒญ์ ํ๋ ์ด์ด(J)๋ CDN(I)์๊ฒ โ์ง๊ธ ๋ผ์ด๋ธ ์ฌ์์ ํ์ํ ๋งค๋ํ์คํธ ์ฃผ์ธ์โ๋ผ๊ณ ์์ฒญํฉ๋๋ค.
- ์์: CTV ์ฑ์ด
channel.m3u8์ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ฆฌ๋ก๋. - ๋น์ : ๊ด๊ฐ(J)์ด ์๋ด ๋ฐ์คํฌ(I)์์ โ๊ณต์ฐ ์งํํ ์ฃผ์ธ์โ๋ผ๊ณ ๋ฐ๋ ๊ฒ.
5) I โ D: โCDN์ด SSAI๋ก ์์ฒญ ์ ๋ฌ(์ธ์ ์ ๋ณด ํฌํจ)โ
- ์ค๋ช : CDN(I)์ ์์ฒญ์ SSAI(D)๋ก ๋๊ธฐ๊ฑฐ๋, SSAI๊ฐ ์ค๋ฆฌ์ง ์ญํ ๋ก ์๋ตํฉ๋๋ค. ์ด๋ ์ง์ญ/๋๋ฐ์ด์ค/์ธ์ ํ ํฐ ๊ฐ์ ์ปจํ ์คํธ๊ฐ ๊ฐ์ด ๋ค์ด์ต๋๋ค.
- ์์: โ์ด ์ฌ์ฉ์๋ KR, CTV, ์ธ์ =xyzโ.
- ๋น์ : ์๋ด ๋ฐ์คํฌ(I)๊ฐ โ์ด ๊ด๊ฐ์ VIP ์ข์โ ๊ฐ์ ์ ๋ณด๋ฅผ **์ด์ํ(D)**์๊ฒ ์๋ ค์ฃผ๋ ๊ฒ.
6) D โ C: โSSAI๊ฐ ์๋ณธ ์ฝํ ์ธ ๋งค๋ํ์คํธ(๋ฐ ๊ด๊ณ ํ)๋ฅผ ํ์ธโ
- ์ค๋ช : SSAI(D)๋ Content Origin(C)์์ ์๋ณธ ๋งค๋ํ์คํธ๋ฅผ ๊ฐ์ ธ์ ๋ค์ ๊ด๊ณ ๋ธ๋ ์ดํฌ๊ฐ ์ธ์ ์ธ์ง ํ์ ํฉ๋๋ค.
- ์์: โ15์ด ๋ค 60์ด ๊ด๊ณ ๋ธ๋ ์ดํฌ ์์ โ.
- ๋น์ : ์ด์ํ(D)์ด ๋๋ณธ(C)์ ๋ณด๊ณ โ๊ณง ์ธํฐ๋ฏธ์ ์ด๋คโ๋ผ๊ณ ํ์ธํ๋ ๊ฒ.
7) D โ E: โ๊ด๊ณ ๊ฒฐ์ ์์ฒญ(๋ธ๋ ์ดํฌ ๊ธธ์ด/์ปจํ ์คํธ ํฌํจ)โ
- ์ค๋ช : SSAI(D)๊ฐ ADS(E)์๊ฒ โ60์ด์ง๋ฆฌ ์ฌ๋กฏ์ ๋ฃ์ ๊ด๊ณ ๊ณจ๋ผ์คโ ์์ฒญํฉ๋๋ค.
- ์์: โ60์ด = 30์ด ๊ด๊ณ 2๊ฐ ์กฐํฉโ ํน์ โ15์ด 4๊ฐโ ๋ฑ.
- ๋น์ : ์ด์ํ(D)์ด ๊ด๊ณ ๋ํ์ฌ(E)์๊ฒ โ์ธํฐ๋ฏธ์ ์ ํ ๊ด๊ณ ๊ณจ๋ผ์คโ๋ผ๊ณ ์์ฒญ.
8) E โ D: โVAST๋ก ๊ด๊ณ ์๋ต(๊ด๊ณ ํ์ผ URL ํฌํจ)โ
- ์ค๋ช : ADS(E)๋ VAST๋ก โ์ด ๊ด๊ณ ๋ฅผ ์จ๋ผโ์ ํจ๊ป, ๊ด๊ณ ์๋ณธ(mp4/mezzanine) ์์น(URL)์ ํธ๋ํน ์ ๋ณด๋ฅผ ๋ด๋ ค์ค๋๋ค.
- ์์:
MediaFile=https://ad-cdn/.../creative123.mp4 - ๋น์ : ๊ด๊ณ ๋ํ์ฌ(E)๊ฐ โ์ด ๊ด๊ณ ์์ ํ์ผ ๋งํฌ๋ก ๋ฐ์์ ํ์ดโ๋ผ๊ณ ์ฃผ๋ ๊ฒ.
9) D โ F: โSSAI๊ฐ ๊ด๊ณ ์๋ณธ(mp4 ๋ฑ)์ ๊ฐ์ ธ์ดโ
- ์ค๋ช : SSAI(D)๋ VAST์ ์๋ URL์ ๋ฐ๋ผ Ad Media Store/Ad CDN(F)์์ ๊ด๊ณ ์๋ณธ์ ๊ฐ์ ธ์ต๋๋ค.
- ์์: mp4 ๋ค์ด๋ก๋ ๋๋ ์คํธ๋ฆฌ๋ฐ fetch.
- ๋น์ : ์ด์ํ(D)์ด ๊ด๊ณ ์์์ **์๋ฃ์ค(F)**์์ ๊ฐ์ ธ์ค๋ ๊ฒ.
10) (๋ถ๊ธฐ) D โ H ๋๋ D โ G โ H: โ๊ด๊ณ ๋ฅผ ์ฌ์ ๊ฐ๋ฅํ ์ธ๊ทธ๋จผํธ๋ก ์ค๋นโ
- ์ค๋ช
:
- ์ด๋ฏธ ๊ด๊ณ ๊ฐ HLS/DASH๋ก ์ค๋น๋ผ ์์ผ๋ฉด: D๊ฐ H(Ad Segment Origin)์ ์๋ ๊ด๊ณ ์ธ๊ทธ๋จผํธ๋ฅผ ๊ทธ๋ฅ ์ฐธ์กฐ
- ์๋๋ฉด: D๊ฐ G(ํธ๋์ค์ฝ๋/ํจํค์ง)์ ๋๊ฒจ ๋ผ์ด๋ธ์ ๊ฐ์ ๊ท๊ฒฉ(์ฝ๋ฑ/ABR/์ธ๊ทธ๋จผํธ ๊ธธ์ด ๋ฑ)์ผ๋ก ๋ณํํ๊ณ , ๊ฒฐ๊ณผ๋ฅผ H์ ์ ์ฅ/์๋น
- ์์:
- ์ฌ์ ์ค๋นํ: โcreative123์ ์ด๋ฏธ 1080/720/480 ์ธ๊ทธ๋จผํธ ์์โ
- JITํ: โ์ด๋ฒ์ ๋ฐ์ mp4๋ฅผ 3๊ฐ ๋นํธ๋ ์ดํธ๋ก ํธ๋์ค์ฝ๋ฉ ํ 2์ด ์ธ๊ทธ๋จผํธ๋ก ์ชผ๊ฐฌโ
- ๋น์ :
- ๋ฐ๋ก ์ฐ๊ธฐ: โ์ด๋ฏธ ๊ณต์ฐ์ฅ ๊ท๊ฒฉ ํฌ๋งท์ ์์ ํ์ผ์ด ์ค๋น๋จโ
- ๋ณํ ํ์: โ๊ฐ์ ธ์จ ์์์ด ๊ท๊ฒฉ์ด ๋ฌ๋ผ์ **ํธ์ง์ค(G)**์์ ๊ณต์ฐ์ฅ ๊ท๊ฒฉ์ผ๋ก ๋ณํ ํ **์์ ์๋ฒ(H)**์ ์ฌ๋ฆผโ
11) D โ I: โ์ธ์ ๋ณ ์คํฐ์น๋ ๋งค๋ํ์คํธ ๋ฐํโ
- ์ค๋ช : SSAI(D)๊ฐ ์๋ณธ ๋งค๋ํ์คํธ์ ๊ด๊ณ ๊ตฌ๊ฐ์ **๊ด๊ณ ์ธ๊ทธ๋จผํธ URI ๋ชฉ๋ก(H)**์ผ๋ก ๋ฐ๊ฟ ๋ผ์ด โ์ธ์ ์ ์ฉ ๋งค๋ํ์คํธโ๋ฅผ ๋ง๋ค์ด CDN(I)์ ๋ฐํํฉ๋๋ค.
- ์์: โ20:12~20:13 ๊ตฌ๊ฐ์ ad_seg_001..030์ผ๋ก ๊ต์ฒดโ.
- ๋ณธ ์์์ ๋ฎ์ด์์ฐ๋ ์ผ์ด์ค e.g. SBS ์จ์์ด ์ค ์ฒ์์ผ๋ก ์ง์ ํ์ ๋ ๊ด๊ณ ์ก์ถ
- ๋ณธ ์์ ์ฌ์ด์ ๋ผ์ ๋ฃ๋ ์ผ์ด์ค e.g. SBS ์จ์์ด ์ค TV ๊ด๊ณ ์์ ์ ๋ง์ถฐ ์ธํฐ๋ท์ ๋ค๋ฅธ ๊ด๊ณ ์ก์ถ
- ๋น์ : ์ด์ํ(D)์ด ๊ด๊ฐ(J)์๊ฒ ์ค ์งํํ์์ โ์ธํฐ๋ฏธ์ ๊ตฌ๊ฐ์ ์ด ๊ด๊ณ ์์ ๋ฆฌ์คํธ๋ฅผ ์์โ์ด๋ผ๊ณ ์ ์ด์ฃผ๋ ๊ฒ.
12) J โ I โ (C/H): โํ๋ ์ด์ด๋ ๋งค๋ํ์คํธ๋๋ก ์ธ๊ทธ๋จผํธ๋ฅผ ๋ฐ์ ์ฌ์โ
- ์ค๋ช : ํ๋ ์ด์ด(J)๋ CDN(I)์์ ๋งค๋ํ์คํธ์ ์ ํ ์ธ๊ทธ๋จผํธ๋ค์ ์์ฒญํฉ๋๋ค. ๊ด๊ณ ๊ตฌ๊ฐ์๋ CDN์ด H์์ ๊ด๊ณ ์ธ๊ทธ๋จผํธ๋ฅผ ๊ฐ์ ธ์ค๊ณ , ๋๋จธ์ง๋ C์์ ์ฝํ ์ธ ์ธ๊ทธ๋จผํธ๋ฅผ ๊ฐ์ ธ์ต๋๋ค. ํ๋ ์ด์ด๋ ๊ฒฐ๊ณผ์ ์ผ๋ก ๋๊น ์๋ ๋จ์ผ ์คํธ๋ฆผ์ฒ๋ผ ์ฌ์ํฉ๋๋ค.
- ์์: ๊ด๊ณ ๊ตฌ๊ฐ์
ad_seg_*.m4s, ์ฝํ ์ธ ๊ตฌ๊ฐ์live_seg_*.m4s. - ๋น์ : ๊ด๊ฐ(J)์ ์งํํ๋๋ก ๊ณต์ฐ์ ๋ณด๊ณ , ์ธํฐ๋ฏธ์ ๋๋ ์๋์ผ๋ก ๊ด๊ณ ์์์ด ์์๋๋ ๊ฒ.