如何在 Kotlin 中为 Android Studio 设置 WebRTC?我找不到可行的解决方案。请提供详细信息。
问问题
3279 次
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 教程。
您需要按照以下步骤操作
- 创建并初始化 PeerConnectionFactory
- 创建一个使用设备摄像头的 VideoCapturer 实例
- 从 Capturer 创建一个 VideoSource 从源创建一个 VideoTrack
- 使用 SurfaceViewRenderer 视图创建视频渲染器并将其添加到 VideoTrack 实例
- 初始化对等连接
开始流式传输视频
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 回答