1

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

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

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

4

1 回答 1

0

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

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

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

我在这里这里走过这些。

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));
}
于 2019-11-18T19:59:32.037 回答