선형 DAI 스트림의 시간이 지정된 메타데이터 처리

양방향 미디어 광고 (IMA) 동적 광고 삽입 SDK (DAI)는 스트림의 미디어 세그먼트에 삽입된 메타데이터 정보 (대역 내 메타데이터), 스트리밍 매니페스트 파일 (매니페스트 내 메타데이터)에서 위치 및 클라이언트 측 광고 이벤트를 지원합니다. 메타데이터는 DAI 스트림에서 사용할 수 있습니다. 여러 형식으로 표시할 수 있습니다. IMA DAI SDK는 단일 API를 통해 모든 메타데이터 형식을 처리합니다.

앱은 메타데이터를 캡처하여 IMA DAI SDK에 전달해야 합니다. SDK는 이 정보를 전달하는 StreamManager.onMessage() 메서드를 제공합니다. 이 메서드는 roVideo 포트에서 제공하는 msg 객체 형식으로 메타데이터를 전달합니다. 이러한 객체는 광고 이벤트의 타이밍을 설정합니다. 단일 인수를 사용합니다.

  • msg: roVideo 포트에서 제공하는 메시지 유형 객체입니다.

메타데이터 샘플 코드

다음은 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 시작 가이드를 참조하세요. 이 이벤트 리스너와 스트림 시작 섹션 메타데이터 처리 루프가 포함되어 있습니다.

HLS CMAF 스트림

'공통 미디어 애플리케이션 프레임워크'(CMAF)를 사용하는 선형 DAI HLS 스트림은 CMAF를 통한 ID3 표준에 따라 인밴드 eMSGv1 박스를 통해 시간 표시 메타데이터를 전달합니다. 이러한 eMSG 상자는 각 미디어 세그먼트의 시작 부분에 삽입되며, 각 ID3 eMSG에는 스트림의 마지막 중단 시점을 기준으로 한 PTS입니다.

IMA Roku의 경우 모든 HLS CMAF 스트림은 eMSGv0 형식을 사용하여 대역 내 ID3 데이터를 전송합니다. IMA는 eMSGv0 형식으로 제공한 정보와 정보를 결합합니다. 동영상 객체를 생성합니다.

HLS CMAF 스트림 ID3 이벤트의 적절한 파싱을 사용 설정하려면 동영상 객체를 사용하여 StreamRequest.videoObject