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