2

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

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

截屏和分享

Android 5.0 允许您使用新的 android.media.projection API 为您的应用添加屏幕捕获和屏幕共享功能。此功能很有用,例如,如果您想在视频会议应用程序中启用屏幕共享。

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

有关如何使用新 API 的示例,请参阅示例项目中的 MediaProjectionDemo 类。

我整天都在寻找有关如何使用 Surface 对象传输数据,然后在另一台设备上接收并显示它们的示例,但没有运气。

所以问题是,怎么做?谁能指出我正确的方向?

4

1 回答 1

1

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

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

于 2019-01-23T13:57:41.070 回答