屏幕分享
功能描述
屏幕共享用于在音视频会议中,把一个与会者的屏幕内容,以视频的方式分享给其他与会者。
实现屏幕共享
- 加入房间
参考接口调用流程中加入房间的时序图步骤加入房间。
- 共享桌面
加入房间后可以调用setAuxiliaryVideoEncoderConfig设置编码参数,其中HRTCVideoAuxiliarEncParam需要传入宽高、帧率、码率,然后调用startScreenShare开始共享。
public void startScreenShare(){ // 设置编码参数 mHwRtcEngine.setAuxiliaryVideoEncoderConfig(new HRTCVideoAuxiliarEncParam(widthInt, heightInt, framerateInt, bitrateInt)); // 开始共享 mHwRtcEngine.startScreenShare(); }
- 共享程序
暂不支持
- 接收远端用户的共享流
收到远端用户开启共享流回调onUserAuxiliaryStreamAvailable后,可以调用startRemoteAuxiliaryStreamView来设置远端用户的共享流的窗口句柄并开始选看。
还可以调用updateRemoteAuxiliaryStreamRenderMode设置窗口显示共享流的方式。@Override public void onUserAuxiliaryStreamAvailable(String roomId, String userId, boolean available){ if (available) { // 设置远端用户视图 mHwRtcEngine.startRemoteAuxiliaryStreamView(userId, surface); // 设置远端用户视图显示模式 mHwRtcEngine.updateRemoteAuxiliaryStreamRenderMode(userId, HRTCEnums.HRTCVideoDisplayMode.HRTC_VIDEO_DISPLAY_MODE_HIDDEN, HRTCEnums.HRTCVideoMirrorType.HRTC_VIDEO_MIRROR_TYPE_DISABLE); } }
- 停止屏幕共享
屏幕共享结束时,可以调用stopScreenShare停止屏幕共享。
public void stopScreenShare() { // 停止屏幕共享 mHwRtcEngine.stopScreenShare(); }
- 停止接收远端用户的屏幕共享流
收到onUserAuxiliaryStreamAvailable消息后,如果选看的远端屏幕共享流不可用,或者收到远端用户下线通知onUserOffline,则接收端必须调用stopRemoteAuxiliaryStreamView关闭共享流窗口视图。
如果接收端想主动停止接收远端用户的共享流,也需要调用stopRemoteAuxiliaryStreamView。
@Override public void onUserAuxiliaryStreamAvailable(String roomId, String userId, boolean available){ if (!available) { // 关闭共享流窗口视图 mHwRtcEngine.stopRemoteAuxiliaryStreamView(userId); } }