Android WebRTC可以继续语音通话,但无法继续视频通话

时间:2018-06-04 21:44:56

标签: android webrtc

我正在开发一个Android视频 - 音频通话应用程序,到目前为止我已经完成了主要功能,它工作正常我没问题:语音通话,视频通话。我的问题是,当我按下主页按钮时(视频因任何原因被中断)我再也无法取回它, 奇怪的是,我可以用声音做我需要的事情;当应用程序在后台并停止语音时继续,但遗憾的是我根本无法控制视频。我认为创建与视频相关的webRTC内容存在问题,因此以下是负责该代码的代码:

PeerConnectionFactory.initialize(PeerConnectionFactory.InitializationOptions
            .builder(this)
            .setEnableVideoHwAcceleration(true)
            .createInitializationOptions());


    PeerConnectionFactory.Options options = new PeerConnectionFactory.Options();

    DefaultVideoEncoderFactory defaultVideoEncoderFactory = new DefaultVideoEncoderFactory(rootEglBase.getEglBaseContext(),  true,  true);
    DefaultVideoDecoderFactory defaultVideoDecoderFactory = new DefaultVideoDecoderFactory(rootEglBase.getEglBaseContext());

    peerConnectionFactory = new PeerConnectionFactory(options, defaultVideoEncoderFactory,defaultVideoDecoderFactory);

    videoCapturerAndroid = createCameraCapturer(new Camera1Enumerator(false));

    audioConstraints = new MediaConstraints();
    videoConstraints = new MediaConstraints();

    //Create a VideoSource instance
    videoSource = peerConnectionFactory.createVideoSource(videoCapturerAndroid);
    localVideoTrack = peerConnectionFactory.createVideoTrack("100", videoSource);

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

    videoCapturerAndroid.startCapture(1024, 720, 30);

    localVideoView.setVisibility(View.VISIBLE);
    //create a videoRenderer based on SurfaceViewRenderer instance
    localRenderer = new VideoRenderer(localVideoView);

    localVideoTrack.addRenderer(localRenderer);

    gotUserMedia = true;

我将在需要时更新问题(即需要一些其他代码片段)。 请帮助,我一直试图解决这个问题大约一个星期,我取得的唯一进展是学习如何控制声音:)提前感谢你

1 个答案:

答案 0 :(得分:1)

我花了更多的时间来做这件事,最后它起作用了,这就是我做的:

我在打开应用程序后尝试检查onResume()中的流是否为null 再次从睡眠状态(睡眠意味着单击主页按钮)但它不是空的。之后我决定看看如果我再次在onResume()中显示流会发生什么(但我需要在显示它之前检查它是否为null因为它在我第一次打开应用程序时将为null)。这就是我必须要做的再次重复使用视频流,实际上这让我可以翻转相机(正面和背面)之前我无法做到这一点。