Xử lý siêu dữ liệu đã hẹn giờ trong luồng DAI tuyến tính

SDK chèn quảng cáo động (DAI) của Quảng cáo trên phương tiện truyền thông tương tác (IMA) dựa vào thông tin siêu dữ liệu được nhúng trong các phân đoạn nội dung đa phương tiện của luồng (siêu dữ liệu trong băng tần), hoặc trong tệp kê khai phát trực tuyến (siêu dữ liệu trong tệp kê khai) để theo dõi lượt xem vị trí và sự kiện quảng cáo phía máy khách. Siêu dữ liệu có trong luồng DAI ở các định dạng khác nhau, tuỳ thuộc vào loại sự kiện phát trực tiếp đang được phát. IMA DAI SDK xử lý mọi định dạng siêu dữ liệu thông qua một API duy nhất.

Ứng dụng của bạn chịu trách nhiệm ghi lại siêu dữ liệu và chuyển tiếp siêu dữ liệu đó đến SDK IMA DAI. SDK cung cấp phương thức StreamManager.onMessage() để truyền thông tin này. Phương thức này chuyển tiếp siêu dữ liệu ở dạng đối tượng msg do cổng roVideo cung cấp. Sau đó, các đối tượng này được xử lý bằng SDK IMA DAI để thiết lập thời gian cho các sự kiện quảng cáo. Phải mất một đối số:

  • msg: đối tượng loại thông báo do cổng roVideo cung cấp.

Mã mẫu siêu dữ liệu

Dưới đây là ví dụ về cách xử lý siêu dữ liệu từ cổng roVideo và hãy truyền tệp đó đến SDK IMA DAI thông qua StreamManager.onMessage().

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

Để biết thêm thông tin về cách kết hợp siêu dữ liệu xử lý vòng lặp cho luồng vào ứng dụng của bạn, hãy xem Hướng dẫn bắt đầu sử dụng IMA Roku. Chiến lược phát hành đĩa đơn trình nghe sự kiện và phần bắt đầu phát trực tuyến của hướng dẫn chứa vòng lặp xử lý siêu dữ liệu.

Luồng CMAF HLS

Luồng HLS cho DAI tuyến tính bằng cách sử dụng thẻ Khung ứng dụng đa phương tiện chung (CMAF) siêu dữ liệu được định thời gian thông qua các hộp eMSGv1 trong băng tần theo sau ID3 đến CMAF. Các hộp eMSG này được nhúng ở đầu mỗi phân đoạn nội dung đa phương tiện, với mỗi eMSG ID3 có chứa một PTS liên quan đến điểm gián đoạn gần đây nhất trong luồng.

Đối với IMA Roku, tất cả các luồng HLS CMAF đều gửi dữ liệu ID3 trong băng tần bằng cách sử dụng định dạng eMSGv0. IMA kết hợp thông tin do định dạng eMSGv0 cung cấp với thông tin khỏi đối tượng video.

Để có thể phân tích cú pháp thích hợp các sự kiện ID3 luồng CMAF HLS, bạn phải gửi trong yêu cầu luồng bằng cách sử dụng StreamRequest.videoObject.