Google Cast SDK 版本说明

对于每个已发布的 Google Cast 新版本,变更如下所述,而且 API 参考文档也会更新。如需了解设计核对清单的更改,请参阅其变更日志

2023 年 3 月 28 日

Android 发送者 21.3.0 和 Android TV 接收器 21.0.0

2022 年 10 月 17 日

Web Receiver 3.0.0105

2022 年 10 月 10 日

Android 发送者 21.2.0

2022 年 8 月 8 日

Android 发送者 21.1.0 和 Android TV 接收器 20.0.0

2022 年 3 月 31 日

Web Receiver 3.0.0103、MPL Player 1.0.0.113

  • 已将默认的 Shaka 播放器版本升级到 3.2.2。
  • 添加了新的 API cast.framework.PlaybackConfig#shakaConfig,以允许替换 Shaka 播放器版本和其他 Shaka 选项。
  • 添加了新的 API cast.framework.ui.Controls#hasMediaControlsOverlay(),用于查询媒体控件叠加层是否在其应用上渲染。
  • 为“顶”用户操作添加了新样式 cast.framework.ui.ControlsButton.LIKE_HEART
  • cast.framework.events.EventType.BREAK_CLIP_ENDED 事件数据的 currentMediaTime 值现在表示事件发生时最新广告插播片段的当前时间。
  • 添加了 cast.framework.PlayerManager#getRawCurrentTimeSec 方法,用于返回媒体元素的媒体时间。
  • 添加了 cast.framework.NetworkRequestInfo#timeoutInterval,用于指定播放器请求的 HTTP 请求超时。
  • 修复了在多路分配 A/V 视频流中解码 CEA 608/708 字幕时 MPL 错误。
  • 修复了 MPL WebVTT 时间戳解析逻辑,以表示小时值超过 2 位数字。

2021 年 12 月 9 日

Android 发送者 21.0.0

  • 通过将 null 安全违规行为视为错误,改进了对 Kotlin 的可为 null 性的支持。Java 开发者不会受到任何影响。如果 Kotlin 开发者的现有代码不为 null 安全,他们可能会遇到新的构建失败问题。

2021 年 11 月 19 日

iOS 发送者 4.7.0

  • 修复了 iOS 发送者对 将 ATV 凭据与 Cast Connect 配合使用的支持。
  • 修复了使用 Xcode 13 进行构建时导航栏具有透明背景的 bug。
  • 修复了通过 GCKUICastButton. 报告的无障碍功能问题
  • 修复了在 Wi-Fi 和移动网络之间切换会断开投放会话(而不是暂停投放)的 bug。
  • 不再支持 iOS10 和 iOS11,因此不再支持 32 位架构。
  • 修复了其他错误并提升了性能。

2021 年 11 月 16 日

Android 发送者 20.1.0

  • 注意:以 Android 12 为目标平台的应用必须更新到 Android 发送者 20.1.0,以防止运行时崩溃。
  • 队列改进
    • MediaQueue 添加了新的 itemsReorderedAtIndexes 回调,可在队列重新排序时调用该方法。
    • 添加了对序列化队列命令的支持。
  • 使 RemoteMediaClient#queueSetRepeatMode 中的 customData 参数可为 null。
  • 远程显示功能已弃用。
  • minSdkVersion 已从 14 提升至 16。

2021 年 10 月 26 日

Web Receiver 3.0.0102

  • 升级到 Shaka Player v3.0.13(该版本可以解决许多之前报告的问题)。
  • 添加了对智能显示屏和 Chromecast 上辅助图片的支持。
  • 修复了由于用于检测重复音轨的逻辑错误,导致无法为缓冲视频流显示字幕的问题。
  • 修复了 LOAD_BY_ENTITY 返回错误时无法触发接收器的错误回调的问题。
  • 添加了对传输流的高效 AAC (HE-AAC) 音频编解码器的支持。
  • 修复了 PlayerManager.getStats() 无法返回正确高度和宽度值的错误。
  • MediaStatus 消息中移除了 VAST 和 VMAP 信息,以避免可能导致发送者与接收者断开连接的溢出。
  • 修复了跳过广告时未向发送者提供 endedReason 的问题。
  • 修复了在播放之前从广告插播队列中移除广告插播时间点的问题。
  • 新增了一个 cast.framework.message.QueueChange#reorderItemIds 字段,其中包含受 QUEUE_CHANGE 操作影响的队列项列表。
  • 减少了在音轨之间切换时 MPL 中的 HLS 直播中的缓冲时间,以便音频和视频保持同步。
  • 修复了使用嵌入式 CEA608/CEA708 字幕解析 MPL 中的 HLS 视频流的问题。
  • 当媒体暂停超过 5 秒时,适用于 Chromecast(支持 Google TV)的媒体控件将隐藏。

