Bắt đầu sử dụng SDK IMA DAI

Chọn giải pháp DAI mà bạn quan tâm

DAI đầy đủ dịch vụ

Hướng dẫn này minh hoạ cách phát luồng DAI, bằng cách sử dụng SDK IMA CAF DAI. Nếu bạn muốn xem hoặc làm theo quy trình tích hợp mẫu đã 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ớ làm quen với giao thức Bộ thu web của Khung ứng dụng Chromecast. Hướng dẫn này giả định mức độ quen thuộc cơ bản với các khái niệm của receiver CAF, chẳng hạn như trình chặn tin nhắn và đối tượng mediaInformation, cũng như mức độ quen thuộc với việc sử dụng công cụ Cast Command và Control để mô phỏng người gửi CAF.

Để sử dụng tính năng IMA DAI, 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 để biết thêm thông tin. Để 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 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 bài viết 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 SDK IMA CAF DAI bao gồm hai thành phần chính như được minh hoạ trong hướng dẫn này:

  • StreamRequest: Đối tượng xác định yêu cầu truyền đến các máy chủ quảng cáo của Google. Yêu cầu phát trực tiếp có hai loại chính:

    • LiveStreamRequest: chỉ định Khoá tài sảnkhoá API không bắt buộc, cũng như các thông số không bắt buộc khác.
    • VODStreamRequest: Chỉ định Mã nguồn nội dung, Mã videokhoá API không bắt buộc, cũng như các tham số không bắt buộc khác.
  • StreamManager: Đối tượng xử lý hoạt động giao tiếp giữa luồng video và SDK IMA DAI, 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ị thử nghiệm đã đăng ký.
  • Một ứng dụng trình thu web được lưu trữ được đăng ký với Cast Developer Console của bạn và có thể sửa đổi được để 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 nội dung trên web. Ví dụ này sử dụng công cụ Truyền và điều khiển làm người gửi.

Định cấu hình đố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 để bao gồm các trường sau:

contentId Giá trị nhận dạng duy nhất cho mục nội dung đa phương tiện này
contentUrl URL luồng dự phòng sẽ tải nếu StreamRequest trong DAI không thành công vì bất kỳ lý do nào
streamType Đối với sự kiện phát trực tiếp, bạn phải đặt giá trị này thành "LIVE". Đối với sự kiện phát trực tiếp VOD, giá trị này phải được đặt thành "BUFFERED"
customData assetKey Chỉ áp dụng cho sự kiện phát trực tiếp. Xác định sự kiện phát trực tiếp sẽ tải
contentSourceId Chỉ phát trực tuyến VOD. Xác định nguồn cấp dữ liệu nội dung nghe nhìn chứa luồng được yêu cầu.
videoId Chỉ phát trực tuyến VOD. Xác định luồng được yêu cầu trong nguồn cấp dữ liệu nội dung nghe nhìn được chỉ định.
ApiKey Bạn có thể cần một khóa API không bắt buộc để truy xuất URL luồng từ SDK IMA DAI
senderCanSkip Giá trị boolean để cho người nhận 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à 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:

TRỰC TIẾP

{
  "media": {
    "contentId": "bbb",
    "contentUrl": "https://storage.googleapis.com/interactive-media-ads/media/bbb.m3u8",
    "streamType": "LIVE",
    "customData": {
      "assetKey": "sN_IYUG8STe1ZzhIIE_ksA",
      "ApiKey": "",
      "senderCanSkip": true
    }
  },
  "credentials": "testCredentials"
}

Video theo yêu cầu

{
  "media": {
    "contentId": "tos",
    "contentUrl": "https://storage.googleapis.com/interactive-media-ads/media/tos.m3u8",
    "streamType": "BUFFERED",
    "customData": {
      "contentSourceId": "2548831",
      "videoId": "tears-of-steel",
      "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 dịch vụ nhận để kiểm thử các bước sau.

Tạo bộ nhận CAF cơ bản

Làm theo Hướng dẫn dành cho bộ thu cơ bản của SDK CAF, tạo một bộ thu web cơ bản.

Mã của receiver 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 SDK IMA DAI và tải Trình quản lý trình phát

Thêm thẻ tập lệnh để nhập SDK IMA DAI cho CAF vào bộ thu web của bạn, ngay sau khi tập lệnh tải CAF. SDK DAI CAF có thể dùng lâu dài, vì vậy, bạn không cần phải đặt một phiên bản cụ thể. Khi đó, trong thẻ tập lệnh tiếp theo, hãy lưu trữ ngữ cảnh 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 IMA

Khởi chạy Trình quản lý luồng của SDK CAF DAI.

<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 tải tin nhắn

SDK DAI CAF sử dụng trình chặn thông báo tải CAF để tạo yêu cầu phát trực tuyến 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 đặt điểm chèn quảng cáo, yêu cầu luồng 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, 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 luồng

Để hoàn tất việc tích hợp CAF DAI, bạn cần tạo yêu cầu luồng bằng cách sử dụng dữ liệu có trong đối tượng mediaInfo từ 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.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 luồng DAI bằng SDK CAF DAI 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 bộ thu mẫu của chúng tôi.