投播设备:参考ProtocolType,本地设备,包括设备本身的内置扬声器或音频插孔、A2DP设备,为非投播设备,其余通过统一投播组件AVCastPicker连接到的设备为投播设备。
媒体会话(AVSession):音视频管控服务,用于统一管理系统中接入播控中心的音视频行为。
投播组件(AVCastPicker):可嵌入应用UI界面的系统级投播组件。用户点击该组件后,系统将执行设备发现、连接和认证等流程,应用仅需通过接口获取投播中的相关回调信息。
投播控制器(AVCastController):在投播建立后,由应用发起的用于控制远端播放的接口,包括播放、暂停、上一首/下一首切换和播放进度跳转等能力。
参考播控特性简介,使用媒体播控开发投播功能,可以将音视频资源投放到其他投播设备上播放。
HarmonyOS提供了统一的应用内音视频投播功能设计,通过使用系统提供的投播组件和接口,应用只需要设置对应的资源信息、监听投播中的相关状态,以及应用主动控制的行为(如:播放、暂停)。其他动作包括图标切换、设备的发现、连接、认证等,均由系统完成。
投播组件开发可参考投播组件开发指导,示例代码可参考:音频投播,视频投播。
PCM投播模式下,类似于通过蓝牙等方式连接音箱,无playbackStateChange回调且不依赖此回调同步本地端和远端的播放状态,远端播放状态跟随本地端。而Cast+的Stream模式或DLNA协议投播有playbackStateChange回调,据此同步本地端和远端的播放状态。
参考扩展屏投播开发指导,可以通过getAllCastDisplays(): Promise<Array>获取当前系统中所有支持扩展屏投播的显示设备,手动或自动选择预期的扩展屏设备进行扩展屏投播。
当采用控制中心的系统无线投屏连接扩展屏时,需要注意:
Q:不同投播协议支持的投播设备是什么?
A:当前投播本地端支持的投播协议可参考ProtocolType,本端设备支持HarmonyOS 5.0.0及以上版本的手机、平板设备。
不同协议的远端设备限制如下:
Cast+的Stream模式主要适用于HarmonyOS 5.0.0及以上版本的2in1设备、HarmonyOS 3.1及以上版本的华为智慧屏;PCM模式主要适用于投播到HUAWEI HiPlay设备;DLNA协议为一种较为广泛支持的投播协议,适用于包括华为智慧屏在内的支持标准DLNA协议的设备,三方设备通过实现支持DLNA投播协议的对端播放器适配DLNA协议投播。
本地设备,包括设备本身的内置扬声器或音频插孔、A2DP设备,为非投播设备。
Q:使用投播组件开发投播功能时,APP会调用什么权限或者收集用户的位置信息吗?
A:参考投播组件开发指导,如果使用网络播放路径,需申请相关权限:ohos.permission.INTERNET,该权限与设备发现无关。
若需后台播放,需参考长时任务使用场景申请对应类型的长时任务在后台保活,申请长时任务需要申请ohos.permission.KEEP_BACKGROUND_RUNNING权限,配置方式请参见声明权限。
投播组件设备上报在系统窗口中,应用获取不到本地和远端设备信息,也不会采集位置信息。
Q:AVCastPicker可以自定义样式吗?
A:AVCastPicker组件可以通过customPicker属性设置自定义图标样式。其他样式可以参考AVCastPicker进行设置。
Q:如何实现直播投播?
A:可以参考投播开发步骤,可以设置mediaUri来进行类似直播投播的效果。
Q:使用投播组件的时候,如何设置投屏资源的播放初始位置?
A:投屏资源的播放初始位置可以通过startPosition设置,startPosition表示投播当前进度。注意,直播场景下不应设置播放初始位置或应该设置为0,否则可能投播失败。
Q:视频流是加了referer防盗链可以投播吗?
A:目前不支持投播带有referer防盗链的网络视频。
Q:如何通过有线的方式将HarmonyOS设备屏幕投放到任意电脑上?
A:该场景符合远程真机平台搭建,开发者利用HOScrcpy可以实现HarmonyOS NEXT设备投屏工具、远程真机平台等能力。
Q:如何在连接投播设备后自动关闭AVCastPicker拉起的设备选择页面?
A:当通过AVCastPicker组件拉起设备选择页面时,可以通过判断语句选择不加载AVCastPicker组件的方式,使设备选择页面立即消失。当用户选择设备并设备切换成功后触发on('outputDeviceChange')监听,可据此判断是否已成功连接投播设备。
当使用AVCastPickerHelper的select接口拉起设备选择页面时,无法控制自动关闭拉起的设备选择页面。
Q:HarmonyOS的平板设备是否支持作为投播的远端?
A:不支持通过Cast+的Stream模式投播到平板设备。DLNA协议模式可以通过在平板上安装已适配标准DLNA协议的应用用于模拟成DLNA大屏。
Q:使用DLNA协议投屏发现封面不展示是为什么?
A:设置封面依赖于投播对端对mediaImage或albumCoverUri的解析,大多三方对端设备不解析封面字段,故当前规格DLNA协议不支持封面展示。