android - WebRTC Android,无法得到我应该做什么?

标签 android webrtc

我正在使用 WebRTC 制作一个可在两部 Android 手机之间运行的基本视频通话应用程序,我已经搜索了大约 10 多天,我已经了解了有关 Android 方面的所有内容,但我真的无法理解在 web 端,信号,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();
        }
    });

}

最佳答案

我在 Android 和网络上玩过 webRTC。在这些项目的帮助下,我能够制作自己的项目:

我的建议是运行这些项目。成功后,您可以尝试更改代码以满足您的需求。下面我将解释一些关于 TURN 和 STUN 的细节。

  1. STUN - 这是一种了解您的真实 IP 的方法。如果您使用带有 wifi 的手机,将会发生的情况是您将拥有如下 ip:192.168.1.14。这是内部ip。您的真实 IP 是另一回事。你需要像谷歌这样的服务器来告诉你什么是你的真实 IP。尝试在谷歌搜索中输入 what is my ip,你会发现它与你在 ifconfig 中看到的不同。
  2. TURN - 这是语音/视频数据流的中继。发生的情况是某些蜂窝运营商出于某种原因切断了语音/视频数据,您可以使用 TURN 来克服这个问题,您将数据发送到 TURN,然后将其传输到另一端。
  3. 信令 - 这是一方调用另一方的方式。假设您有 2 个想要通信的人,他们需要一种在通话开始之前发送通信数据的方法。 webRTC 没有给你一个机制。它给你一个 json,你需要一个人将它发送给第二个人。我提供的链接使用 socket.io,但还有其他实现,如 FCM。传输的数据是第一个人的 ip、他想使用的 codac 等等。第二个人需要发送接受响应,语音通话开始。

关于android - WebRTC Android,无法得到我应该做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50548839/

相关文章:

java - 如何使用gson序列化android中具有自定义对象属性的类?

c++ - 将 native WebRTC 应用程序与 Visual Studio 链接

javascript - webrtc 通过 websocket 客户端/服务器连接问题

android - 带有附加垂直填充的 BackgroundColorSpan

android - Google map api v2 在模拟器上显示只有缩放按钮的空白屏幕

android - 我给... "activitycreator.bat"文件在哪里?

android - 如何在单击按钮时获得简单的警报?

video - WebRTC:编码器实现中的 RTPFragmentationHeader 是什么?

webrtc - 无法访问 Coturn Web 界面

ios - 为 iOS 构建 webrtc 库时出错