Android 通过网络传输MediaProjection API的输出

Android 通过网络传输MediaProjection API的输出,android,android-mediaprojection,Android,Android Mediaprojection,我一直在阅读MediaProjectionAPI,并在Github上查看了几个示例项目,展示了如何使用它。 所有这些项目只显示如何将屏幕截图保存在文件中(记录屏幕),而没有显示如何将屏幕截图实时传输到另一个设备(screencast) 我不确定这是否可以通过这个API实现,但后来我阅读了: 屏幕捕获和共享 Android 5.0允许您添加屏幕捕获 通过新的 android.media.ProjectionAPI此功能非常有用,例如 例如,如果要在视频会议中启用屏幕共享 应用程序。 新的creat

我一直在阅读MediaProjectionAPI,并在Github上查看了几个示例项目,展示了如何使用它。
所有这些项目只显示如何将屏幕截图保存在文件中(记录屏幕),而没有显示如何将屏幕截图实时传输到另一个设备(screencast)

我不确定这是否可以通过这个API实现,但后来我阅读了:

屏幕捕获和共享

Android 5.0允许您添加屏幕捕获 通过新的 android.media.ProjectionAPI此功能非常有用,例如 例如,如果要在视频会议中启用屏幕共享 应用程序。

新的createVirtualDisplay()方法允许应用程序捕获 将主屏幕(默认显示)的内容放入曲面 对象,然后应用程序可以通过网络发送该对象。仅API 允许捕获不安全的屏幕内容,而不是系统音频。到 开始屏幕捕获时,您的应用程序必须首先请求用户的 使用意图启动屏幕捕获对话框的权限 通过createScreenCaptureIntent()方法获得

有关如何使用新API的示例,请参阅MediaProjectionDemo 在示例项目中初始化

我花了一整天的时间寻找一个关于如何使用Surface对象传输数据,然后在另一台设备上接收和显示数据的示例,但没有找到


所以问题是,如何做到这一点?有人能给我指出正确的方向吗?

好吧,你可以从传递给
createVirtualDisplay()
的曲面中提取帧(使用
ImageReader
这是最简单的方法之一,或者根据需要使用
SurfaceTexture
),在获得位图后,您只需通过网络发送它(该部分是特定于应用程序的)


例如,您可以建立与服务器的websocket连接并使用它传输帧(这是我玩API时所做的),或者您也可以使用WebRTC进行传输。

Hi@rick sanchez,您找到问题的答案了吗?@thomasbabuj没有找到任何有用的答案。但是能够使用WebRTCwow添加相同的功能,这太棒了。您能否共享一些与URL相关的参考WebRTC和MediaProjection?请按照有关构建本机库的说明进行操作。然后获取示例应用AppRtcMobile(它位于webrtc存储库中),您可以在其中看到MediaProjectionAPI如何与webrtc相结合。与此相关的类是ScreenCapturerAndroid。谢谢你,这是一个很大的帮助。