WebRTC не создает IceCandidates для видео

В приложении для Android я пытаюсь установить webRTC соединение.

Когда я вызываю, я получаю достаточное количество IceCandidate для видео и аудио через сокет. Когда создаются мои IceCandidate, их становится намного меньше. Их создано примерно 6, и все они для аудио.

Из сообщений журнала я вижу, что соединение успешно и звук идет в обе стороны, и мне также удается отправить свое видео вызывающему абоненту, однако я не могу получить видеопоток вызывающего абонента. Я предполагаю, что это связано с невозможностью создать достаточно IceCandidate для отправки на соединение сокета. Любые идеи?


person Tahir Ferli    schedule 13.11.2019    source источник


Ответы (1)


Возможно, это не идеально, но следующее решило мою проблему.

Во-первых, можно иметь меньшее количество IceCandidate s. Во время создания IceCandidate s на моей стороне поля sdpMid по-прежнему не содержат значения видео -i получают как видео, так и аудио значения для sdpMid ключа в IceCandidate s из соединения с сокетом-.

Все, что мне нужно было сделать, это снова прикоснуться к моим представлениям после установки соединения с помощью следующих методов.

Я прошел через эти здесь и здесь < / а>.

private void updateVideoViews(final boolean remoteVisible) {
    activity.runOnUiThread(() -> {
        ViewGroup.LayoutParams params = localVideoView.getLayoutParams();
        ViewGroup.LayoutParams params2 = remoteVideoView.getLayoutParams();
        if (remoteVisible) {
            params.height = dpToPx(100);
            params.width = dpToPx(100);

            params2.height = dpToPx(100);
            params2.width = dpToPx(100);
        } else {
            params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
            params2 = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
        }
        localVideoView.setLayoutParams(params);
        remoteVideoView.setLayoutParams(params2);
    });
}

public int dpToPx(int dp) {
    DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
    return Math.round(dp * (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT));
}
person Tahir Ferli    schedule 18.11.2019
comment
Привет, у меня та же проблема, что и у urs, и после статьи, которую вы предложили, я также получаю журналы об аудио, но не о видео, и все же моя проблема не решена так, как вы говорите. Можете ли вы поделиться со мной ограничениями и начальными свойствами однорангового соединения ? - person Richa Shah; 17.04.2020