Java 在调用startCapture之前,必须初始化CameraCapturer

Java 在调用startCapture之前,必须初始化CameraCapturer,java,android,webrtc,webrtc-android,Java,Android,Webrtc,Webrtc Android,在Android中实施WebRTC时面临此问题: 原因:java.lang.RuntimeException:CameraCapturer必须在调用startCapture之前初始化 build.gradle(:app) //导致问题的块: private void getVideoSource() { // isScreenCast = false videoSource = peerConnectionFactory.createVideoSource(false);

在Android中实施WebRTC时面临此问题:

原因:java.lang.RuntimeException:CameraCapturer必须在调用startCapture之前初始化

build.gradle(:app)

//导致问题的块:

private void getVideoSource() {
    // isScreenCast = false
    videoSource = peerConnectionFactory.createVideoSource(false);
    surfaceTextureHelper = SurfaceTextureHelper.create(Thread.currentThread().getName(), rootEglBase.getEglBaseContext());
    VideoCapturer videoCapturer = createCameraCapturer(new Camera1Enumerator(false));
    localVideoTrack = peerConnectionFactory.createVideoTrack("200", videoSource);
    localVideoTrack.addSink(local_renderer);
    if(videoCapturer != null)
        videoCapturer.startCapture(1000,1000,30); // <- Here is the Exception

}
private void getVideoSource(){
//isScreenCast=假
videoSource=peerConnectionFactory.createVideoSource(false);
surfaceTextureHelper=surfaceTextureHelper.create(Thread.currentThread().getName(),rootEglBase.getEglBaseContext());
VideoCapturer VideoCapturer=createCameraCapturer(新的Camera1分子(false));
localVideoTrack=peerConnectionFactory.createVideoTrack(“200”,视频源);
localVideoTrack.addSink(本地_渲染器);
if(videoCapturer!=null)
videoCapturer.startCapture(10001000,30);//
你需要在使用它之前进行初始化


谢谢。你能告诉我如何使用设备的公共IP地址吗(假设我是从STUN服务器上得到的)并将其保存在
SessionDescription
?还没有…我仍在思考如何在不涉及任何服务器的情况下进行简单的P2P视频聊天。虽然我正在使用Firebase消息发送报价和答复。但这还没有完成。好的,让我分享一些代码。我将分享你的github链接。我最近做了这项工作。我们有一个公共服务谢谢!非常感谢你需要帮助
private void getVideoSource() {
    // isScreenCast = false
    videoSource = peerConnectionFactory.createVideoSource(false);
    surfaceTextureHelper = SurfaceTextureHelper.create(Thread.currentThread().getName(), rootEglBase.getEglBaseContext());
    VideoCapturer videoCapturer = createCameraCapturer(new Camera1Enumerator(false));
    localVideoTrack = peerConnectionFactory.createVideoTrack("200", videoSource);
    localVideoTrack.addSink(local_renderer);
    if(videoCapturer != null)
        videoCapturer.startCapture(1000,1000,30); // <- Here is the Exception

}
 private void getVideoSource() {
    VideoCapturer videoCapturer = createVideoCapturer();
    VideoSource videoSource;
    //Create a VideoSource instance
    if (videoCapturer != null) {
        SurfaceTextureHelper surfaceTextureHelper = SurfaceTextureHelper.create("CaptureThread", rootEglBase.getEglBaseContext());
        videoSource = factory.createVideoSource(videoCapturer.isScreencast());
        videoCapturer.initialize(surfaceTextureHelper, this, videoSource.getCapturerObserver());
    }
   

    localVideoTrack = factory.createVideoTrack("100", videoSource);

    //Create MediaConstraints - Will be useful for specifying video and audio constraints.
    audioConstraints = new MediaConstraints();
    videoConstraints = new MediaConstraints();

    //create an AudioSource instance
    audioSource = factory.createAudioSource(audioConstraints);
    localAudioTrack = factory.createAudioTrack("101", audioSource);

    if (videoCapturer != null) {
        videoCapturer.startCapture(1024, 720, 30);
    }
    binding.localGlSurfaceView.setVisibility(View.VISIBLE);
    // And finally, with our VideoRenderer ready, we
    // can add our renderer to the VideoTrack.
    localVideoTrack.addSink(binding.localGlSurfaceView);
}