양방향 미디어 광고 (IMA) 동적 광고 삽입 SDK (DAI)는 스트림의 미디어 세그먼트 (대역 내 메타데이터) 또는 스트리밍 매니페스트 파일 (매니페스트 내 메타데이터)에 삽입된 메타데이터 정보를 사용하여 시청자의 위치와 클라이언트 측 광고 이벤트를 추적합니다. 메타데이터는 재생 중인 스트림의 유형에 따라 DAI 스트림에서 다양한 형식으로 사용할 수 있습니다. Roku IMA SDK는 단일 API를 통해 모든 메타데이터 형식을 처리합니다.
앱은 메타데이터를 캡처하여 IMA DAI SDK에 전달해야 합니다. SDK는 이 정보를 전달하는 StreamManager.onMessage()
메서드를 제공합니다. 이 메서드는 roVideo 포트에서 제공하는 msg
객체 형식으로 메타데이터를 전달합니다. 그런 다음 IMA DAI SDK에서 이러한 객체를 처리하여 광고 이벤트 타이밍을 설정합니다. 단일 인수를 사용합니다.
msg
: roVideo 포트에서 제공하는 메시지 유형 객체입니다.
메타데이터 샘플 코드
다음은 roVideo 포트에서 메타데이터를 처리하고 StreamManager.onMessage()
를 통해 IMA 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 시작 가이드를 참고하세요. 가이드의 이벤트 리스너 및 스트림 시작 섹션에는 메타데이터 처리 루프가 포함되어 있습니다.
HLS CMAF 스트림
CMAF (Common Media Application Framework)를 사용하는 선형 DAI HLS 스트림은 ID3~CMAF 표준에 따라 대역 내 eMSGv1 박스를 통해 시간 지정된 메타데이터를 전달합니다. 이러한 eMSG 박스가 각 미디어 세그먼트의 시작 부분에 삽입되고 각 ID3 eMSG에는 스트림의 마지막 불연속성에 대한 PTS가 포함됩니다.
IMA Roku의 경우 모든 HLS CMAF 스트림은 eMSGv0 형식을 사용하여 대역 내 ID3 데이터를 전송합니다. IMA는 eMSGv0 형식에서 제공하는 정보를 동영상 객체의 정보와 결합합니다.
HLS CMAF 스트림 ID3 이벤트의 적절한 파싱을 사용 설정하려면 StreamRequest.videoObject
를 사용하여 스트림 요청에서 동영상 객체를 전송해야 합니다.