是否可以在无需建立peerconnection的情况下使用webrtc VideoCapturer?
我们有一个工作正常的androidapp应用程序(来源于示例/ androidapp)。我们将以下代码从工作中的应用程序中取出到单独的活动中,其中我们直接使用摄像头捕获器而不创建peerconnection。我们使用CapturerObserver的实例来创建视频捕获器(相机2),然后尝试将其渲染到org.webrtc.SurfaceViewRenderer。以下是代码。
如预期的一样,在CapturerObserver的onFrameCaptured中多次调用了有效的videoFrame对象。从那里,我们将它传递给SurfaceViewRenderer。但是,视频并未呈现,并且SurfaceViewRenderer保持黑色。
这是使用VideoCapturer和SurfaceViewRenderer的正确方式吗?是否需要在发送到SurfaceViewRenderer之前进行任何格式转换?
private class MyCapturerObserver implements CapturerObserver {
@Override
public void onCapturerStarted(boolean b) {
Log.e(TAG, "capture started: " + b);
}
@Override
public void onCapturerStopped() {
Log.e(TAG, "capture stopped");
}
@Override
public void onFrameCaptured(final VideoFrame videoFrame) {
//fullscreenRenderer.onFrame(videoFrame);
runOnUiThread(new Runnable() {
@Override
public void run() {
fullscreenRenderer.onFrame(videoFrame);
}
});
}
}
capturer = createVideoCapturer();
captureObserver = new MyCapturerObserver();
surfaceTextureHelper =
SurfaceTextureHelper.create("CaptureThread", eglBase.getEglBaseContext());
capturer.initialize(surfaceTextureHelper, getApplicationContext(), captureObserver);
capturer.startCapture(1280, 720, 30);