2021 年 5 月 26 日

iOS 发送者 4.6.1

  • 修复了允许后台执行的应用在后台投放的会话被暂停的问题。

2021 年 5 月 17 日

iOS 发送者 4.6.0

  • 将“投放”按钮的默认行为更改为始终在连接到 Wi-Fi 时显示。
  • 添加了新的帮助对话框,可在用户点按“投放”按钮后未找到任何设备时显示。
  • 弃用了 GCKUICastButton::triggersDefaultCastDialog API。
  • 为通过新的 API GCKUICastButtonDelegate 实现自定义界面的应用添加了更统一的对话框自定义支持。
  • 为 iOS 13 及更高版本添加了深色模式支持。
  • GCKUIStyleAttributes 添加了广告标记自定义。
  • 向媒体添加了对 hlsSegmentFormathlsVideoSegmentFormat 的支持。
  • 修正了一些错误并提升了性能。

2021 年 4 月 29 日

Web Receiver 3.0.0096

2021 年 4 月 20 日

Android 发送者 20.0.0 和 Android TV 接收器 18.0.0

2021 年 4 月 5 日

Web Receiver 3.0.0095

  • Shaka Player 已升级至 3.0.10。
  • 现在,如果支持 STREAM_TRANSFER 媒体命令,“投放”按钮会默认显示。
  • 在媒体浏览界面的底部添加了建议栏。建议栏包含互动式条状标签,选择这些条状标签后,您可以播放媒体项或滚动浏览可用的媒体项。每个条状标签还会映射到可用的 Google 助理命令。目前,仅当系统语言设置为英语或日语时,系统支持建议条状标签。
  • 修复了 Chromecast with Google TV 中将照片内容投放到默认接收器时出现媒体控件叠加层的错误。
  • 添加了对 TRACKS_CHANGED 事件的支持。

2020 年 12 月 18 日

Web Receiver 3.0.0085

2020 年 12 月 3 日

iOS 发送者 4.5.3

  • 针对 GCKCredentialsData 修复了加载时错误“为架构 arm64 未定义符号”。
  • 修复了 GCKCredentialsData 上发生可为 null 性冲突的编译器错误。
  • 现在,如果 Info.plist 中缺少必需的 Bonjour 服务条目,系统会记录警告消息。

2020 年 11 月 4 日

iOS 发送者 4.5.2

  • 在 CocoaPods 中将 Protobuf 库的最低版本更新为 3.13。使用以前的 Protobuf 版本会导致 SDK 崩溃。
  • 此版本是 CocoaPods 的专用版本,与 v4.5.1 使用相同的二进制文件。

2020 年 10 月 13 日

iOS 发送者 4.5.1

  • 修复了自定义设备选择器的 GCKUICastButton 无法更新以反映正确投放状态的问题。
  • 修复了“返回类型与可为 null 性说明符冲突”警告。

2020 年 9 月 14 日

网络接收器

  • Shaka Player 已升级至 2.5.16。

iOS 发送者 4.5.0

  • 添加了对 iOS 14 中投放设备发现变更的支持,这需要在首次投放时获得明确的用户许可。如需了解详情,请参阅 iOS 14 中的首次投放
  • 将最低 SDK 支持更新为 iOS 10。

2020 年 9 月 8 日

Web 发送者

  • 引入了 Cast Connect,使 Chrome 应用能够投射到 Android TV 应用。如需了解详情,请参阅 Android TV 接收器文档

2020 年 8 月 31 日

网络接收器

  • 添加了对 HLS 中的 #EXT-X-DATERANGE / DASH 中的对 EventStream 的支持。

2020 年 8 月 3 日

iOS 发送者 4.4.8

  • 引入了 Cast Connect,使 iOS 应用能够投放到 Android TV 应用。如需了解详情,请参阅 Android TV 接收器文档

2020 年 7 月 29 日

Android 发送者 19.0.0 和 Android TV 接收器 17.0.0

2020 年 7 月 13 日

网络接收器

  • 改进了默认界面的媒体类别检测(视频和音频)。
  • 添加了对 Shaka Player 的实时绝对时间的支持。
  • 修复了 Nest Hub Max 设备上的音频干扰问题。
  • Shaka Player 已升级至 2.5.12。

2020 年 5 月 4 日

