• SDK
  • 服务端功能&API
RTC Engine/
SDK/
Android/
基础功能/
SDK
  • 概览
    • 产品概述
    • 产品简介
      • 基本概念
      • 产品功能
      • 性能数据
    • 价格中心
      • 免费时长
      • RTC-Engine 包月套餐
      • 订阅套餐时长计费说明
      • 现收现付
        • 音视频时长计费说明
        • 云端录制与录制投递计费说明
        • 混流转码与旁路转推计费说明
        • Billing of Conversational AI Services
        • Billing of Speech-To-Text
  • 跑通Demo
  • 集成
  • 基础功能
    • 检测网络质量
    • 开启屏幕共享
    • 设置视频质量
    • 旋转视频
    • 直播
    • 媒体设备管理
    • 音量调节
  • 高级功能
    • 自定义采集和渲染
    • 自定义音频采集和播放
    • 发送和接收消息
    • 启用美颜和特效
    • 播放背景音乐
    • 视频截图上传
    • AI 降噪
  • 客户端API
    • API 概览
    • TRTCCloud
    • TRTCStatistics
    • TRTCCloudListener
    • TXAudioEffectManager
    • TXBeautyManager
    • TXDeviceManager
    • 类型定义
    • 废弃接口
    • 错误码
  • 解决方案
    • 实时合唱 (TUIKaraoke)
      • 快速集成
      • 实施步骤
      • 歌曲同步
      • 歌词同步
      • 语音同步
      • 混流解决方案
      • TRTCKaraoke 相关接口
      • 常见问题
  • 常见问题
    • 全平台
      • 新手常见问题
      • 迁移指南
        • Twilio 视频到腾讯 RTC
        • 计费相关
        • 功能相关
        • UserSig 相关
        • 应对防火墙限制相关
        • 缩减安装包体积相关
        • TRTCCalling Web 相关
        • 音视频质量相关
        • 其他问题
    • 发布日志

开启屏幕共享

本文档主要介绍如何使用屏幕分享,目前一个 TRTC 音视频房间只能有一路屏幕分享。

调用指引

开启屏幕分享

步骤1:添加 Activity

在 manifest 文件中粘贴如下 activity(若项目代码中存在则不需要添加)。
<activity
android:name="com.tencent.rtmp.video.TXScreenCapture$TXScreenCaptureAssistantActivity"
android:theme="@android:style/Theme.Translucent"/>

步骤2: 启动屏幕分享

要开启 Android 端的屏幕分享,只需调用 TRTCCloud 中的 startScreenCapture() 接口即可。
通过设置 startScreenCapture() 中的首个参数 encParams ,您可以指定屏幕分享的编码质量。如果您指定 encParams 为 null,SDK 会自动使用之前设定的编码参数,我们推荐的参数设定如下:
参数项
参数名称
常规推荐值
文字教学场景
分辨率
videoResolution
1280 × 720
1920 × 1080
帧率
videoFps
10 FPS
8 FPS
最高码率
videoBitrate
1600 kbps
2000 kbps
分辨率自适应
enableAdjustRes
NO
NO
由于屏幕分享的内容一般不会剧烈变动,所以设置较高的 FPS 并不经济,推荐10 FPS即可。
如果您要分享的屏幕内容包含大量文字,可以适当提高分辨率和码率设置。
最高码率(videoBitrate)是指画面在剧烈变化时的最高输出码率,如果屏幕内容变化较少,实际编码码率会比较低。

步骤3:弹出悬浮窗防止应用被强杀(可选)

从 Android 7.0 系统开始,切入到后台运行的普通 App 进程,但凡有 CPU 活动,都很容易会被系统强杀掉。 所以当 App 在切入到后台默默进行屏幕分享时,通过弹出悬浮窗的方案,可以避免被系统强杀掉。 同时,在手机屏幕上显示悬浮窗也有利于告知用户当前正在做屏幕分享,避免用户泄漏个人隐私。
要弹出悬浮窗,您只需要参考示例代码 FloatingView.java 中的实现即可:
public void showView(View view, int width, int height) {
mWindowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
int type = WindowManager.LayoutParams.TYPE_TOAST;
//TYPE_TOAST仅适用于4.4+系统,假如要支持更低版本使用TYPE_SYSTEM_ALERT(需要在manifest中声明权限)
//7.1(包含)及以上系统对TYPE_TOAST做了限制
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
} else if (Build.VERSION.SDK_INT > Build.VERSION_CODES.N) {
type = WindowManager.LayoutParams.TYPE_PHONE;
}
mLayoutParams = new WindowManager.LayoutParams(type);
mLayoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
mLayoutParams.flags |= WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH;
mLayoutParams.width = width;
mLayoutParams.height = height;
mLayoutParams.format = PixelFormat.TRANSLUCENT;
mWindowManager.addView(view, mLayoutParams);
}

观看屏幕分享

观看 Mac / Windows 屏幕分享 当房间里有一个 Mac / Windows 用户启动了屏幕分享,会通过辅流进行分享。房间里的其他用户会通过 TRTCCloudListener 中的 onUserSubStreamAvailable 事件获得这个通知。
观看 Android / iOS 屏幕分享 若用户通过 Android / iOS 进行屏幕分享,会通过主流进行分享。房间里的其他用户会通过 TRTCCloudListener 中的 onUserVideoAvailable 事件获得这个通知。
观看屏幕分享的用户可以通过 startRemoteView 接口来启动渲染远端用户主流画面。

常见问题

1、提示错误码-3343是什么问题?

如果使用屏幕分享过程中接收到-3343错误码,是因为网络连接问题导致的报错,需检查用户网络。

在技术社区提问