在我的 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/