WebRTC 没有为视频创建 IceCandidates

WebRTC not creating IceCandidates for video

在 Android 应用程序上,我正在尝试建立 webRTC 连接。

当我是被叫方时,我从套接字连接接收到足够数量的 IceCandidate 用于视频和音频。当我创建 IceCandidate 时,它们的数量要少得多。其中大约创建了 6 个,它们都是用于音频的。

从日志消息中我看到连接成功,音频双向传输,我也设法将我的视频发送给呼叫者,但是我无法接收呼叫者的视频流。我想这与无法创建足够的 IceCandidates 来发送到套接字连接有关。有什么想法吗?

也许它并不理想,但以下解决了我的问题。

首先,减少 IceCandidate 的数量是可以的。在我这边创建 IceCandidate 期间,sdpMid 字段仍然不包含视频值 - 我从套接字接收 IceCandidateIceCandidate 键的视频和音频值连接-.

我所要做的就是在使用以下方法设置连接后再次触摸我的视图。

我浏览了这些 here and here

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));
}