腾讯云 TRTC 在 Android 系统上支持屏幕分享,即将当前系统的屏幕内容通过 TRTC SDK 分享给房间里的其他用户。关于此功能,有两点需要注意:
iOS | Android | Mac OS | Windows | Electron | 微信小程序 | Chrome 浏览器 |
---|---|---|---|---|---|---|
? | ? | ? | ? | ? | × | ? |
要开启 Android 端的屏幕分享,只需调用 TRTCCloud
中的 startScreenCapture() 接口即可。但如果要达到稳定和清晰的分享效果,您需要关注如下三个问题:
在 manifest 文件中粘贴如下 activity(若项目代码中存在则不需要添加)。
<activity
android:name="com.tencent.rtmp.video.TXScreenCapture$TXScreenCaptureAssistantActivity"
android:theme="@android:style/Theme.Translucent"/>
通过设置 startScreenCapture() 中的首个参数 encParams
,您可以指定屏幕分享的编码质量。如果您指定 encParams
为 null,SDK 会自动使用之前设定的编码参数,我们推荐的参数设定如下:
参数项 | 参数名称 | 常规推荐值 | 文字教学场景 |
---|---|---|---|
分辨率 | videoResolution | 1280 × 720 | 1920 × 1080 |
帧率 | videoFps | 10 FPS | 8 FPS |
最高码率 | videoBitrate | 1600 kbps | 2000 kbps |
分辨率自适应 | enableAdjustRes | NO | NO |
从 Android 7.0 系统开始,切入到后台运行的普通 App 进程,但凡有 CPU 活动,都很容易会被系统强杀掉。 所以当 App 在切入到后台默默进行屏幕分享时,通过弹出悬浮窗的方案,可以避免被系统强杀掉。 同时,在手机屏幕上显示悬浮窗也有利于告知用户当前正在做屏幕分享,避免用户泄漏个人隐私。
public void showView(View view, int width, int height) {
mWindowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
//TYPE_TOAST仅适用于4.4+系统,假如要支持更低版本使用TYPE_SYSTEM_ALERT(需要在manifest中声明权限)
//7.1(包含)及以上系统对TYPE_TOAST做了限制
int type = WindowManager.LayoutParams.TYPE_TOAST;
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 用户启动了屏幕分享,会通过辅流进行分享。房间里的其他用户会通过 TRTCCloudDelegate 中的 onUserSubStreamAvailable 事件获得这个通知。
希望观看屏幕分享的用户可以通过 startRemoteSubStreamView 接口来启动渲染远端用户辅流画面。
观看 Android / iOS 屏幕分享
若用户通过 Android / iOS 进行屏幕分享,会通过主流进行分享。房间里的其他用户会通过 TRTCCloudListener 中的 onUserVideoAvailable 事件获得这个通知。
希望观看屏幕分享的用户可以通过 startRemoteView 接口来启动渲染远端用户主流画面。
//示例代码:观看屏幕分享的画面
@Override
public void onUserSubStreamAvailable(String userId, boolean available) {
startRemoteSubStreamView(userId);
}
一个房间里可以同时有多路屏幕分享吗?
目前一个 TRTC 音视频房间只能有一路屏幕分享。
通过本文您可以了解多元索引的计费项及计费公式。使用多元索引时,索引数据会产...
根据国外资料获悉 , 英特尔已披露下一代服务器处理器的开发计划,在x86市场未来...
本文转载自微信公众号「 无敌码农」,作者 无敌码农 。转载本文请联系 无敌码农...
表1 列出了云备份CBR的常用功能。 在使用云备份CBR之前,建议您先通过 基本概念 ...
21世纪是互联网的时代,是信息的时代,企业抓到了市场信息,才能够掌握先机。因...
人工智能只是一种技术手段,数据资产最终决定人工智能的行业应用发展,以及企业...
1. 接口描述 接口请求域名: scf.tencentcloudapi.com 。 该接口根据指定的日志...
地理位置数据可以为各种政府机构提供需要的信息,执法机构使用位置数据来锁定嫌...
目前,每个业务都是一个数据业务。无论您是庞大的全球企业集团还是本地经营的家...
9月17日,在2020云栖大会上,阿里政务中台2.01+4PaaS+N产品体系正式发布。阿里巴...