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
.