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