【问题标题】:WebRTC not creating IceCandidates for videoWebRTC 没有为视频创建 IceCandidates
【发布时间】:2019-11-13 22:35:46
【问题描述】:

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

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

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

【问题讨论】:

    标签: java android kotlin webrtc webrtc-android


    【解决方案1】:

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

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

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

    我浏览了这些herehere

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

    【讨论】:

    • 嗨,我和你有同样的问题,按照你建议的文章,我也得到了关于音频但不是视频的日志,但我的问题还没有解决你所说的方式。你能分享一下约束和初始对等连接属性?
    猜你喜欢
    • 2013-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-19
    • 2020-12-16
    • 1970-01-01
    相关资源
    最近更新 更多