WebRTC Android:如何使用原生 API 构建可靠的WebRTC解决方案

前言

尽管 WebRTC 最初只是作为不需要为多个系统开发和基于 Web 技术而创建的,但多年来,人们已经认识到此类用例的许多优点,因此创建了 WebRTC native APIs。通过选择创建原生 WebRTC 应用程序,可以:

  • 完全访问所有原生操作系统/硬件资源
  • 删除浏览器限制和不兼容
  • 在任何方便的应用程序环境中集成 WebRTC 实现
  • 为特定设备设计完全优化的 WebRTC 体验
  • 构建总体上更快、更流畅的 WebRTC 体验

虽然看起来使用 WebRTC 进行本地化主要有积极的方面,但重要的是要说构建这样的解决方案通常需要更多的知识、时间和资源,因此不推荐用于基本的 WebRTC 解决方案需求,如基本的视频或音频聊天。建议使用原生 WebRTC 实现的情况包括:

  • 功能特定的应用程序(例如,从多个视频源添加多个视频流,到一个 WebRTC 视频通话,运行自定义客户端视频编码/解码等)
  • 性能敏感的应用程序(例如延迟敏感、视频质量敏感、声音质量敏感等),
  • 电话会议应用程序(用于同时连接的多个参与者)。

创建原生 Android 应用

WebRTC 和安卓

在我们开始之前,请务必注意上一篇文章中解释的相同 WebRTC 信令服务器和服务器端算法将用作此处最终解决方案的一部分,因此请务必在继续之前阅读《使用 Microsoft SignalR 和 Angular 构建安全的 WebRTC 解决方案

对于本文中 Android 应用程序的开发,我们将使用Android Studio 和 Java 编程语言。开发过程将包括五个主要步骤:

1)安卓(Java)项目

在 Android Studio 中创建一个新的 Android (Java) 项目并选择所需的最低 SDK API(例如 API 19 – Android 4.4 KitKat)。创建新项目后,转到应用程序的“ build.gradle ”文件并添加以下库依赖项:

implementation ‘com.google.code.gson:gson:2.8.5’

implementation ‘org.webrtc:google-webrtc:1.0.25821’

implementation ‘com.microsoft.signalr:signalr:3.1.6’ 

2) SignalR 服务

与在 Angular 代码中完成的方式类似,Android 实现也需要一个 SignalR 服务,该服务启动并维护与信令服务器的连接,并且还负责发送和接收 SignalR 请求。Android 的 SignalR 服务中值得说明的重要部分如下:

  • 服务的构造函数——它启动与信令服务器的活动连接,并在必要时应用 JWT 安全令牌
  • “ connect ”方法——启动与信令服务器的连接
  • “ define ”方法——定义传入的套接字请求
  • 调用”方法——执行新的给定套接字请求
  • 断开”方法——停止与信令服务器的连接

可以在此处找到 Android SignalR 服务的完整代码。

3) 安卓摄像头捕捉器

Android WebRTC 应用程序实现的一个重要部分是创建一个摄像头捕获器类,它将处理所有与摄像头管理相关的功能,例如访问设备的摄像头、开始视频录制、更改分辨率、更改亮度/对比度等。开发此类的推荐方法是扩展 WebRTC 库的Camera1Capturer基类(或Camera2Capturer,具体取决于目标 SDK)并在此基础上开发所需的自定义功能。可以在此处找到 Android 相机捕获器的基本实现。对于更高级的功能,我们需要使用Android camera2 API功能扩展捕获器,但这是另一个故事了。

4)WebRTC算法实现

在开发原生 WebRTC 解决方案时,最后也是最重要的事情当然是 WebRTC 算法,这意味着 WebRTC 呼叫建立和音频/视频数据传输所需的步骤。前两个步骤(开始与信令服务器的连接定义信令通信)与 JavaScript 实现基本相同,唯一不同的是编程语言。相比之下,最后一步(从设备获取用户媒体)有很大不同,这意味着 Android 实现需要:

  • 初始化对等连接factory options
  • 创建对等连接factory instance
  • 创建音频源和音轨实例
  • 创建视频源和视频轨道实例
  • 初始化 Android 摄像头捕获器
  • 以选定的分辨率/帧速率开始相机捕获

所有这些操作的代码,以及 Android 中的一般 WebRTC 算法实现,都可以在这里找到

5) JWT 的安全性

由于我们使用 Microsoft SignalR 作为我们的信号服务器解决方案,我们的原生 Android WebRTC 应用程序也继承了 SignalR 带来的所有安全功能。对于我们的案例,这包括授权,这是通过通过信令服务器上的特殊AuthHub获取 JWT 安全令牌来完成的。稍后,当通过 SignalR 服务内的访问令牌提供程序连接到信令服务器时,将应用此令牌。可以在此处看到 JWT 令牌的获取,而在此处可以看到 SignalR 服务。

完成这五个步骤后,便可以建立安全的 WebRTC 连接,并开始进行实时音频/视频数据传输!可以在此处找到本文中展示的完整 Android 项目。

基于 JWT WebRTC 和 Android 的安全性

要不要开发原生 WebRTC 应用程序?

在本文中,我们展示了原生 Android WebRTC 库的可能性以及如何在 Microsoft SignalR 的工作解决方案中实现它。是构建本机 WebRTC 应用程序,还是选择标准 Web 应用程序,完全取决于项目需求,但是避免使用本机方法,因为它要求太高或成本太高,因为多年来本机库已经发展,并且如此处所示,实施与标准实施一样简单直接。

原文链接:https://ekobit.com/blog/webrtc-android-how-to-build-a-reliable-and-secure-webrtc-solution-with-native-api/

版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。

(1)

相关推荐

发表回复

登录后才能评论