返回

同时显示屏幕共享和摄像头:Agora 视频通话 SDK 疑难解答

Android

同时显示屏幕共享和摄像头画面:Agora 视频通话 SDK 难题破解

在使用 Agora 视频通话 SDK 进行视频会议时,你会面临一个常见的挑战:当共享屏幕时,摄像头画面会消失,让接收方无法看到你的面部表情和肢体语言。但别担心,本指南将深入探讨如何解决这一问题,让你在共享屏幕的同时,也能与其他参与者保持眼神交流。

开启屏幕共享

首先,让我们开启屏幕共享。使用 startScreenCapture 方法,并提供相应的配置选项,如屏幕捕获区域和分辨率:

val result = rtcEngine.startScreenCapture(screenCaptureOptions)

订阅视频流

在接收方,你需要订阅视频流才能看到共享屏幕。在 onUserJoined 回调中,使用 apply 方法来实现:

rtcEngine.apply {
    setupRemoteVideo(VideoCanvas(remoteFeedSurfaceView, VideoCanvas.RENDER_MODE_FIT, uid))
    setRemoteSubscribeFallbackOption(Constants.STREAM_FALLBACK_OPTION_VIDEO_STREAM_LOW)
}

调整画面显示

为了同时显示屏幕共享和摄像头画面,需要调整 VideoCanvas 的属性。这让你可以控制画面的大小、位置和层级:

rtcEngine.setRemoteVideoDisposition(
    uid,
    VideoDispositionOptions(
        horizontalOffset = 0.0f,
        verticalOffset = 0.0f,
        scale = 1.0f,
        zOrder = 1
    )
)

通知其他参与者

为了让其他参与者知道你正在共享屏幕,发送一条消息或通知。这样,即使他们错过了屏幕共享的开始,也能立即了解情况:

{
    "type": "screen_share",
    "status": "started",
    "user_id": "your_user_id"
}

关闭屏幕共享

当完成屏幕共享后,使用 stopScreenCapture 方法停止屏幕共享:

rtcEngine.stopScreenCapture()

常见问题解答

1. 如何设置共享屏幕的分辨率?

答:在 screenCaptureOptions 中设置 captureResolution 选项。

2. 为什么我的共享屏幕画面很模糊?

答:确保设备拥有足够的带宽,并尝试降低共享屏幕的分辨率。

3. 如何调整摄像头画面的大小?

答:使用 setCameraZoomFactor 方法调整摄像头的变焦倍数。

4. 如何锁定画面布局?

答:使用 setRemoteVideoStreamType 方法将流类型设置为 REMOTE_VIDEO_STREAM_HIGH

5. 如何处理屏幕共享延迟?

答:尝试优化网络连接,并使用低延迟编解码器,如 H.264 或 VP8。

总结

通过遵循这些步骤,你可以解决 Agora 视频通话 SDK 中同时显示屏幕共享和摄像头画面这一难题。通过调整 VideoCanvas 的属性,发送通知,并按照这些提示,你可以为你的视频会议带来更好的体验,让参与者保持联系并高效协作。