2

如何在 Kotlin 中为 Android Studio 设置 WebRTC?我找不到可行的解决方案。请提供详细信息。

4

2 回答 2

4

许多在线示例都使用旧的 Android 版 WebRTC api。过去几年发生了很多变化。以下示例使用 Java 编写,但应该与 Kotlin 类似。

首先,您需要请求相机和音频的权限。然后也许使用 findviewbyid 设置你的视图,然后将你的 ice 服务器添加到一个数组中:

List<PeerConnection.IceServer> peerIceServers = new ArrayList<>();   
     peerIceServers.add(PeerConnection.IceServer.builder("stun:stun1.l.google.com:19302").createIceServer());

然后初始化您的对等连接工厂。

DefaultVideoEncoderFactory defaultVideoEncoderFactory = new DefaultVideoEncoderFactory(eglBase.getEglBaseContext(), true, true);
        DefaultVideoDecoderFactory defaultVideoDecoderFactory = new DefaultVideoDecoderFactory(eglBase.getEglBaseContext());

        PeerConnectionFactory.InitializationOptions initializationOptions =
                PeerConnectionFactory.InitializationOptions.builder(this)
                        .createInitializationOptions();
        PeerConnectionFactory.initialize(initializationOptions);

        PeerConnectionFactory.Options options = new PeerConnectionFactory.Options();
        factory = PeerConnectionFactory.builder()
                .setVideoEncoderFactory(defaultVideoEncoderFactory)
                .setVideoDecoderFactory(defaultVideoDecoderFactory)
                .setOptions(options)
                .createPeerConnectionFactory();

然后您可以初始化摄像头和音频以及您的信令客户端。

在 Java 中查看这个示例可能会有所帮助:

于 2019-10-07T13:07:18.683 回答
0

已经太晚了。现在,我们有很多 WebRTC android 教程。

您需要按照以下步骤操作

  1. 创建并初始化 PeerConnectionFactory
  2. 创建一个使用设备摄像头的 VideoCapturer 实例
  3. 从 Capturer 创建一个 VideoSource 从源创建一个 VideoTrack
  4. 使用 SurfaceViewRenderer 视图创建视频渲染器并将其添加到 VideoTrack 实例
  5. 初始化对等连接
  6. 开始流式传输视频

    private fun initializePeerConnectionFactory() {
    
        //Initialize PeerConnectionFactory globals.
        val initializationOptions = InitializationOptions.builder(this).createInitializationOptions()
    
    
       PeerConnectionFactory.initialize(initializationOptions)
    
       //Create a new PeerConnectionFactory instance - using Hardware encoder and decoder.
       val options = PeerConnectionFactory.Options()
       val defaultVideoEncoderFactory = DefaultVideoEncoderFactory(rootEglBase?.eglBaseContext,  /* enableIntelVp8Encoder */true,  /* enableH264HighProfile */true)
       val defaultVideoDecoderFactory = DefaultVideoDecoderFactory(rootEglBase?.eglBaseContext)
       factory = PeerConnectionFactory.builder()
           .setOptions(options)
           .setVideoEncoderFactory(defaultVideoEncoderFactory)
           .setVideoDecoderFactory(defaultVideoDecoderFactory)
           .createPeerConnectionFactory()
    }
    

在这里,有完整的演示可用,但使用 Java - 示例

于 2020-04-13T12:32:04.373 回答