网络接收器

  • 您现在可以配置 Google 助理命令的超时值。
  • 错误 MPL 错误代码现在显示在错误事件中。
  • 现在可以使用 enforceSupportedCommands 标志强制执行受支持的媒体命令。
  • 修复了播放中断期间报告的受支持命令。
  • 修复了与 Google 助理 shuffle 加载请求相关的问题。
  • 修复了 getStats 值中的 bug。

2020 年 3 月 12 日

网络接收器

  • deviceCapabilities 添加了新的设备功能 IS_CBCS_SUPPORTED
  • Shaka Player 已升级至 2.5.8。

2020 年 2 月 27 日

iOS 发送者 v4.4.7

  • 修复了不使用 SDK 中任何界面组件的应用的实体音量按钮。
  • 修复了在反复按前进或后退按钮时展开控制器中的 currentTime 标签存在的问题。
  • 应用进入后台后,系统会保留 GCKMediaQueue 中的媒体内容。
  • 界面自定义更新:
    • 现在,您可以自定义迷你控制器的进度条了。
    • 投放对话框的导航栏和工具栏的背景颜色现在是可自定义的。
    • 修复了 iPhone X 特有的界面问题。
  • 修复了导致停顿和崩溃的几个问题。

2020 年 2 月 24 日

Android 发送者 18.1.0

2020 年 1 月 22 日

网络接收器

  • 修复了更改支持的命令时广播多个媒体状态的问题。

接收器 v2

  • 改进了 VAST 广告的比特率选择。

MPL

2020 年 1 月 7 日

网络接收器

  • cast.framework.events.EmsgEvent 中添加了对 ID3 定时元数据的支持。此外,系统现在还会针对 HLS/CMAF 内容分派 EmsgEvent
  • 修复了在过渡到新媒体会话期间,玩家数据在 PLAYER_LOAD_COMPLETE 期间缺失的问题。
  • 修复了媒体图标与广告插播剪辑编号和倒计时重叠的问题。
  • 修复了第一个广告插播剪辑的倒计时始终显示 0:00 的问题。
  • Shaka Player 已升级至 2.5.6。

Web 接收器 v2

  • deviceCapabilities 添加了新的设备功能 IS_DEVICE_REGISTERED。如果已设置,则 Cast 设备会在 Cast Developer Console 中注册,以进行调试。
  • 修复了加载停滞的问题。
  • 现在,会为队列中的每项失败的内容分别发送媒体错误消息。

MPL

  • 修复了直播收到音频停止消息后音频继续播放一段时间的问题。
  • 修复了在质量级别变更期间显示视频压缩伪像的问题。
  • 修复了使用 *.m4s 片段的 HLS 视频流出现失败的问题。

2019 年 12 月 5 日

Android 发送者 18.0.0

  • 添加了 setMediaSessionEnabled,供开发者启用和停用由 Cast SDK 创建的媒体会话。
  • 更改了在投放会话期间媒体通知的显示方式。如果启用媒体通知,它会在投放会话期间始终显示。 以前,仅当应用在后台运行时,它才会显示。
  • 更改了某些媒体相关类,以实现 Parcelable 接口。

2019 年 11 月 11 日

iOS 发送者 v4.4.6

  • 修复了与支持的最低 iOS 9 版相关的问题。

2019 年 10 月 7 日

网络接收器

  • 公开轨道角色作为轨道元数据的一部分。
  • 已将 Shaka Player 版本升级到 2.5.5。

2019 年 9 月 23 日

iOS 发送者 v4.4.5

  • 改进了对投放设备发现和会话管理的支持。
  • GCKMediaStatus 添加了新的媒体命令。
  • GCKAdBreakStatus 添加了 whenSkippable 属性。
  • 修复了 Google Ads 和 iOS 13 的界面问题。

2019 年 9 月 11 日

Android 发送者 17.1.0

2019 年 9 月 9 日

网络接收器

  • 现在,如果预加载了下一项内容,TV_SHOW 元数据类型的默认播放器中会显示“正在播放”预览。
  • cast.framework.messages 命名空间添加了 ContentRating 类。
  • 更新了默认界面的音频标题,使 metadata.artist 优先于 metadata.albumArtist
  • 添加了对负数 startTime 值的支持,以指明相对于内容结束边缘或直播边缘的开始时间。
  • 媒体浏览:
    • 现在,当用户处于非活动状态 30 秒后,媒体浏览抽屉式导航栏会自动隐藏。
    • 在媒体浏览叠加层的右上角添加了“播放/暂停”按钮和媒体项缩略图。
    • 更新了媒体浏览列表行为。现在,每次设置媒体浏览内容时,水平滚动将重置为最左侧的初始位置。
  • 修复了以下问题:
    • 延迟解析 BasePlayer 结束 promise,以允许触发媒体元素事件。
    • 处理了与广告预加载有关的加载错误。
    • 现在,水印会与其余元数据一起显示。
    • Chromecast 上的默认音频界面遵循 .progressBar 样式。
    • 消除了在加载之前和后续播放媒体项之间出现空闲屏幕画面的问题。
    • 修复了 Dash 内容的进度失速问题。

