WAND wiki
최근 문서

검색 결과가 없습니다. 모델명이나 다른 키워드로 검색해 보세요.

SSAILast Updated 2026-09-30

SSAI 검증과 트러블슈팅

On this page

켜는 것보다 확인하는 게 어렵습니다.

검증 준비

파이프라인 구성 항목입니다.

항목 방법 결과
SSAI 설정 반영 DescribeStreamPackageChannel SSAIEnable = True, 설정값 그대로
엔드포인트 재생 마스터 플레이리스트 요청 200
렌디션 분리 마스터 플레이리스트 내용 720p / 1080p 두 개 확인
SCTE-35 패스스루 DescribeStreamLiveChannel Behavior = PASSTHROUGH
마커 주입 (Plan) CreateStreamLivePlan EXT-X-CUE-OUT 발생, 60초 후 EXT-X-CUE-IN
PDT 삽입 미디어 플레이리스트 EXT-X-PROGRAM-DATE-TIME 확인
CDN 경유 도메인으로 요청 200

Plan으로 주입한 마커의 실제 측정값입니다. 5초 간격으로 미디어 플레이리스트를 폴링했습니다.

경과 CUE-OUT CUE-IN 비고
5초 0 0 아직 —
10초 1 0 마커 발화
35초 7 0 플레이리스트 윈도우 전부 광고 구간
70초 6 1 SpliceDuration 경과, 구간 종료
90초 0 1 윈도우에서 마커 소멸

SpliceDuration을 5400000(60초)으로 넣었고 CUE-IN이 70초 부근에 찍혔습니다. tick 환산이 맞게 들어갔다는 뜻입니다.

광고 삽입 검증

ADS를 직접 호스팅해서 접근 로그를 봤지만 StreamPackage에서 들어온 요청이 한 건도 없었습니다.

지금까지 확인한 사실은 이렇습니다.

기존 테스트의 확인 지점

설정을 바꿔가며 여러 가지를 시도해 봤습니다.

시도 결과
Google 공개 VAST 샘플 URL ADS 호출 —
직접 호스팅한 VAST (work.justinkim.co.kr) ADS 호출 —
AdTriggers [1] / [1,2,4,5] 동일
Segmentation Descriptor TypeID=52 추가 동일
TimeShiftEnable = True 동일
엔드포인트를 새로 만들어 적용 동일

광고 삽입 검증 전 콘솔에서 계정의 SSAI 이용 설정을 확인하고, ADS 요청 로그와 실제 재생을 대조합니다.

광고 삽입까지 확인해야 하면 콘솔에서 SSAI 사용 신청 상태를 먼저 확인하세요.

검증 순서

LANGUAGE
1. 마커 소스 확보        StreamLive Plan 또는 SCTE-35 인코더
2. StreamLive 통과 확인  Behavior = PASSTHROUGH, 플레이리스트에 CUE-OUT
3. StreamPackage 설정    SSAIEnable = True
4. ADS 응답 확인         ADS 접근 로그에 요청이 찍히는지
5. 재생 확인             광고 구간에서 광고가 나오는지

ADS 서버 로그에서 광고 요청 / 응답을 확인합니다. 외부 ADS는 제공사의 로그 또는 진단 기능을 사용합니다.

1. StreamLive SCTE-35

LANGUAGE
tccli mdl DescribeStreamLiveChannel --region ap-seoul --Id 6AA6****5542 \
| python3 -c "
import sys,json
d=json.load(sys.stdin)['Info']
for g in d['OutputGroups']:
    for o in g['Outputs']:
        print(o['Name'], o['Scte35Settings'])
    print('PDT:', g['HlsRemuxSettings']['PdtInsertion'], g['HlsRemuxSettings']['PdtDuration'])
"

기대하는 결과입니다.

LANGUAGE
justinkimout1080p {'Behavior': 'PASSTHROUGH'}
justinkimout720p  {'Behavior': 'PASSTHROUGH'}
PDT: OPEN 600

2. StreamPackage SSAI

