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

Chọn nền tảng: HTML5 Roku

SDK Chèn quảng cáo động (DAI) của Quảng cáo tương tác trên phương tiện truyền thông (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 nghe nhìn của luồng phát (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 vị trí của người xem và các sự kiện quảng cáo phía máy khách. Siêu dữ liệu có trong luồng DAI ở nhiều định dạng, tuỳ thuộc vào loại luồng đang phát. SDK DAI của IMA xử lý tất cả các đị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 thu thập siêu dữ liệu và chuyển tiếp siêu dữ liệu đó đến SDK DAI của IMA. 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ưới dạng đối tượng msg do cổng roVideo cung cấp. Sau đó, các đối tượng này sẽ được SDK IMA DAI xử lý để thiết lập thời gian cho các sự kiện quảng cáo. Hàm này nhận một đối số duy nhất:

  • msg: đối tượng loại msg 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à truyền siêu dữ liệu đó đế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 luồng xử lý vòng lặp vào ứng dụng của bạn, hãy xem hướng dẫn bắt đầu sử dụng IMA Roku. Phần trình nghe sự kiện và phần bắt đầu luồng của hướng dẫn chứa vòng lặp xử lý siêu dữ liệu.

Luồng CMAF HLS

Các luồng HLS DAI tuyến tính sử dụng Khung ứng dụng đa phương tiện phổ biến (CMAF) truyền siêu dữ liệu có dấu thời gian thông qua các hộp eMSGv1 trong băng tần theo tiêu chuẩn ID3 thông qua CMAF. Các hộp eMSG này được nhúng ở đầu mỗi phân đoạn nội dung nghe nhìn, trong đó mỗi eMSG ID3 chứa một PTS tương ứng với điểm gián đoạn cuối cùng trong luồng.

Đối với IMA Roku, tất cả luồng CMAF HLS đều gửi dữ liệu ID3 trong băng tần bằ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 từ đối tượng video.

Để cho phép phân tích cú pháp đúng các sự kiện ID3 của luồng CMAF HLS, bạn phải gửi đối tượng video trong yêu cầu luồng bằng cách sử dụng StreamRequest.videoObject.