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

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 luồng DAI bằng SDK DAI CAF IMA. Nếu bạn muốn xem hoặc làm theo một ví dụ 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ớ làm quen với giao thức Trình thu web 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ề trình nhận CAF, chẳng hạn như trình chặn thông báo và đối tượng mediaInformation, cũng như quen thuộc với cách sử dụng Công cụ điều khiển và ra lệnh truyền để mô phỏng trình gửi CAF.

Để sử dụ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 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 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ề DAI của CAF

Việc triển khai DAI bằng SDK DAI IMA CAF bao gồm hai 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 truyền trực tuyến đến máy chủ quảng cáo của Google. Yêu cầu truyền trực tuyến có hai loại chính:

    • LiveStreamRequest: chỉ định Khoá thành phầnkhoá API không bắt buộc, 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ã videokhoá API (không bắt buộc), cũng như các tham số không bắt buộc khác.
  • StreamManager: Một đố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 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ữ đã đăng ký với Bảng điều khiển dành cho nhà phát triển Cast và có thể được sửa đổi để lưu trữ mã do hướng dẫn này cung cấp.
  • Ứng dụng gửi được định cấu hình để sử dụng ứng dụng nhận trên web. Ví dụ này sử dụng Công cụ điều khiển và lệnh truyền làm ứng dụng gửi.

Định cấu hình đối tượng MediaInfo của trình gửi

Trước tiên, hãy định cấu hình đối tượng MediaInfo của ứng dụng gửi để bao gồ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 luồng dự phòng để 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 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 đã yêu cầu trong nguồn cấp dữ liệu nội dung nghe nhìn đã chỉ định.
ApiKey Khoá API không bắt buộc có thể được yêu cầu để truy xuất URL luồng từ SDK IMA DAI
senderCanSkip Giá trị boolean để cho phép trình nhận biết liệu thiết bị gửi có thể 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 đa phương tiện) rồi đặt loại yêu cầu tải tuỳ chỉnh thành LOAD. Sau đó, 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"
}

VOD

{
  "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 trình nhận để kiểm thử các bước sau.

Tạo trình thu nhận CAF cơ bản

Làm theo Hướng dẫn về trình thu phát cơ bản của SDK CAF, hãy tạo một trình thu phát web cơ bản.

Mã của trình 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 SDK IMA DAI và lấy 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, ngay sau khi tập lệnh tải CAF. SDK DAI của CAF là phiên bản ổn định, 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 trình nhận và trình quản lý người chơi dưới dạng hằng số trước khi khởi động trình nhận.

<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 DAI CAF.

<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

SDK DAI của CAF sử dụng trình chặn thông báo tải của 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 khoảng nghỉ 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 truyền trực tuyến

Để hoàn tất việc tích hợp CAF DAI, bạn cần tạo yêu cầu truyền trực tuyến 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.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 trực tuyến DAI bằng SDK DAI CAF của Google. Để tìm hiểu về các tính năng SDK nâng cao hơn, hãy xem các hướng dẫn khác hoặc tải các ứng dụng trình thu nhận mẫu của chúng tôi xuống.