LANGUAGE
tccli mdp DescribeStreamPackageChannel --region ap-seoul --Id 6AA6****32BF \
| python3 -c "
import sys,json
for e in json.load(sys.stdin)['Info']['Points']['Endpoints']:
    print(e['Name'], 'SSAIEnable =', e.get('SSAIEnable'))
"

3. PDT 태그

LANGUAGE
curl -s "https://cdn.tencentpoc.com/v1/01a0****6005/01a0****86d9/justinkim_to_package_justinkim720p.m3u8" | head -8

기대하는 결과입니다.

LANGUAGE
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:40901677
#EXT-X-TARGETDURATION:4
#EXT-X-PROGRAM-DATE-TIME:2026-09-14T05:42:45.388Z
#EXTINF:4.000, seq 40901677

4. ADS 응답

VAST 태그 자체는 이렇게 확인합니다.

LANGUAGE
curl -s -o /dev/null -w "%{http_code}\n" "https://ads.example.com/vast?cid=****"
curl -s "https://ads.example.com/vast?cid=****" | head -3
LANGUAGE
<?xml version="1.0" encoding="UTF-8"?><VAST version="3.0"><Ad id="...">
LANGUAGE
# ADS를 직접 호스팅한 경우
sudo grep 'vast.xml' /var/log/nginx/access.log

ADS 요청 로그와 플레이리스트 마커 시각을 대조해 광고 삽입 구간을 확인합니다.

VAST를 직접 만들 때 최소한으로 필요한 건 이렇습니다.

LANGUAGE
<?xml version="1.0" encoding="UTF-8"?><VAST version="3.0"><Ad id="ad-001">
    <InLine>
      <AdSystem>test</AdSystem>
      <AdTitle>Test Ad</AdTitle>
      <Creatives>
        <Creative id="c1" sequence="1">
          <Linear>
            <Duration>00:01:00</Duration>
            <MediaFiles>
              <MediaFile delivery="progressive" type="video/mp4"
                         bitrate="500" width="1280" height="720">
                <![CDATA[https://example.com/ad.mp4]]>
              </MediaFile>
            </MediaFiles>
          </Linear>
        </Creative>
      </Creatives>
    </InLine></Ad></VAST>

Duration과 광고 구간(SpliceDuration)을 맞추고, MP4는 본편과 해상도를 맞춰두는 게 좋습니다.

트러블슈팅

증상 원인 조치
마커가 스트림에 — 인코더에서 안 보냄 Plan으로 주입해서 마커 구간만 먼저 확인
마커가 스트림에 — SpliceDuration을 초 단위로 넣음 tick 환산 (초 × 90000)
마커는 오는데 광고 — AdTriggers에 해당 타입이 — 트리거 값 확인
마커는 오는데 광고 — DeliveryRestrictions 불일치 4(Both)로 넓혀보기
마커는 오는데 ADS 로그가 비어 있음 계정에 SSAI 미개통 (유력) 콘솔에서 SSAI 사용 신청 확인
광고 대체 구간 ADS 응답 ADS URL과 응답 확인
광고 대체 구간 슬레이트 SlateAd URL 접근성 확인
광고가 엉뚱한 지점에 붙음 PDT 꺼져 있음 PdtInsertion = OPEN
광고 구간에서 튐 슬레이트 해상도 불일치 해상도와 프레임레이트 통일
마커가 사라짐 StreamLive가 통과 안 시킴 Behavior = PASSTHROUGH
재생 자체가 안 됨 CDN 도메인 문제 CDN 문서 참고

유의 사항

Modify 호출 후 Describe로 적용된 설정을 확인합니다.

StreamPackage 채널을 삭제했다가 다시 만들면 엔드포인트 URL의 해시가 바뀝니다. 문서나 앱에 재생 주소를 하드코딩해 뒀다면 다 깨집니다. 테스트용 채널을 지울 때 주의하세요.

테스트 후 정리

LANGUAGE
# StreamLive 채널 정지
tccli mdl StopStreamLiveChannel --region ap-seoul --Id 6AA6****5542
# StreamLink Flow 정지
tccli mdc StopStreamLinkFlow --region ap-seoul --FlowId 82iv****74eg

RUNNING 상태인 동안 계속 과금됩니다.