【发布时间】:2018-11-05 04:47:35
【问题描述】:
是否可以在没有对等连接的情况下使用 webrtc VideoCapturer?
我们有一个工作的 androidapp 应用程序(来自示例/androidapp)。我们已将工作应用程序中的以下代码放入一个单独的活动中,在该活动中我们直接使用相机捕获器而不创建对等连接。我们使用 CapturerObserver 的实例创建一个视频捕获器(camera2),然后尝试将其渲染到 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);
【问题讨论】:
-
我看到你和我有同样的问题因为你做了 runOnUiThread() stackoverflow.com/questions/53441496/… 并且有可能知道你是如何处理的吗?
-
@loki 回答下方有帮助