我正在与WebRTC合作制作一个可在两部Android手机之间工作的基本视频通话应用程序,我已经搜索了大约10天以上,我已经了解了有关Android方面的一切,但我真的无法理解得到它在网络方面,信号,TURN和STUN。不幸的是,我不是一个网络人(至少现在不是),我对如何处理服务器设置非常困惑。我甚至不知道何时使用什么和为什么。让故事更短,我需要的是:
我需要一个路线图来继续进行服务器设置。 提前谢谢你。
更新: 后端已经实现,它似乎正在工作因为我没有任何问题接收语音,我也收到包含视频和音频的MediaStream,但没有显示视频。
private void gotRemoteStream(MediaStream stream) {
//we have remote video stream. add to the renderer.
Log.d("KingArmstring", "gotRemoteStream: 1 stream == null" + String.valueOf(stream == null));
Log.d("KingArmstring", "the value of the received stream: " + String.valueOf(stream));
final VideoTrack videoTrack = stream.videoTracks.get(0);
Log.d("TAG", "gotRemoteStream: we get here");
runOnUiThread(() -> {
try {
Log.d("TAG", "we get here");
remoteRenderer = new VideoRenderer(new VideoRenderer.Callbacks() {
@Override
public void renderFrame(VideoRenderer.I420Frame i420Frame) {
Log.d("TAG", "renderFrame: we get here");
}
});
remoteVideoView.setVisibility(View.VISIBLE);
videoTrack.addRenderer(remoteRenderer);
} catch (Exception e) {
e.printStackTrace();
}
});
}
答案 0 :(得分:3)
我在Android和网络上玩过webRTC。在这些项目的帮助下,我能够创建自己的项目:
我建议运行这些项目。成功完成后,您可以尝试更改代码以满足您的需求。现在我将解释有关TURN和STUN的一些细节。
答案 1 :(得分:3)
我终于想到了这个问题,多亏了Uriel cuz,他的回答帮助了我很多,我的答案不能单独表达,只能添加到他的答案中。您可以看到remoteRenderer已经以这种方式初始化:
remoteRenderer = new VideoRenderer(new VideoRenderer.Callbacks() {
@Override
public void renderFrame(VideoRenderer.I420Frame i420Frame) {
Log.d("TAG", "renderFrame: we get here");
}
});
(我在我的qustion中的UPDATE中添加了它)
而不是我们应该这样初始化它:
remoteRenderer = new VideoRenderer(remoteVideoView);
当我完成应用程序的这一部分时,我将尝试为此webRTC部分添加一个git repo,以便任何人都可以利用它的任何部分。