Android 屏幕共享无法获取到屏幕数据

使用官方的demo https://github.com/AgoraIO/Advanced-Video/tree/master/Screensharing/Agora-Screen-Sharing-Android 将模块screensharemodule集成到项目中,在项目中初始化 mSSInstance = ScreenShare.getInstance();

调用采用以下方式:

mSSInstance.start(getApplicationContext(), appid, token,channelId, mineUid, mVEC);

mVEC为 mVEC = new VideoEncoderConfiguration(VideoEncoderConfiguration.VD_640x360,
VideoEncoderConfiguration.FRAME_RATE.FRAME_RATE_FPS_15,
VideoEncoderConfiguration.STANDARD_BITRATE,
VideoEncoderConfiguration.ORIENTATION_MODE.ORIENTATION_MODE_FIXED_PORTRAIT);

没有报任何异常,但是本地没有获取到屏幕数据,远端也无法显示分享的屏幕画面。
请问哪位遇到过类似的问题,出现问题的原因是什么?

你看看屏幕共享端有没有加入频道成功?可以在 screensharemodule 模块, onJoinChannelSuccess 回调里打印一下看下

好的

-1676/? I/ActivityManager: Start proc 8755:com.h3c.zhdj.app:screenshareservice/u0a338 for service com.h3c.zhdj.app/io.agora.rtc.ss.capture.ScreenSharingService
2019-12-04 10:49:20.699 8755-8755/? W/System.err: at io.agora.rtc.ss.capture.ScreenSharingService.joinChannel(ScreenSharingService.java:188)
2019-12-04 10:49:20.699 8755-8755/? W/System.err: at io.agora.rtc.ss.capture.ScreenSharingService.onBind(ScreenSharingService.java:177)
2019-12-04 10:49:21.195 8755-8783/? D/ScreenSharingService: onJoinChannelSuccess 1ea1640a3f8a1c09535f3f5bfaa0703 498
2019-12-04 10:49:21.233 8755-8783/? D/ScreenSharingService: onWarning 8
2019-12-04 10:49:21.233 8755-8783/? D/ScreenSharingService: onWarning 16
2019-12-04 10:49:23.053 8755-8755/? D/ScreenSharingService: Screen Record Started
2019-12-04 10:49:23.073 8755-8781/? D/ScreenSharingService: onFormatChanged ImgTexFormat{mColorFormat=3, mWidth=1080, mHeight=2132}
2019-12-04 10:49:23.073 8755-8781/? D/ScreenSharingService: onFrameAvailable ImgTexFrame{mFormat=ImgTexFormat{mColorFormat=3, mWidth=1080, mHeight=2132}, mTextureId=1, mTexMatrix=[1.0, 0.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0]}
2019-12-04 10:49:23.091 8755-8781/? D/ScreenSharingService: onFrameAvailable ImgTexFrame{mFormat=ImgTexFormat{mColorFormat=3, mWidth=1080, mHeight=2132}, mTextureId=1, mTexMatrix=[1.0, 0.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0]}
2019-12-04 10:49:23.235 8755-8781/? D/ScreenSharingService: onFrameAvailable ImgTexFrame{mFormat=ImgTexFormat{mColorFormat=3, mWidth=1080, mHeight=2132}, mTextureId=1, mTexMatrix=[1.0, 0.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0]}
2019-12-04 10:49:23.251 8755-8781/? D/ScreenSharingService: onFrameAvailable ImgTexFrame{mFormat=ImgTexFormat{mColorFormat=3, mWidth=1080, mHeight=2132}, mTextureId=1, mTexMatrix=[1.0, 0.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0]}
2019-12-04 10:49:23.264 8755-8781/? D/ScreenSharingService: onFrameAvailable ImgTexFrame{mFormat=ImgTexFormat{mColorFormat=3, mWidth=1080, mHeight=2132}, mTextureId=1, mTexMatrix=[1.0, 0.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0]}
2019-12-04 10:49:23.280 8755-8781/? D/ScreenSharingService: onFrameAvailable ImgTexFrame{mFormat=ImgTexFormat{mColorFormat=3, mWidth=1080, mHeight=2132}, mTextureId=1, mTexMatrix=[1.0, 0.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0]}
2019-12-04 10:49:23.297 8755-8781/? D/ScreenSharingService: onFrameAvailable ImgTexFrame{mFormat=ImgTexFormat{mColorFormat=3, mWidth=1080, mHeight=2132}, mTextureId=1, mTexMatrix=[1.0, 0.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0]}
2019-12-04 10:49:23.314 8755-8781/? D/ScreenSharingService: onFrameAvailable ImgTexFrame{mFormat=ImgTexFormat{mColorFormat=3, mWidth=1080, mHeight=2132}, mTextureId=1, mTexMatrix=[1.0, 0.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0]}
2019-12-04 10:49:23.330 8755-8781/? D/ScreenSharingService: onFrameAvailable ImgTexFrame{mFormat=ImgTexFormat{mColorFormat=3, mWidth=1080, mHeight=2132}, mTextureId=1, mTexMatrix=[1.0, 0.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0]}
2019-12-04 10:49:23.347 8755-8781/? D/ScreenSharingService: onFrameAvailable ImgTexFrame{mFormat=ImgTexFormat{mColorFormat=3, mWidth=1080, mHeight=2132}, mTextureId=1, mTexMatrix=[1.0, 0.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0]}
2019-12-04 10:49:23.364 8755-8781/? D/ScreenSharingService: onFrameAvailable ImgTexFrame{mFormat=ImgTexFormat{mColorFormat=3, mWidth=1080, mHeight=2132}, mTextureId=1, mTexMatrix=[1.0, 0.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0]}
2019-12-04 10:49:23.397 8755-8781/? D/ScreenSharingService: onFrameAvailable ImgTexFrame{mFormat=ImgTexFormat{mColorFormat=3, mWidth=1080, mHeight=2132}, mTextureId=1, mTexMatrix=[1.0, 0.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0]}
2019-12-04 10:49:23.414 8755-8781/? D/ScreenSharingService: onFrameAvailable ImgTexFrame{mFormat=ImgTexFormat{mColorFormat=3, mWidth=1080, mHeight=2132}, mTextureId=1, mTexMatrix=[1.0, 0.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0]}
2019-12-04 10:49:23.431 8755-8781/? D/ScreenSharingService: onFrameAvailable ImgTexFrame{mFormat=ImgTexFormat{mColorFormat=3, mWidth=1080, mHeight=2132}, mTextureId=1, mTexMatrix=[1.0, 0.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0]}
2019-12-04 10:49:23.448 8755-8781/? D/ScreenSharingService: onFrameAvailable ImgTexFrame{mFormat=ImgTexFormat{mColorFormat=3, mWidth=1080, mHeight=2132}, mTextureId=1, mTexMatrix=[1.0, 0.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0]}
2019-12-04 10:49:23.464 8755-8781/? D/ScreenSharingService: onFrameAvailable ImgTexFrame{mFormat=ImgTexFormat{mColorFormat=3, mWidth=1080, mHeight=2132}, mTextureId=1, mTexMatrix=[1.0, 0.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0]}
2019-12-04 10:49:23.482 8755-8781/? D/ScreenSharingService: onFrameAvailable ImgTexFrame{mFormat=ImgTexFormat{mColorFormat=3, mWidth=1080, mHeight=2132}, mTextureId=1, mTexMatrix=[1.0, 0.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0]}
2019-12-04 10:49:23.501 8755-8781/? D/ScreenSharingService: onFrameAvailable ImgTexFrame{mFormat=ImgTexFormat{mColorFormat=3, mWidth=1080, mHeight=2132}, mTextureId=1, mTexMatrix=[1.0, 0.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0]}
2019-12-04 10:49:23.530 8755-8781/? D/ScreenSharingService: onFrameAvailable ImgTexFrame{mFormat=ImgTexFormat{mColorFormat=3, mWidth=1080, mHeight=2132}, mTextureId=1, mTexMatrix=[1.0, 0.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0]}
2019-12-04 10:49:23.552 8755-8781/? D/ScreenSharingService: onFrameAvailable ImgTexFrame{mFormat=ImgTexFormat{mColorFormat=3, mWidth=1080, mHeight=2132}, mTextureId=1, mTexMatrix=[1.0, 0.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0]}