Web 接收器 v2

  • cast.receiver.media 命名空间添加了 ContentRating 类。
  • 修复了当队列中有多个项时错误数据无法正确传播的错误。

媒体播放器库

  • 向 API 添加了 HLS #EXT-X-MEDIA 属性
  • 修复了以下问题:
    • 修复了 SourceBuffer remove() 操作失败,导致音轨切换为崩溃播放的问题。
    • 修复了在指定压缩音频格式类型(例如 *.ec3)但使用基于 MPEG-4 的片段(例如 *.mp4、*.mp4a 等)时出现的解析问题。
    • 修复了一个 HLS 问题,即显示带内 CEA608 字幕时出现明显的延迟。
    • 修复了 HLS 和 Smooth 内容,而音频无法加载。

2019 年 8 月 27 日

Web 发送者

  • Web 发件人现在使用新的自定义元素 v1 语法。此版本取代了 v0(已弃用)。
  • 使用向 Chrome M77 添加的新 getEstimatedBreakTimegetEstimatedBreakClipTimegetLiveSeekableRange 函数,修复了 breakTimebreakClipTimeliveSeekableRange 更改的事件。

2019 年 8 月 12 日

iOS 发送者 v4.4.4

  • 改进了 iOS 13 的体验。
  • 改进了对投放设备发现功能的支持。

2019 年 7 月 30 日

网络接收器

  • 已将 Shaka Player 版本升级到 2.5.1。
  • 修复了元数据叠加层在内容加载期间消失得太快的问题。
  • 修复了加载拦截器中被拒情况的清除操作。
  • 已将 setBrowseContent 更新为可为 null。
  • 修复了通过广告插播时间点查找时报告的当前时间不正确的问题。
  • 添加了对 ignoreTtmlPositionInfo 的支持,以忽略 TTML 字幕定位。
  • 改进了对处理加载错误的支持:
    • 避免触发多个 MediaFinishedEvent
    • 触发了媒体管理器错误回调,以便在发生加载错误时清除播放器。

2019 年 7 月 22 日

iOS 发送者 v4.4.3

  • 通过提供 error_reason,改进了对处理加载错误的支持。
  • 发布了没有访客模式的 SDK 版本。

2019 年 6 月 17 日

Android 发送者 17.0.0

  • 最新的 SDK 从 Android 支持库切换到 Jetpack (AndroidX) 库。除非您在应用中进行以下更改,否则库将无法正常运行:
    • com.android.tools.build:gradle 升级到 v3.2.1 或更高版本。
    • compileSdkVersion 升级到 28 或更高版本。
    • 更新您的应用以使用 Jetpack (AndroidX)。按照迁移到 AndroidX 中的说明操作。
  • 如需了解详情,请参阅 Google API for Android 版本说明

2019 年 6 月 10 日

网络接收器

  • 引入了对媒体浏览的支持,这是一项用于在智能显示屏上发现内容的新功能。
  • 在 9 个新语言区域的默认界面中添加了本地化功能:
    • 丹麦语
    • 英语(英国)
    • 英语(印度)
    • 英语(新加坡)
    • 法语(加拿大)
    • 意大利语
    • 挪威语
    • 荷兰语
    • 瑞典语
  • 从远程界面的专辑封面中移除了圆角。
  • 修复了直播和其他方面的 bug。

iOS 发送者 v4.4.2

  • 访客模式
    • 添加了对 Cast 开发者控制台中“启用访客模式”选项的支持。
    • 修复了访客模式的会话管理问题。
  • bug 修复
    • 修复了 v4.4.1 中引入的本地化问题。

2019 年 4 月 24 日

