android - 如何将 Webrtc 的相机输出流式传输到原生 android 上的 Wikitude sdk

标签 android webrtc wikitude

在我的 webrtc 应用程序中,我将捕获的视频流发送到远程浏览器。我现在的目标是,我想在 android 部分的同一视频流上使用 wikitude(出于兼容性原因,我正在使用 Wikitude 7.2.1)来增强一些 AR Stuff,并将其显示在显示器上(它目前仅显示相机输出)。我知道我不能只打开另一个相机实例,因为 Webrtc 已经使用了一个,所以我需要将 webrtc VideoCapturer 的输出(或者输出也被渲染的某些表面的内容?)传递给 Wikitude SDK,但是,我很难这样做。

我已经看到输入插件 wikitude 需要外部摄像头输入使用带有 ImageAvaibleListener 的 ImageReader,如下所示:

mWikitudeCamera2.start(new ImageReader.OnImageAvailableListener() { ... }

在 WikitudeCamera2 方面:

 mManager.openCamera(getCamera(), cameraStateCallback, null);
 mImageReader = ImageReader.newInstance(mFrameWidth, mFrameHeight, ImageFormat.YUV_420_888, 2);
 mImageReader.setOnImageAvailableListener(onImageAvailableListener, null);

图像阅读器表面然后附加到实际的相机输出:

CaptureRequest.Builder builder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_RECORD);
builder.addTarget(mImageReader.getSurface()); 

但是,由于我需要使用 Webrtc 提供的 CameraCapturer,我无法做到这一点。

有没有办法从 Webrtc 的 SurfaceViewRender 获取相机流,或将其渲染到另一个(可能是假的?)SurfaceView 并将其附加到图像阅读器。还是通过其他方式将发送到客户端的输出传递给 wikitude 而无需使用图像阅读器? 或者一般来说,我还没有想过其他一些我可以让它工作的方法。我真的很感激一些帮助,因为我现在一直停留在那个部分。

最佳答案

你走在正确的道路上,但不幸的是,由于 Wikitude 的 SDK 正在使用相机 API,因此不可能(目前,SDK 8.2)通过 WebView/WebRTC 访问相同的流。 您现在必须坚持使用 ImageReader 方法,并找到一种在 native 环境中处理帧的方法。

最好的问候

关于android - 如何将 Webrtc 的相机输出流式传输到原生 android 上的 Wikitude sdk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54476862/

相关文章:

android - java.util.zip.ZipException : duplicate entry: org/apache/cordova/PermissionHelper. 类

android - 折叠的方法在 IDE 重启后展开

javascript - Kurento - WebSocket 连接失败

android - 如何将数据从 Phonegap View 传递到 wikitude 的架构师 View

Android:同时录制和流式传输

javascript - 在 javascript/HTML5 中建立直接的 udp 连接

android - 无法使用移动视觉 API 从图像中读取文本

Android:使用 Outlook 发送邮件不显示文本

Android 应用程序,无需市场即可更新。未安装应用