大多数浏览器和
Developer App 均支持流媒体播放。
-
通过隔空播放 2 走向大屏幕
通过隔空播放功能,您可将 Apple 设备上的视频、照片和音乐等内容轻松分享到 Apple TV、喜爱的扬声器,以及常见的智能电视。了解如何为隔空播放视频提供最佳的体验,包括长篇内容的自动选择路径、遥控、正在播放元数据,以及视频质量注意事项等。
资源
- Becoming a now playable app
- FairPlay Streaming
- Incorporating Ads into a Playlist
- Integrating AirPlay for Long-Form Video Apps
- 演示幻灯片 (PDF)
相关视频
WWDC19
-
下载
(在大屏幕上进行隔空播放2) 好吧 大家早上好
我是 Jonathan Bennett 我是Apple连接媒体团队的一员
我很高兴能来到这里与大家分享 关于隔空播放的相关信息
开始我们先讲一下 你可以用隔空播放做什么
你可以使用隔空播放无线发送视频 到电视上进行观看
或在家里任何地方听音乐 你还可以
使用隔空播放镜像从iOS或 macOS屏幕上共享几乎所有内容
对于今天的演讲 我们聚焦视频 我们会讲我们所做的改进
从而确保你可以 在隔空播放发送设备上 获得很棒的电视目的地 和优秀的隔空播放体验
当提到目的地时 过去Apple TV一向是 在电视上隔空播放视频的唯一方式 对于许多人来说仍然是个不错的选择 正如你今年早些时候听到的 我们一直
在与一些最大的电视制造商合作
直接在电视中建立隔空播放支持 这极大地增加了人们 在哪里可以进行隔空播放视频的选择 也增加了大量 你可以利用的电视设备
因此只要在电视盒上找到这个标签 你就会了解它支持 隔空播放镜像、多房间音乐 当然还有视频
Apple TV 和支持隔空播放的电视
可以支持最高4K HDR视频 带环绕立体声 这是一种高品质的视频体验
这些是我们在电视上所增加的 一些新功能
提到隔空播放发送设备 我想讲一下我们在iOS中 所做的一些改进 从而使人们可以更轻松地 把app中他们所喜欢的内容 放到电视上
首先现在你的视频app 可以在隔空播放列表的顶部 对电视目的地进行排序 使查找你想要播放视频的电视 变得比以前更简单了
我们还改进和丰富了可用的远程控制 允许人们与你的视频迅速和轻松地 进行交互
我们还做了一些改善 可以让人们更好地在他们的 iOS设备上进行多任务操作 因此他们可以接电话 或查看他们刚从iMessage中 收到的那段可爱的视频 而同时仍在电视上继续播放你的视频
最后iOS现在可以使用设备上学习 智能地推荐要进行隔空播放的电视 因此我可以坐在沙发上 启动你的视频app 我只需要轻触我最喜欢的节目 就会在电视上自动播放
通过新电视目的地和这些体验改善 现在是时候确保你的视频app 完全支持隔空播放了
我想在接下来的演讲中讲五个重点 用于添加这种优秀的体验
首先我们要确保你有在电视上可用的 高品质视频
然后我们要一种方式 可以让人们使用app内的选择器 把视频放到电视上
一旦视频出现在电视上 我们要确保人们可以控制它
并且要确保当人们使用iOS设备 进行其它操作时
持续播放视频
最后如果你的app 主要播放长格式视频 如电影或电视节目
你还应该采取一些额外的步骤 从而确保用户们受益于 智能隔空播放推荐
让我们先讲高品质视频
HTTP直播流是一种 快速的和自适应的方式 用于把高品质视频放到任何设备上 你很可能已经使用HLS 向iOS app提交视频了 现在有些人可能正在整理播放列表 主要集中于那些设备类型 是iPhone屏幕或iPad屏幕
但请记住 用户任何时候都可以获取视频 并可以在电视上进行隔空播放 你的播放列表中 拥有适合电视的全部变体非常重要 其中包括支持4K、HDR 和环绕立体声的变体
如果你的播放列表中含有 你用于编码内容的多视频编解码器 请一定要为每个视频编解码器 提供全部变体 这可以确保播放你视频的任意设备 完全支持播放你的视频 并确保播放器可以流畅地在变体之间 进行转换 通过使用同一个视频编解码器实现
我发现自己经常会做的一件事就是 快进或跳着看视频 无论是…
在我和孩子们一起观看时 跳过电影中恐怖的画面 或查找WWDC视频中间部分的一个 有意思的话题 在跳着看时有快进、快速播放、 帧预览 可以让我迅速并自信地找到 我想要找的内容
你可以在你的视频中添加这种支持 通过在你的HLS播放列表中 包含一个I帧变体实现
最后如果你有需要保护和管理的 高价值内容 你很可能会使用FairPlay Streaming 对其进行保护和管理 无论何时也无论你在哪里进行隔空 播放都完全支持FairPlay Streaming 包括在Apple TV上隔空播放 我也很高兴地宣布 只要内嵌隔空播放支持的智能电视 都支持FairPlay Streaming
除了我们今天所讲的这些 还有许多关于针对隔空播放 验证你的HLS的详细信息 我们制作了一个与此演讲相关联的 独立视频 我推荐你参考那个视频了解相关信息
拥有高品质内容非常棒 但我们也要确保我们有流畅的播放
如果你需要在你的视频中 插入前、中或后视频广告 你可以使用HLS的不连续性标签 来实现 这就允许播放器保持不变 并且预估的带宽也保持不变 从而你的插播广告视频 以高品质播放 当它结束后恢复播放主内容时 可以立即开始以高品质播放主内容
再一次 确保这些插播视频广告 拥有与主内容相同的视频格式 非常重要 比如同样的视频编解码器 这就允许这些转换 可以迅速并流畅地进行
如果你由于某些原因不能使用 HLS不连续性标签 或你有想要连续播放的多段视频内容
我们推荐你在隔空播放时使用 AVQueuePlayer
如果当你进行隔空播放时不能使用 AVQueuePlayer 请使用同一个AVPlayer实例 你只需要用你的新内容替换 当前内容即可 你一定不想给每段视频销毁一个 AVPlayer并创建一个新的AVPlayer 或在实例之间调换 因为当隔空播放时 系统不了解 一段新视频即将到达 因此它可能会开始释放引擎 你一定不想产生这种类型的延迟 仅仅是因为在视频之间进行转换 而引起的延迟
好吧 我们已经得到了高品质的内容 现在让我们为人们提供一种方式 可以让他们把内容放到电视上
你可以通过把隔空投放选择器 添加到你的app中实现 在iOS 13中有个新功能 你可以决定如何对这些目的地排序
要添加一个隔空播放选择器 请使用 AVRoutePickerView 自iOS 11起它在iOS上可用 现在它也在macOS上可用了
有些人可能会使用 MPVolumeView的路由按钮属性 在app中获得选择器
iOS 13中 已经弃用路由按钮属性了
但不要担心 你仍可以使用 MPVolumeView 把音量UI放到你的app中 但当要使用路由按钮时 请使用 RoutePickerView替代
让我们看看如何添加 非常简单 我所要做的就是创建一个 AVRoutePickerView 并把它添加到我的视频等级中
在iOS 13中 我可以把prioritizesVideoDevices 设为真 那会为我提供一个路由按钮图标 关注带有隔空播放视频标志的视频 并同时在顶部对这些电视目的地 进行排序 从而把查找我想在哪个电视上 播放视频变得超级简单
现在我可以在电视上播放视频了 让我们确保人们可以通过一种方式 对其进行控制 这非常重要 因此我们要确保 整个系统中的远程控制 比以前更便利、更得力
比如我可以通过锁屏控件 控制我的视频 并且当你锚定一个电视时 我们也添加了额外功能
我还可以使用Siri发布播放命令 并说出 你知道的 在我的电视上播放这个视频
这并不仅仅是控制在iOS设备上 播放什么 还要控制你周围的设备 比如你可以下拉控制中心 控制正在家里播放音乐的 HomePod 或甚至是控制 正在播放视频的tvOS app 我可以看到播放内容 并可以从几乎任意设备上控制它
如果你的app不支持 远程控制会怎样? 嗯 这是我的app 它正在电视上进行隔空播放
但如果我锁定屏幕 我就不知道视频正在播放 更重要的是 我就不能与那个视频进行交互了
通过支持远程控制 你可以了解正在播放什么
视频已经播放了多久
一种与之迅速地相交互的不错的方式
然后甚至可以返回到 目前正在播放那段视频的app中 你只需要轻触视频或标题即可返回
让我们看看如何在你的app中 添加这些远程控制 首先是要成为“正在播放”app
通过做两件事即可成为 “正在播放”app 一件事是至少支持一个远程控制命令 另一件事是用媒体配置初始化播放
在iOS上 那意味着 用不可混合类别激活你的音频会话 对于多大多数视频app来说 那应该是播放类别
在macOS和运行在 macOS上的iOS代码来说 你要采取的措施稍微有些不同 你要获取MPNowPlayingInfoCenter 并且无论何时当你开始或结束 视频体验时 要修改播放状态
提到支持远程控制 如果你使用了AVKit的 AVPlayerViewController 来呈现你的视频 它会替你处理远程控制 然后你就搞定了
如你使用AVFoundation 和自定义UI来呈现你的视频 你得用MPRemoteCommandCenter 和MPNowPlayingInfoCenter 来获得同样的功能 我想花点时间逐步讲一下 如何使用这些媒体播放器API 来创建这个功能
在这里我又返回到我孤独的锁屏上
让我们通过支持播放命令来添加一些 简单的支持
我可以通过创建 支持远程控制的设置方法来实现 随着我们继续创建支持 我们会一次又一次地使用这个方法
我首先要获取远程命令中心的 共享实例
远程命令中心支持许多不同类型的 媒体命令 在这里我支持播放命令 为此 我们要添加一个目标处理器 来接收那个命令 并使用它执行某些操作 在这里 我们要开始播放
一旦完成播放 我要返回一个状态 表明命令是成功或失败
这是你要针对你所支持的 任意远程命令 所要使用的基础结构
为了充实我们的播放命令处理 我们要支持暂停命令和 togglePlayPauseCommand 通过为它们添加处理器实现
这给了我一个 有播放/暂停按钮的面板 我至少知道哪个app正在播放 但如果我知道正在播放哪个视频 就太棒了
你可以通过提供 “正在播放”信息来实现
“正在播放”信息由两部分组成 一部分是元数据 比如视频或标题
然后是播放状态 比如时长和当前已播放时间 在我的代码中有两个主要事件 我想在这两个主要事件中 更新这个信息 其中一个是当某项发生变更时 从第一段到第二段
另一个是当我有当前项时 且播放状态发生变革 因此我的速率发生了改变 或我想跳到视频中的另一个位置
因此当某项发生变更时 我要获取我在app中通过一种结构 打包好的元数据 并通过我的app传递它 我要更新那个静态的 “正在播放”信息 比如标题和视频 如果我有“正在播放”信息
我这一次也会更新播放信息
当播放状态发生变更时
我所要做的就是更新那个播放信息 我不需要更新视频 也不需要花时间去做那些操作
让我们看看如何更新这些信息
我要做的第一件事就是 从共享信息中心 获取“现在播放”信息字典
对于这个字典 我要更新我的元数据 在这里 我要更新标题和视频 我的app中还支持或可能支持 许多其它类型的元数据 无论我支持哪种类型 重要的是要更新这个元数据或清除它 如果某项没有那种类型的属性的话 就把它消除掉 你一定不想在字典中包含 新旧混合的元数据
然而一旦我更新元数据之后 我就把它传回给信息中心用于呈现
更新“现在播放”信息超级简单 现在让我们看看如何更新播放信息
更新方式很相似 我先获取“现在播放”信息 信息字典 为此 我要更新时长 和已播放时间以及播放速率
我只需要在发生显著变化的事件上 更新这个信息即可 我不需要对每秒都进行更新 来查看远程UI的进度 只要我在速率发生变化时 或发生重大快进时 更新这三项 系统就会推断 在任何特定时刻你在视频中 所处的位置 并相应地更新远程UI
再一次 一旦我更新了这个信息 我只需要把它传回给信息中心 以获得呈现
这样我就能了解正在播放哪个视频 能在视频中实现导航真是太棒了 你可以使用playhead刷子 或快进和后退
在你的视频中添加对视频导航的支持
让我们看一下我们该如何做
我们返回到 用于设置远程控制命令的方法中 我要添加对快进命令的支持 这是支持额外配置的其中一个命令 在这里我把首选快进间隔设置为 15秒
然后我为那个命令添加一个处理器
重点是要注意 我在这里使用了通过命令事件 传给我的间隔 仅仅因为我设置了首选间隔 但那并不意味着每次都要用这个间隔 比如我可以要求Siri快进42秒 这是将要传给我的值 也是我应该使用的值
然后我通过支持后退命令 和当对视频进行导航时所使用的 修改播放位置命令 来充实我的支持
对于某些app 和某些类型的视频来说 你可能需要暂时禁用导航 你可以通过在你要禁用的命令上 设置isEnabled属性来实现 你不需要移除目标处理器 然后再把它添加回来
今年我们对远程控制UI 所添加的其中一个新功能是 选择和修改音频语言和字幕的能力 因此如果你拥有带有这些选项的视频 你一定想在远程控制中 添加这种类型的支持
这可以让人们轻松地 以他们想要和需要的方式观看视频 你可以通过提供一个 代表音频语言和字幕的
听得见的和易读的语言选项列表 来添加这种支持 然后你还可以识别 其中每个群组的当前选项 最后你要通过远程UI 处理那些选择
让我们看看如何提供这个信息
首先创建一个映射 我要从我的AVAsset中加载 听得见的和易读的语言群组
我要通过把它们转化到 代表这些选项的媒体播放器对象中 来创建它们的映射 我可以使用便利的函数来实现 我要在我的app中维持这种映射 因此当我从远程命令中 收到语言选项时 我最终可以把它转化到 AVFoundation对象中 并在我的AVPlayer项上 设置它 从而修改选择
创建好映射之后 我就可以更新那个信息了 在这里我要在update方法中 针对播放信息执行这种操作 我已经在播放信息中添加了 播放时长和已播放时间 为此 我要添加一个可用选项群组
及其当前选择的列表
现在我们要处理对这些选择的更改
我可以在我的setup方法中 对远程控制执行这种操作 或我可以添加支持 enableLanguageOptionCommand
这个处理器将首先获取当前播放项
然后使用我的映射来获取 我所接收的语言选项 并把它转化为 AVFoundation对象
然后我就使用AVPlayer项 选择option和group方法 从而为当前项选择新选项 我想更新我的“现在播放”信息 和其它内部状态并处理那个播放变更
现在有些类型的选项群组 可能什么都没选择 比如关闭字幕和隐藏字幕 通过disableLanguage OptionCommand实现 因此你一定要确保支持 启用和禁用命令 并且处理器非常类似 首先获取当前项
并使用我的映射查找群组
但现在我要查看 群组是否允许空选择 并确保它可以允许空选择
如果它允许 我就使用同一个选择方法 但传递“无”作为选项 这将取消那个群组中所选择的 全部选项
因此我就得到了 我可以支持的完整远程控制集 我要何时注册和注销这些呢? 对于绝大多数视频app来说 当你有要播放的内容时进行注册 即当用户在你的app中选择了一个 视频时
当你没有什么要播放的东西时 你一定想进行注销 即当用户退出视频时 你可以利用那个机会来清除字典中的 “正在播放”信息 从而确保不保留数据
我提到过那并不仅仅是控制 在你的设备上播放什么 还要控制你周围的设备 因此如果你有一个tvOS app 用于尝试在Apple TV上 播放内容 并在iPhone上下拉控制中心 而锚定那台Apple TV 请看 你可以看到 你所预期的视频信息 并且你也可以按照你的预期 对其进行控制 这对于使用Siri来控制你的电视 是一样的
我刚才所讲到的例子 都是我们所制作的 与本场演讲相关联的 示例项目的一部分 我建议你们查看一下示例项目
好吧 我们已经拥有高品质内容 我们可以在电视上播放它并控制它 当在电视上播放时 如果我可以同时使用手机或iPad 做其它事情的话就太棒了
要支持一种优秀的多任务体验 你需要采取两个步骤 第一步是确保当用户执行多任务时 你的视频可以持续播放 第二步是确保 如果电视上已经有正在播放的视频 你的app在对其UI进行导航时 不会意外地 中断那种体验
因此当我正在收集上观看视频时 我的视频app通常会留在前台 因为我需要在屏幕上看它
但当我在电视上进行隔空播放时 我现在可以自由使用 iPhone来做其它事了 比如查看我的消息或邮件或社交媒体
如果我使用了 不支持后台媒体的视频app
当我离开那个app时 视频将停止播放 因此我们一定要确保你的视频 可以继续播放
你可以通过在app的 Info.plist文件中 支持音频后台模式来实现
并且你还可以把 AVAudioSession配置为 后台播放
对于绝大多数视频app来说 那意味着使用播放类别 这就在你的app中 提供了媒体适当行为 包括在后台播放
关于播放类别设备的另一点是 它会中断其它媒体的播放 当用户按下播放 并开始播放你app中的一段 主要内容时 确保你仅激活你的音频会话非常重要
一旦你的app被激活 它就可以保持激活状态
不必仅仅因为用户暂停了视频 就遣散你的音频会话
现在媒体中断可在任意时间发生 因此在AVAudioSession上 监听这些通知很重要 当中断开始时 你就更新你的UI和内部状态 当它结束时 请查看通知有效载荷 并确保你检查了 shouldResume键 并使用那个值 因此 仅当那个值返回真时自动恢复 视频播放
当电视上已经正在播放视频时 测试你的app并启动它 用于导航UI 并确保不会发生 你不希望发生的突然中断隔空播放 或突然中断当前视频体验
我想讲一些你可能会遇到的几个例子
第一个 有时存在永远不应该进行 隔空播放的视频 因此如果在app启动时有启动动画 那是我通过视频资产实现的启动动画 你一定不想让启动动画中断当前体验 对于用于其他类型的视觉丰富 或在我app内促销内容的视频资产 也一样 你一定要确保那些视频 不会中断当前体验 并保留在设备本地 你可以通过把allowsExternalPlayback 设为假来实现
你的app仅应该 在用户直接与该视频进行交互时 隔空播放视频
为了那个目的
你不应该仅仅因为你的app被启动 或进入前台 就自动播放主要内容
当提到媒体时 人们总是应该能控制何时开始播放
这一点非常重要 我想讲一些例子 解释一下为什么
在这里 我正在 我的iPhone上听音乐 我有一个支持按需视频的视频app 当app进入前台时 我可以观看并自动播放直播电视频道
因此如果我正在听音乐 我启动了那个app 将会停止播放音乐 而我再也不能控制它了
也许我不是为了观看直播视频 才启动那个app
你一定要确保人们可以 在启动你的app时 明确了解那不会中断他们当前的体验
我将举例说明今年新添加的一个 重要功能
对于长格式视频app来说 当视频开始播放时
iOS可以推荐自动播放视频的电视 当iOS为你做出推荐时 系统会提供一个通知 告诉用户视频将在电视上自动播放 人们可以轻触通知或状态栏图标 来修改所推荐的目的地
如果我有一款自动播放内容的app 在我有机会真正查看通知 并与通知进行交互之前 很可能就会在电视上开始播放视频
通过使用开始播放动作
你可以为人们提供能决定何时 以及在哪里播放视频的能力 那会创建一种优秀的媒体体验 为了让大家更好地了解 长格式视频app 及其与智能隔空播放建议的集成 我要邀请我同事 Marty Pye上台来
谢谢Jonathan 大家好 我是Marty Pye 我是Apple的 AVKit软件工程师 今天我在这里要与大家分享一些 关于我们嵌入到iOS 13中的 高级路由功能 以及你的长格式视频app 该如何利用这些功能
首先我们要讲一下 到底什么是长格式视频app 然后我们再讲讲 我们针对长格式视频app创建了 哪些具体的路由行为 最后我要为大家介绍 如何把这些功能集成到你的代码中
那么什么是长格式视频app? 正如它的名字所暗示的那样 任何主要播放长格式视频内容app 都可以称为长格式视频app 内容包含比如电影 或电视类内容 比如电视节目、体育节目等等
如果你的app主要是从社交媒体 或其它类型的短视频片段播放内容 那它就不是长格式视频app
我们推荐你全面评估你的app 从而决定它属于哪一类 一旦你确定你的app 是长格式视频app 对于此类app 隔空播放路由行为有何不同?
让我们看一个例子
假如你正在观看关于香蕉蛞蝓的一个 纪录片 并且你把这个内容从iPhone上 投到Apple TV上隔空播放
iOS 13有个新功能 当朋友 给你发送他最新的越野摩托车视频时 你可以继续并在本地设备上观看 这个较短的视频 而不需要中断正在电视上播放的 香蕉蛞蝓的纪录片
我们嵌入iOS 13中的 另一个功能是隔空播放建议
如果用户要播放某些内容 隔空播放路由系统会检测附近 可能的隔空播放设备 然后系统可能提示用户并建议 在这台设备上进行隔空播放 或取决于系统的自信程度 系统可能还会自动在那台设备上 路由播放
现在你了解了这些功能 要如何在你的app中利用它们呢? 嗯 你需要做两件事 第一件事是把你的app注册为 长格式视频app 这要如何实现呢? 非常非常简单 你所要做的就是在你app的 Info.plist文件中 添加AVInitialRouteSharingPolicy键
通过把它设置到plist上 在你创建任何播放对象之前 以及在app启动的时候 我们可以确保你的app 跟系统上其它长格式视频 app的行为差不多
为了利用隔空播放建议 你需要做的第二件事是 预备要播放的路由系统
我首先要给你一个概念上的综述 让你了解它是如何运作的 然后我们再从代码中实现它
在你的app中 你最可能有某种浏览UI 用户们可以在不同内容之间进行滚动 选择他们想要播放的内容并点击播放 嗯 在这个转换中 从浏览到实际的播放 你应该预备好隔空播放路由系统
当你预备路由系统时会发生什么?
嗯 它可能会决定自动在本地设备上 播放内容 或把内容路由到外部屏幕上 很可能是附近的隔空播放设备 或如果你有连接到设备上的 外部屏幕的话
然而 取决于自信等级 系统可能还会提示用户 请求是否会在附近的隔空播放设备上 进行播放
然后取决于用户的选择 然后控制会交还到你的app手上 其中包含内容要在哪里播放的信息
让我们看一下如何在代码中实现
当用户决定点击播放时 你应该 在AVAudioSession上 调用 prepareRouteSelectionForPlayback 这个方法接受一个完成处理器
如果隔空播放可以- 如果隔空播放路由系统可以做出 自动播放决策的话 将会立即调用这个完成处理器 然而 可能还会给用户呈现一个提示 请求用户是否要在附近的这台 隔空播放设备上进行播放 如果用户决定要在本地播放内容 然后会调用你的完成处理器 其路由选择类型为本地
现在你可以继续 并呈现你的播放UI了 比如AVPlayerViewController 或你可以呈现你自己的 自定义播放UI
相反 如果用户决定 他们要在客厅隔空播放内容 然后会调用你的完成处理器 其路由选择类型为外部
此时你有机会呈现 某种自定义远程播放UI 其控件可以专用于控制 正在外部显示屏上播放的内容 最后不要忘记处理这种情况 即用户决定取消播放的情况
为了测试你的app 及其隔空播放建议 在各种不同情境中的表现 我们在开发者设置中创建了一些 toggle 如果你深入到开发者设置中 你会发现这个新添加的隔空播放建议
在这里 你可以选择三种不同的模式
默认模式就是默认系统行为
你还可以模式之间进行选择 在这种模式下 系统总是会提示用户 并请求是否应该在特定设备上 隔空播放内容 或你可以强制系统进入一种模式 总是会在特定设备上自动路由播放 并且你还可以选择这应用于 下面列出的附近的路由列表中的 哪一台设备 一旦你强制用户进入特定模式 请一定要重设媒体服务
如果你担心隔空播放建议是否 能处理每一种用户可能想要执行 隔空播放的可能的用例 不用担心 最终 你仍能完全控制何时以及在哪里进行 隔空播放 你总是可以选择修改 你要进行隔空播放的设备 你可以通过app内的 AVRoutePickerView实现 或通过AVPlayerViewController内的 控件实现 或通过控制中心实现
这些新功能使用户 在他们所选择的设备上播放你的内容 变得更简单了 我们建议你们查看 与此相关联的示例代码 我们在一个简单的 测试app中演示了 如何继承我们今天所描述的行为 那么我们今天学到了什么? 我们了解了如何通过 AVRoutePickerView 把隔空播放选择器 集成到你的app中 我们了解了如何通过 MPRemoteCommandCenter 处理和注册远程控制命令 以及如何用相关的“正在播放”信息 填充系统UI
我们了解了如何利用隔空播放多任务 以及如何把你的app注册为一个 长格式视频app
最后我们了解了如何在播放之前 预备路由系统 从而充分利用隔空播放建议
就是这些了 我想感谢你们大家 今天能来参加我们的演讲
我们已经迫不及待地要看到你们 把这些隔空播放的新功能 集成到你的app中了 请享受余下的大会时光
-
-
正在查找特定内容?在上方输入一个主题,就能直接跳转到相应的精彩内容。
提交你查询的内容时出现错误。请检查互联网连接,然后再试一次。