Chọn giải pháp DAI mà bạn quan tâm
DAI trọn gói
Hướng dẫn này minh hoạ cách phát một luồng DAI bằng IMA CAF DAI SDK. Nếu bạn muốn xem hoặc làm theo một mẫu tích hợp đã hoàn tất, hãy tải ví dụ xuống.
Trước khi sử dụng hướng dẫn này, hãy nhớ tìm hiểu kỹ giao thức Web Receiver của Khung ứng dụng Chromecast. Hướng dẫn này giả định rằng bạn đã quen thuộc với các khái niệm cơ bản về bộ nhận CAF, chẳng hạn như trình chặn thông báo và các đối tượng mediaInformation
, cũng như quen thuộc với việc sử dụng Công cụ điều khiển và lệnh truyền để mô phỏng bộ gửi CAF.
Để sử dụng DAI của IMA, bạn phải có tài khoản Ad Manager 360. Nếu bạn có tài khoản Ad Manager, hãy liên hệ với người quản lý tài khoản của bạn để biết thêm thông tin chi tiết. Để biết thông tin về cách đăng ký Ad Manager, hãy truy cập vào Trung tâm trợ giúp của Ad Manager.
Để biết thông tin về cách tích hợp với các nền tảng khác hoặc cách sử dụng SDK phía máy khách IMA, hãy xem SDK quảng cáo trên phương tiện truyền thông tương tác.
Tổng quan về CAF DAI
Việc triển khai DAI bằng IMA CAF DAI SDK bao gồm 2 thành phần chính như minh hoạ trong hướng dẫn này:
StreamRequest
: Một đối tượng xác định yêu cầu phát trực tuyến đến các máy chủ quảng cáo của Google. Yêu cầu phát trực tuyến có 2 loại chính:LiveStreamRequest
: chỉ định Khoá thành phần, cũng như các tham số không bắt buộc khác.VODStreamRequest
: Chỉ định Mã nguồn nội dung, Mã video, cũng như các tham số không bắt buộc khác.- Cả hai loại yêu cầu đều có thể bao gồm một khoá API (không bắt buộc) cần thiết để truy cập vào các luồng được chỉ định và một mã mạng Google Ad Manager để IMA SDK xử lý mã nhận dạng quảng cáo như được chỉ định trong phần cài đặt Google Ad Manager.
StreamManager
: Một đối tượng xử lý hoạt động giao tiếp giữa luồng video và IMA DAI SDK, chẳng hạn như kích hoạt ping theo dõi và chuyển tiếp các sự kiện luồng đến nhà xuất bản.
Điều kiện tiên quyết
- Tài khoản Cast Developer Console có thiết bị kiểm thử đã đăng ký.
- Một ứng dụng web receiver được lưu trữ đã đăng ký với Cast Developer Console và có thể được sửa đổi để lưu trữ mã do hướng dẫn này cung cấp.
- Một ứng dụng gửi được định cấu hình để sử dụng ứng dụng nhận trên web của bạn. Ví dụ này sử dụng Công cụ điều khiển và truyền lệnh làm ứng dụng gửi.
Định cấu hình các đối tượng MediaInfo của người gửi
Trước tiên, hãy định cấu hình đối tượng MediaInfo của ứng dụng người gửi để thêm các trường sau:
contentId
|
Giá trị nhận dạng duy nhất của mục nội dung nghe nhìn này | |
contentUrl
|
URL của luồng dự phòng cần tải nếu DAI StreamRequest không thành công vì bất kỳ lý do nào | |
streamType
|
Đối với luồng phát trực tiếp, bạn nên đặt giá trị này thành "LIVE". Đối với luồng VOD, bạn nên đặt giá trị này thành "BUFFERED" | |
customData
|
assetKey
|
Chỉ sự kiện phát trực tiếp. Xác định sự kiện phát trực tiếp cần tải |
contentSourceId
|
Chỉ luồng VOD. Xác định nguồn cấp dữ liệu đa phương tiện chứa luồng được yêu cầu. | |
videoId
|
Chỉ luồng VOD. Xác định luồng được yêu cầu trong nguồn cấp dữ liệu đa phương tiện đã chỉ định. | |
networkCode
|
(Không bắt buộc) Mã mạng Google Ad Manager của bạn. | |
ApiKey
|
Khoá API không bắt buộc có thể cần thiết để truy xuất URL của luồng phát từ IMA DAI SDK | |
senderCanSkip
|
Giá trị boolean để cho receiver biết liệu thiết bị gửi có khả năng hiển thị nút bỏ qua hay không, cho phép hỗ trợ quảng cáo có thể bỏ qua |
Để định cấu hình các giá trị này trong công cụ điều khiển và truyền lệnh truyền, hãy nhấp vào thẻ Load
Media (Tải nội dung nghe nhìn) và đặt loại yêu cầu tải tuỳ chỉnh thành LOAD
. Sau đó, hãy thay thế dữ liệu JSON trong vùng văn bản bằng một trong các đối tượng JSON sau:
LIVE
{
"media": {
"contentId": "bbb",
"contentUrl": "https://storage.googleapis.com/interactive-media-ads/media/bbb.m3u8",
"streamType": "LIVE",
"customData": {
"assetKey": "c-rArva4ShKVIAkNfy6HUQ",
"networkCode": "21775744923",
"ApiKey": "",
"senderCanSkip": true
}
},
"credentials": "testCredentials"
}
VOD
{
"media": {
"contentId": "tos",
"contentUrl": "https://storage.googleapis.com/interactive-media-ads/media/tos.m3u8",
"streamType": "BUFFERED",
"customData": {
"contentSourceId": "2548831",
"videoId": "tears-of-steel",
"networkCode": "21775744923",
"ApiKey": "",
"senderCanSkip": true
}
},
"credentials": "testCredentials"
}
Bạn có thể gửi đối tượng yêu cầu tải tuỳ chỉnh này đến receiver để kiểm thử các bước sau.
Tạo một trình nhận CAF cơ bản
Làm theo Hướng dẫn cơ bản về bộ nhận CAF SDK, hãy tạo một bộ nhận cơ bản trên web.
Mã của bộ nhận sẽ có dạng như sau:
<html>
<head>
<script type="text/javascript"
src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js">
</script>
</head>
<body>
<cast-media-player></cast-media-player>
<script>
cast.framework.CastReceiverContext.getInstance().start();
</script>
</body>
</html>
Nhập IMA DAI SDK và nhận Trình quản lý trình phát
Thêm thẻ tập lệnh để nhập IMA DAI SDK cho CAF vào trình nhận web của bạn, ngay sau khi tập lệnh tải CAF. CAF DAI SDK là một SDK không ngừng phát triển, vì vậy bạn không cần đặt một phiên bản cụ thể. Sau đó, trong thẻ tập lệnh tiếp theo, hãy lưu trữ ngữ cảnh của receiver và trình quản lý trình phát dưới dạng hằng số trước khi bắt đầu receiver.
<html>
<head>
<script type="text/javascript"
src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>
<script src="//imasdk.googleapis.com/js/sdkloader/cast_dai.js"></script>
</head>
<body>
<cast-media-player></cast-media-player>
<script>
const castContext = cast.framework.CastReceiverContext.getInstance();
const playerManager = castContext.getPlayerManager();
castContext.start();
</script>
</body>
</html>
Khởi chạy Trình quản lý luồng phát IMA
Khởi chạy StreamManager của CAF DAI SDK.
<html>
<head>
<script type="text/javascript"
src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>
<script src="//imasdk.googleapis.com/js/sdkloader/cast_dai.js"></script>
</head>
<body>
<cast-media-player></cast-media-player>
<script>
const castContext = cast.framework.CastReceiverContext.getInstance();
const playerManager = castContext.getPlayerManager();
const streamManager = new google.ima.cast.dai.api.StreamManager();
castContext.start();
</script>
</body>
</html>
Tạo trình chặn thông báo tải
CAF DAI SDK sử dụng trình chặn thông báo tải CAF để tạo yêu cầu phát trực tiếp và thay thế URL nội dung bằng luồng DAI cuối cùng.
Trình chặn thông báo gọi streamManager.requestStream() để xử lý việc thiết lập các điểm chèn quảng cáo, yêu cầu luồng phát và thay thế contentURL
hiện có.
Chỉ có thể có một trình chặn thông báo tải, vì vậy, nếu ứng dụng của bạn yêu cầu sử dụng trình chặn này, bạn cần kết hợp mọi hàm tuỳ chỉnh vào cùng một lệnh gọi lại.
<html>
<head>
<script type="text/javascript"
src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>
<script src="//imasdk.googleapis.com/js/sdkloader/cast_dai.js"></script>
</head>
<body>
<cast-media-player></cast-media-player>
<script>
const castContext = cast.framework.CastReceiverContext.getInstance();
const playerManager = castContext.getPlayerManager();
const streamManager = new google.ima.cast.dai.api.StreamManager();
const getStreamRequest = (request) => null;
playerManager.setMessageInterceptor(
cast.framework.messages.MessageType.LOAD, (request) => {
return streamManager.requestStream(request, getStreamRequest(request))
.then((request) => {
this.broadcast('Stream request successful.');
return Promise.resolve(request);
})
.catch((error) => {
this.broadcast('Stream request failed.');
return Promise.resolve(request);
});
});
castContext.start();
</script>
</body>
</html>
Tạo yêu cầu phát trực tiếp
Để hoàn tất việc tích hợp CAF DAI, bạn cần tạo yêu cầu về luồng phát bằng dữ liệu có trong đối tượng mediaInfo
của người gửi.
<html>
<head>
<script type="text/javascript"
src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>
<script src="//imasdk.googleapis.com/js/sdkloader/cast_dai.js"></script>
</head>
<body>
<cast-media-player></cast-media-player>
<script>
const castContext = cast.framework.CastReceiverContext.getInstance();
const playerManager = castContext.getPlayerManager();
const streamManager = new google.ima.cast.dai.api.StreamManager();
const getStreamRequest = (request) => {
const imaRequestData = request.media.customData;
let streamRequest = null;
if (imaRequestData.assetKey) {
// Live stream
streamRequest = new google.ima.cast.dai.api.LiveStreamRequest();
streamRequest.assetKey = imaRequestData.assetKey;
} else if (imaRequestData.contentSourceId) {
// VOD stream
streamRequest = new google.ima.cast.dai.api.VODStreamRequest();
streamRequest.contentSourceId = imaRequestData.contentSourceId;
streamRequest.videoId = imaRequestData.videoId;
}
if (streamRequest && imaRequestData.networkCode) {
streamRequest.networkCode = imaRequestData.networkCode;
}
if (streamRequest && imaRequestData.ApiKey) {
streamRequest.ApiKey = imaRequestData.ApiKey;
}
if (streamRequest && imaRequestData.senderCanSkip) {
streamRequest.senderCanSkip = imaRequestData.senderCanSkip;
}
return streamRequest;
};
playerManager.setMessageInterceptor(
cast.framework.messages.MessageType.LOAD, (request) => {
return streamManager.requestStream(request, getStreamRequest(request))
.then((request) => {
return Promise.resolve(request);
})
.catch((error) => {
this.broadcast('Stream request failed.');
return Promise.resolve(request);
});
});
castContext.start();
</script>
</body>
</html>
Giờ đây, bạn có thể yêu cầu và phát các luồng DAI bằng CAF DAI SDK của Google. Để tìm hiểu về các tính năng nâng cao khác của SDK, hãy xem các hướng dẫn khác hoặc tải các ứng dụng mẫu của chúng tôi xuống.