【发布时间】:2019-02-01 09:48:23
【问题描述】:
在我的 webrtc 应用程序中,我将捕获的 VideoStream 发送到远程浏览器。我现在的目标是,我想在 android 部分的同一视频流上使用 wikititude(出于兼容性原因,我使用 Wikitude 7.2.1)增加一些 AR Stuff,并将其显示在显示器上(目前仅显示相机输出)。我知道我不能只打开另一个相机实例,因为 Webrtc 已经使用了一个,所以我需要将 webrtc VideoCapturer 的输出(或者输出也被渲染的某些表面的内容?)传递给 Wikitude SDK,但是,我这样做有困难。
我已经看到输入插件 wikiitude 需要外部相机输入使用带有 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? 或者一般来说,我可以通过其他一些我没有想到的方式来让它工作。我真的很感激一些帮助,因为我现在一直坚持那部分。
【问题讨论】: