SDK Chèn quảng cáo động (DAI) của Quảng cáo trên phương tiện 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 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 luồng (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ó sẵn từ luồng DAI ở nhiều định dạng, tuỳ thuộc vào loại luồng đang phát. SDK IMA DAI 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 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 sẽ được SDK IMA DAI xử lý để thiết lập thời gian cho các sự kiện quảng cáo. Phương thức này nhận một đối số duy nhất:
msg: một đối tượng thuộc loại msg do cổng roVideo cung cấp.
Mã mẫu siêu dữ liệu
Sau đâ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, hãy xem hướng dẫn bắt đầu sử dụng IMA Roku. Trình nghe sự kiện và phần bắt đầu luồng của hướng dẫn này chứa vòng lặp xử lý siêu dữ liệu.
Luồng CMAF HLS
Các luồng DAI HLS 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 tính 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 phương tiện, trong đó mỗi eMSG ID3 chứa một PTS tương ứng với lần gián đoạn cuối cùng trong luồng.
Đối với IMA Roku, tất cả cá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.
Để bật tính năng phân tích cú pháp đúng cách cho 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 StreamRequest.videoObject.