自定义网络接收器

开始 - 用于创建基本自定义网络接收器的代码很简单。请直接跳到注册 Web 接收器应用页面,然后创建基本的 Web 接收器应用

Web 接收器 SDK 使用内置的媒体播放器来提供流畅的播放体验。它可为 Google 助理提供开箱即用型支持,并可在所有发送者和触摸设备上自动支持 Cast 专用功能。随着新功能的发布,我们会继续支持这些功能,但不会对发件人进行其他更改。

自定义 Web 接收器是一个自定义的 HTML5 应用,必须托管才能在支持 Cast 的设备上显示您的内容。您可能需要创建自定义 Web 接收器,具体取决于您的业务需求。如需帮助决定使用哪种接收器类型,请参阅选择 Web 接收器指南

Google Web Receiver SDK

您的 Web 接收器应用使用以下引用访问 Web Receiver API:

<script src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>

网址协议的最佳做法:请注意,上述网址并未指定“http:”或“https:”协议。如果在寻找 cast_receiver_framework.js 资源时省略这些协议,系统将使用托管 Web 接收器应用的服务器来提取此资源。这意味着,在 HTTP(用于开发)和 HTTPS(用于生产环境)之间切换的过程是透明的,无需更改代码。(已发布的网络接收器应用必须托管在支持 TLS 的服务器上。)

SDK 预览版

Cast Web 接收器 SDK 的预发布版本也可用于测试非正式版应用。如需详细了解 SDK 预览网址,请访问 Google Cast Web Receiver SDK 预览网址

应用生命周期

网络接收器应用生命周期从网络接收器加载到 Cast 设备开始,然后继续运行到应用被关闭且 Cast 设备恢复到其默认状态的时间点。

在 Web 接收器应用的生命周期中,消息会在 Web 接收器和任何连接的发送者应用之间交换。发送者应用将向 Google Cast 设备发送初始消息,以请求使用特定应用 ID 创建会话。这将开启网络接收器的生命周期,因为 Google Cast 设备将尝试加载网络接收器应用。假设没有网络问题,网络接收器应用将使用与应用 ID 相关联的已解析网址从网络下载。加载后,网络接收器应用将执行其设置操作,并表明已准备好处理来自任何已连接的发送者应用的消息。

在以下情况下,网络接收器应用可能会拆解(结束当前生命周期并关闭应用):

  • 网络接收器应用从上次连接的发送者收到结束应用会话的明确消息。
  • 网络接收器应用已空闲一段时间,没有任何连接的发送者,因此决定结束应用会话。
  • 开始了其他投射会话。
  • 网络接收器在正常生命周期内遇到致命错误。

Web 接收器 SDK 会按照我们的用户体验指南处理所有常见情况。

主要课程

Web Receiver SDK 框架有 2 个主要类:

  • cast.framework.CastReceiverContext - 管理整个框架并加载任何必要的库。借助此对象,您可以:

    • 设置应用配置选项
    • 处理系统事件(例如发送者连接或断开连接)
    • 创建自定义渠道
    • 开始投射通信
  • cast.framework.PlayerManager - 管理媒体播放。它根据发送者的请求处理底层播放器和媒体元素。借助此对象,您可以:

    • 处理播放操作
    • 处理来自发送者的播放相关请求
    • 处理与播放相关的事件

注册 Web 接收器应用

在开发 Web 接收器应用之前,您需要向 Google Cast SDK Developer Console 注册您的 Web 接收器应用。如需了解详情,请参阅注册。所有 Web 接收器应用都要求发送者应用向应用 ID 提供其通过发送者 API 发送到网络接收器的命令消息。注册 Web 接收器应用后,您会收到要添加到发送者的 API 调用中的应用 ID。

创建基本的 Web Receiver 应用

以下是未自定义的基本 Web 接收器应用的主要结构:

  1. 用于表示媒体播放器的 cast-media-player HTML 元素。
  2. 用于加载网络接收器框架的脚本 HTML 元素。
  3. 调用 start() 以启动 Web 接收器应用,无任何选项。

以下是使用 Cast 应用框架且无需进行任何自定义的网络接收器应用的最低代码。您可以原样复制此脚本并将其粘贴到您的应用中,以创建 Web 接收器应用。

<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>

此时,用户可以打开发送者应用,连接到投射设备,然后导航到媒体并按“播放”,这会让网络接收器将媒体流式传输到电视上,以供用户观看。

将此基本网络接收器与自定义接收器应用进行比较。

媒体和播放器

Cast 框架提供由 cast-media-player HTML 元素表示的内置媒体播放器。此媒体播放器支持播放 MPEG-DASH、HLS 和 Smooth Streaming 等流式传输协议。

支持的媒体中列出了一组受支持的媒体编解码器和容器。通过 Cast 消息功能,开发者可以支持由发送者发起的操作列表(例如加载、播放、暂停和搜索),其中 Cast SDK 会处理与媒体的互动。如需查看受支持操作的列表,请参阅适用于您的应用的平台的发送者 API 参考文档:Android 发送者中的 RemoteMediaClientiOS 发送者中的 GCKMediaControlChannel网络发送者中的 Media

跨源资源共享

Google Cast 完全支持跨域资源共享 (CORS)。与大多数基于文件的协议不同,流式传输协议使用 XMLHttpRequest 以异步方式访问内容。在 CORS 环境中,这些请求会防止来自资源所在服务器的 CORS 标头的不当访问。也就是说,您内容的服务器在哪些位置可以加入相应内容会有自己的决定。大多数现代浏览器都完全支持 CORS。iOS 和 Android 设备会在较低级别访问内容,不会查看这些标头。这通常是开发者希望使用流式传输内容时第一个出现的问题。如需了解详情,请参阅跨域资源共享