在 Android 应用程序上,我正在尝试建立webRTC
连接。
当我是被调用者时,我会IceCandidate
从套接字连接收到足够数量的视频和音频。当我IceCandidate
的 s 被创建时,它们的数量要少得多。其中大约创建了 6 个,它们都是用于音频的。
从日志消息中,我看到连接成功并且音频是双向的,我也设法将我的视频发送给呼叫者,但是我无法接收呼叫者的视频流。我想这与无法创建足够IceCandidate
的 s 来发送到套接字连接有关。有任何想法吗?
在 Android 应用程序上,我正在尝试建立webRTC
连接。
当我是被调用者时,我会IceCandidate
从套接字连接收到足够数量的视频和音频。当我IceCandidate
的 s 被创建时,它们的数量要少得多。其中大约创建了 6 个,它们都是用于音频的。
从日志消息中,我看到连接成功并且音频是双向的,我也设法将我的视频发送给呼叫者,但是我无法接收呼叫者的视频流。我想这与无法创建足够IceCandidate
的 s 来发送到套接字连接有关。有任何想法吗?
也许这并不理想,但以下解决了我的问题。
首先,IceCandidate
s 的数量可以减少。IceCandidate
在我这边创建s 期间,sdpMid
字段仍然不包含视频值 - 我从套接字连接接收sdpMid
key 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));
}