【问题标题】:How to USe WebRTC in native android 2019如何在原生 android 2019 中使用 WebRTC
【发布时间】:2019-10-07 11:24:28
【问题描述】:

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

【问题讨论】:

标签: android kotlin webrtc webrtc-android


【解决方案1】:

许多在线示例都使用旧的 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 中的 example 可能会有所帮助:

【讨论】:

    【解决方案2】:

    为时已晚。现在,我们有很多 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 - Example

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-18
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-13
      相关资源
      最近更新 更多