加入通道是成功的。

确认清楚了,确实加入通道成功了。
2019-12-04 11:20:37.779 8755-11711/? D/ScreenSharingService: onJoinChannelSuccess 1ea1640a3f8a1c09535f3f5bfaa0703 512


频道里只有 101 这一个用户啊,查了几个通话记录都是这样,没看到 uid 为 512 的用户额

那个打印出来的不是uid ,是int elapsed,我将uid打印出来看看

2019-12-04 13:14:15.476 8400-8426/? D/ScreenSharingService: onJoinChannelSuccess----channel----1ea1640a3f8a1c09535f3f5bfaa0703-----uid----101----elapsed----673

打出出来了。
注:我本地的画面也是以uid 101加入的,屏幕分享也使用101,也就是自己的uid这一点应该没错吧?
分享之前我需要把本手机的其他远端用户视频和音频全部停掉吗?

刚才在画面上出现这样一个现象,本地画面是全屏的,点击屏幕分享后,远端突然显示了屏幕上的画面,然后一下又突然显示了Carma的数据了,后来屏幕分享的画面也没出现。

我看demo上的分享设置为横屏数据时,只能看到一小块屏幕上的内容,请问有什么办法可以查看到屏幕上的所有内容吗?

分享前停止本地视频,分享的数据出来了。分享完再打开本地视频。

