Android WebRTC может продолжить голосовой вызов, но не может продолжить видеовызов - PullRequest
0 голосов
/ 05 июня 2018

Я работаю над приложением 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 голосов
/ 08 июня 2018

Я потратил больше времени, пытаясь это сделать, и, наконец, это сработало, вот что я сделал:

Я попытался проверить, является ли поток пустым в onResume () после повторного открытия приложенияиз сна (сон означает, что была нажата кнопка «Домой»), но она не была нулевой.после этого я решил посмотреть, что произойдет, если я снова отобразлю поток в onResume () (но мне нужно было проверить, прежде чем отобразить его, если он равен нулю, потому что он будет нулевым при первом открытии приложения).Это все, что мне нужно было сделать, чтобы снова использовать видеопоток, на самом деле это позволило мне перевернуть камеру (переднюю и заднюю), потому что до этого я не мог этого сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...