如何在本地android上将Webrtc的相机输出流式传输到Wikitude sdk

时间:2019-02-01 09:48:24

标签: android webrtc wikitude

在我的webrtc应用程序中,我将捕获的VideoStream发送到远程浏览器。我现在的目标是,我想在Android部件上的同一视频流上添加带有wikitude的AR Stuff(出于兼容性原因,我使用Wikitude 7.2.1)并在显示器上显示它(当前仅显示摄像机输出)。我知道我不能仅仅打开另一个Camera Instance,因为Webrtc已经使用了它,所以我需要将webrtc VideoCapturer的输出(或者也可以渲染输出的某些表面的内容传递给Wikitude SDK),但是,我这样做很困难。

我已经看到,外部相机输入所需的输入插件的兼容性使用具有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);

然后将Image Readers表面附加到实际的相机输出上:

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

但是,由于我需要使用Webrtc提供的CameraCapturer,因此无法执行此操作。

是否可以从Webrtc的SurfaceViewRender获取相机流,或将其渲染到另一个(也许是假的)SurfaceView,并将其附加到图像阅读器。还是通过其他方式将发送到客户端的输出传递给wikitude,而无需使用Image Reader? 或一般来说,我可以考虑其他一些方式使它正常工作。我真的很感谢您的帮助,因为我目前仍停留在该部分。

1 个答案:

答案 0 :(得分:0)

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

最诚挚的问候