iOS 发送者 v4.4.1

  • 引入了对直播的 Alpha 版支持。如需了解详情,请参阅开发者指南
    • 为直播状态添加了新的数据结构和属性。
    • 添加了新的 GCKMediaMetadata 键。
    • 添加了直播媒体命令:
      • [GCKRemoteMediaClient loadMediaWithLoadRequestData:]
      • [GCKRemoteMediaClient findWithOptions:]:
    • 改进了展开后的控制器界面,以支持直播:
      • 更改了展开的控制器的布局和外观。
  • bug 修复
    • 修复了 iPhone X 上的 GCKUICastContainerViewController 底部问题。
    • 修复了操作系统执行大量网络活动时出现的重新连接问题。
    • 修复了使用 GCKUICastButton 初始化无障碍功能标签时发生崩溃的问题。

2019 年 4 月 23 日

网络接收器

  • 引入了对直播的 Alpha 版支持。如需了解详情,请参阅开发者指南
    • 更新了界面以支持包括直播指示器在内的直播。
  • 为媒体状态添加了 mediaCategory 字段,以指明媒体是视频、音频还是照片。
  • bug 修复
    • 修复了需要使用 PlaybackConfig.segmentHandler 返回值的功能。

媒体播放器库

  • 为 MPL 中的 HLS 添加了 HEVC 编解码器支持。

Web 发送者

  • 引入了对直播的 Alpha 版支持。如需了解详情,请参阅开发者指南
  • 引入了对广告的支持。如需了解详情,请参阅开发者指南
    • 为可跳过的广告添加了 RemotePlayerController.skipAd()。

Android 发送者 16.2.0

  • 引入了对直播的 Alpha 版支持。如需了解详情,请参阅开发者指南
    • 为直播状态添加了新的数据结构和属性。
    • 添加了新的 MediaMetadata 键。
    • 添加了直播媒体命令:
      • RemoteMediaClient#load(MediaLoadRequestData)
      • RemoteMediaClient#seek(MediaSeekOptions)
    • 改进了展开后的控制器界面,以支持直播:
      • 为扩展的控制器界面 widget 添加了直播支持。
      • 更改了展开的控制器的布局和外观。
      • 引入了与直播兼容的 CastSeekBar 微件,以替换原生 SeekBar。
      • 修改了 ExpandedControllerActivity,以使用 CastSeekBar(而非 SeekBar)来实现直播兼容性。 ExpandedControllerActivity#getSeekBar() 现已弃用,将返回虚拟实例。
  • 添加了新的 MediaStatus#Player_STATE_LOADING 播放器状态:
    • Web 接收器开始加载媒体时,MediaStatus 中的 playerState 属性会设置为 MediaStatus#Player_STATE_LOADING,直到其开始缓冲或播放内容为止。
    • 在大多数情况下,应用会以处理 MediaStatus#Player_STATE_BUFFERING 的方式处理此状态。
    • 缓冲和加载状态并不总是可以互换。
    • 网络接收器在加载时尚未解析所有媒体信息,因此可用的唯一媒体信息就是发送者的加载媒体请求中存在的信息。
    • 在缓冲时,媒体信息可能包含接收者解析的其他信息。
  • 修改了 MediaMetadata 以支持有声读物:
    • 添加了新的 MediaMetadata 键。
    • 新增了有声读物的元数据类型。

2019 年 3 月 25 日

网络接收器

  • document.registerElement() 替换为了 customElements.define(),以使 Web Receiver SDK 与新版 Cast 平台兼容。
  • 现在,如果内容存在广告插播时间点,但当前未播放广告插播时间点,则 MediaStatus.breakStatus 会返回空对象。
  • 修复了解析内嵌 VAST 代码的问题。

媒体播放器库

  • 修复了切换音轨时约 20 秒延迟的问题。

2019 年 2 月 13 日

网络接收器

  • 修复了触摸界面的“跳过广告”按钮突然出现的问题。
  • 修复了在遥控器上显示中断信息的问题。

媒体播放器库

  • 修复了处理预加载媒体的 licenseUrl 的问题。

2019 年 2 月 5 日

iOS 发送者 v4.3.5

  • 添加了对有声读物元数据的支持,如需了解详情,请参阅 GCKMediaMetadata.h
  • 在 podspec 中为 static_framework 设置正确的值。
  • 连接控制器中,拆分导航栏和工具栏的 styleAttributes。
  • bug 修复
    • 修复了某些数据库初始化失败的崩溃问题。
    • 修复了在来电或闹钟铃声期间网络接收器音量条存在的问题。
    • 修复了某些委托方法在发现过程中的冗余调用问题。
    • 修复了媒体队列列表在播放完最后一项后无法清除的问题。
    • 当网络不可用时,禁止显示无法访问的附近设备。
    • 针对无法控制音量的设备停用了设备视图控制器上的音量滑块。