인터랙티브 미디어 광고 (IMA) 동적 광고 삽입 SDK (DAI)는 스트림의 미디어 세그먼트 (인밴드 메타데이터) 또는 스트리밍 매니페스트 파일 (인매니페스트 메타데이터)에 삽입된 메타데이터 정보를 사용하여 시청자의 위치와 클라이언트 측 광고 이벤트를 추적합니다. 메타데이터는 재생되는 스트림 유형에 따라 다양한 형식으로 DAI 스트림에서 사용할 수 있습니다. IMA DAI SDK는 단일 API를 통해 모든 메타데이터 형식을 처리합니다.
앱은 메타데이터를 캡처하여 IMA DAI SDK로 전달해야 합니다. SDK는 이 정보를 전달하는
StreamManager.onMessage()
메서드를 제공합니다. 이 메서드는 roVideo 포트에서 제공하는 msg 객체 형식으로 메타데이터를 전달합니다. 이러한 객체는 IMA DAI SDK에서 처리되어 광고 이벤트의 타이밍을 설정합니다. 단일 인수를 사용합니다.
msg: roVideo 포트에서 제공하는 msg 유형 객체입니다.
메타데이터 샘플 코드
다음은 roVideo 포트의 메타데이터를 처리하고 StreamManager.onMessage()를 통해 IMA DAI SDK로 전달하는 방법을 보여주는 예입니다.
Sub runLoop()
' Forward all timed metadata events to IMA.
m.top.video.timedMetaDataSelectionKeys = ["*"]
' Cycle through all the fields and set listeners.
' IMPORTANT: Failure to listen to the position and timedmetadata fields could
' result in ad impressions not being reported.
m.port = CreateObject("roMessagePort")
fields = m.top.video.getFields()
for each field in fields
m.top.video.observeField(field, m.port)
end for
while True
msg = wait(1000, m.port)
if m.top.video = invalid
print "exiting"
exit while
end if
m.streamManager.onMessage(msg)
currentTime = m.top.video.position
If currentTime > 3 And not m.top.adPlaying
m.top.video.enableTrickPlay = true
End If
end while
End Sub
루프 처리 스트림 메타데이터 를 앱에 통합하는 방법에 관한 자세한 내용은 IMA Roku 시작 가이드를 참고하세요. 가이드의 이벤트 리스너 및 스트림 시작 섹션 에는 메타데이터 처리 루프가 포함되어 있습니다.
스트림 형식 및 컨테이너 요구사항
Roku에서 클라이언트 측 광고 추적을 사용하려면 지원되는 컨테이너 형식으로 패키징된 DAI 스트림의 미디어 세그먼트를 사용해야 합니다. 이 프로세스를 통해 Roku OS는 시간 지정 메타데이터를 추출할 수 있습니다.
Roku 미디어 플레이어는 다음 컨테이너 형식에서 인밴드 ID3 메타데이터 추출을 지원합니다.
- MPEG-2 전송 스트림 (TS)
- 분할된 MP4
- 일반 미디어 애플리케이션 형식 (CMAF)
원시 고급 오디오 코딩 (AAC) 세그먼트와 같은 원시 기본 오디오 스트림은 Roku OS에서 시간 지정 메타데이터에 지원되지 않습니다. Roku 미디어 플레이어는 원시 AAC 오디오 스트림에서 ID3 시간 지정 메타데이터를 추출할 수 없으므로 IMA SDK가 메타데이터 이벤트를 수신하고 광고 노출 또는 추적 비콘을 전송할 수 없습니다. 모든 오디오 전용 및 오디오 렌디션 스트림의 경우 TS, MP4 또는 CMAF와 같은 지원되는 컨테이너 형식 패키징이 있는 스트림을 사용해야 합니다.
HLS CMAF 스트림
일반 미디어 애플리케이션 프레임워크 (CMAF)를 사용하는 선형 DAI HLS 스트림은 시간 지정 메타데이터를 ID3을 따르는 인밴드 eMSGv1 상자를 통해 CMAF 표준을 통해 전달합니다. 이러한 eMSG 상자는 각 미디어 세그먼트의 시작 부분에 삽입되며 각 ID3 eMSG에는 스트림의 마지막 불연속성을 기준으로 하는 PTS가 포함되어 있습니다.
IMA Roku의 경우 모든 HLS CMAF 스트림은 eMSGv0 형식을 사용하여 인밴드 ID3 데이터를 전송합니다. IMA는 eMSGv0 형식에서 제공하는 정보를 동영상 객체의 정보와 결합합니다.
HLS CMAF 스트림 ID3 이벤트를 올바르게 파싱하려면 스트림 요청에서
동영상 객체를
StreamRequest.videoObject를 사용하여 전송해야 합니다.