目前的问题是:由于我们的视频使用是在横屏下,分享的时候采集的屏幕在远端只能看到中间屏幕上一点内容,其他地方看不到,不知道这个有解决方法吗?

这么操作会导致 uid 互踢行为,屏幕共享用户端就会把本地画面用户端踢出频道。同一个频道内只能有唯一的一个 uid。

没有这个限制的,你们可以根据业务场景需要自行设置。如果需要屏幕共享和本地摄像头推流共存,可以将屏幕共享的 uid 设为与摄像头 uid 不相同的一个值,就可以共存。

确实遇到用户被踢出了,我试下设置一个不用的uid还能不能进行屏幕共享,非常感谢!!

VideoEncoderConfiguration 应该设置与横屏匹配的分辨率参数。然后远端用户,setupRemoteVideorenderMode 参数,设置为 io.agora.rtc.video.VideoCanvas.RENDER_MODE_FIT
https://docs.agora.io/cn/Video/API%20Reference/java/classio_1_1agora_1_1rtc_1_1video_1_1_video_canvas.html

换了一个uid 2 进行屏幕共享就没有数据显示了,是否是因为远端接收的surfaceView也需要绑定到这个进行分享的uid 2才可以显示出来?

分享屏幕的参数VideoEncoderConfiguration 设置的参数为
mVEC = new VideoEncoderConfiguration(VideoEncoderConfiguration.VD_1280x720,
VideoEncoderConfiguration.FRAME_RATE.FRAME_RATE_FPS_30,
VideoEncoderConfiguration.STANDARD_BITRATE,
VideoEncoderConfiguration.ORIENTATION_MODE.ORIENTATION_MODE_FIXED_LANDSCAPE);
或者ORIENTATION_MODE_FIXED_PORTRAIT

远端用户设置VideoCanvas.RENDER_MODE_FIT 然后看到的画面还是一部分。

1、分辨率试试看设置为 720*1280?
2、远端用户设置的 view,宽高比需要和encoder设置的分辨率宽高比一致
3、手机是否有开启旋转屏幕?如果没有,开启试试看。

嗯,对的

设置为720*1280等下试试。
我们只有横屏下的视频,所以远端用户始终是横屏在看别人分享的内容。我们设置了Acitvity方向是横屏。
根据官方的横屏采集模式,但采集端可能是横屏或竖屏,当采集端在竖屏采集时,确实会采集到一部分,目前这种情况也算是比较正常吧。横屏下采集,横屏下观看内容是没有问题的。

看官方的这个资料是目前我遇到就是这种情况,按官方的说明,目前就是这样看不到全部,按说也正常。