请问你们的屏幕共享有可用的demo吗?

我看你们的demo,没有看明白怎么实现的屏幕共享。

// 其中在Surface中得到的texture由SDK的方法发送出去
rtcEngine.pushExternalVideoFrame(new AgoraVideoFrame(…));

怎么在Surface中得到的texture呢?

是安卓端吗?
有demo的,请参考:https://github.com/AgoraIO/Advanced-Video/tree/master/Screensharing/Agora-Screen-Sharing-Android

这个demo我能跑起来,但是demo里面没有看到下面的代码

// 其中在Surface中得到的texture由SDK的方法发送出去

rtcEngine.pushExternalVideoFrame(new AgoraVideoFrame(…));

这是你们的文档链接:https://docs.agora.io/cn/Video/screensharing_android?platform=Android

哦对的,我们demo现在是通过 MediaIO 中的 IVideoSource 接口来实现屏幕共享了。我们比较推荐的是demo的这种方式。

你那边是因为什么原因一定要用push方法吗?
你们要自己维护一套 OpenGL 环境,并创建一个 SurfaceView 传给 VirtualDisplay 作为桌面图像数据的接受方。然后把从 SurfaceView 绘制回调里得到的图像数据作为外部视频源,调用 SDK 的 pushExternalVideoFrame 传给远端的。需要一定的开发能力。

我们有一个自采集demo用到了push方法,你可以参考下:https://github.com/AgoraIO/Advanced-Video/tree/master/Capture-Raw-Video-Data/Agora-Video-Source-Android

因为我现在想兼容Android 4.4的设备,我看Android 4.4的设备也可以拿到VirtualDisplay,所以想尝试下看看能不能通过push的方式来做,我先看看你们的MedialIO能不能做吧

ok

我现在用 IVideoSource 接口在华为9.0的系统上能实现屏幕共享了,但是我在我们定制的一台机器上会报空指针异常。

08-15 14:31:11.086 4128-4268/io.agora.rtc.ss.app:screenshareservice W/System.err: java.lang.NullPointerException: Attempt to invoke interface method 'void io.agora.rtc.mediaio.IVideoFrameConsumer.consumeTextureFrame(int, int, int, int, int, long, float[])' on a null object reference
08-15 14:31:11.087 4128-4268/io.agora.rtc.ss.app:screenshareservice W/System.err:     at io.agora.rtc.ss.capture.ScreenSharingService$2.onFrameAvailable(ScreenSharingService.java:86)
08-15 14:31:11.087 4128-4268/io.agora.rtc.ss.app:screenshareservice W/System.err:     at io.agora.rtc.ss.capture.ScreenSharingService$2.onFrameAvailable(ScreenSharingService.java:72)

是什么设备呀?
用咱们demo也会报错呀?

我们公司定制得机器,芯片是arm架构的,直接用的demo报错了

debug发现报错是ScreenCaptureSource的mConsumer参数为空

这个定制的机器,支持屏幕共享吗?你用别的带有屏幕共享功能的应用先试试看?

你知道有什么app支持屏幕共享不?

我下了个vysor屏幕共享没有问题的

怀疑可能是适配问题。你收集一下SDK log吧,然后提交工单。附上具体的设备信息哦。