Android WebRTC, не могу получить то, что я должен сделать? - PullRequest
0 голосов
/ 27 мая 2018

Я работаю с WebRTC, чтобы создать базовое приложение для видеовызовов, которое работает между двумя телефонами Android, я искал около 10 дней, я все понял, что касается стороны Android, но я действительно не могу его получитьв сети, сигнализация, TURN и STUN.К сожалению, я не веб-парень (по крайней мере, не сейчас), и я очень сильно смущен тем, что делать с настройкой серверов.Я даже не понимаю, когда именно использовать, что и почему.чтобы сделать историю короче, мне нужно:

Мне нужна дорожная карта, чтобы продолжить настройку серверов.Заранее спасибо.

ОБНОВЛЕНИЕ: Бэкэнд был реализован, и, кажется, работает, потому что я получаю голос без проблем, я также получаю MediaStream, который содержит как видео, так и аудио, но видео неотображается.

private void gotRemoteStream(MediaStream stream) {
    //we have remote video stream. add to the renderer.
    Log.d("KingArmstring", "gotRemoteStream: 1 stream == null" + String.valueOf(stream == null));
    Log.d("KingArmstring", "the value of the received stream: " + String.valueOf(stream));
    final VideoTrack videoTrack = stream.videoTracks.get(0);
    Log.d("TAG", "gotRemoteStream: we get here");
    runOnUiThread(() -> {
        try {
            Log.d("TAG", "we get here");
            remoteRenderer = new VideoRenderer(new VideoRenderer.Callbacks() {
                @Override
                public void renderFrame(VideoRenderer.I420Frame i420Frame) {
                    Log.d("TAG", "renderFrame: we get here");
                }
            });
            remoteVideoView.setVisibility(View.VISIBLE);
            videoTrack.addRenderer(remoteRenderer);
        } catch (Exception e) {
            e.printStackTrace();
        }
    });

}

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Я наконец-то понял проблему, благодаря Уриэлю, потому что его ответ мне очень помог, мой ответ не может оставаться в одиночестве, его можно добавить только к его ответу.Вы можете видеть, что remoteRenderer был инициализирован следующим образом:

remoteRenderer = new VideoRenderer(new VideoRenderer.Callbacks() {
            @Override
            public void renderFrame(VideoRenderer.I420Frame i420Frame) {
                Log.d("TAG", "renderFrame: we get here");
            }
        });

(я добавил это в ОБНОВЛЕНИИ в моем вопросе)

, вместо этого мы должны инициализировать его следующим образом:

remoteRenderer = new VideoRenderer(remoteVideoView);

Когда я закончу эту часть приложения, я постараюсь добавить git-репо для этой части webRTC, чтобы любой мог воспользоваться любой ее частью.

0 голосов
/ 27 мая 2018

Я играл с webRTC на Android и в Интернете.Я смог сделать свой собственный проект с помощью этих проектов:

Я предлагаюзапустить эти проекты.После того, как вы добьетесь успеха, вы можете попытаться изменить код в соответствии с вашими потребностями.Теперь я объясню некоторые подробности о TURN и STUN.

  1. STUN - это способ узнать, какой у вас настоящий ip.Если вы используете свой телефон с Wi-Fi, то произойдет, что у вас будет IP как: 192.168.1.14.Это внутренний ip.Ваш настоящий ip - это что-то еще.Вам нужен какой-нибудь сервер, например, Google, чтобы сказать вам, каков ваш настоящий IP.Попробуйте набрать в поиске Google, какой у меня ip, и вы увидите, что он отличается от того, что вы видите в ifconfig.
  2. TURN - это ретранслятор потока голосовых / видео данных.По какой-то причине произойдет обрезание голосовой / видеоданных по какой-либо сотовой несущей. Чтобы преодолеть это, вы можете использовать TURN, вы отправляете данные в TURN и передаете их на другую сторону.
  3. Сигнализация - это способ, которым одна сторона вызывает другую сторону.Допустим, у вас есть 2 парня, которые хотят общаться, им нужен способ отправить данные связи до начала разговора.WebRTC не дает вам механизм.Это дает вам JSON, что вам нужен 1 парень, чтобы отправить его второму парню.Ссылки, которые я предоставил, используют socket.io, но есть и другая реализация, например, FCM.Данные, которые путешествуют, - это первый парень ip, кодаки, которые он хочет использовать, и тому подобное.Второму парню нужно отправить ответ о принятии, и голосовой вызов начнется.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...