WebRTC从入门到放弃

栏目: 后端 · 前端 · 发布时间: 5年前

内容简介:之前几个星期由于忙项目和各种事,前两天又刚去完Google Developer Day,很久没更文章了,今天从土里爬出来给各位献下丑。鉴于之前很多童鞋要求介绍WebRTC入门,我就来介绍下WebRTC。我是android开发,所以我下面的文章就以android环境的配置来写,iOS相比较起来还是比较简单的。配置文章网上还是有很多,就简单写写。首先,你要有一个大约25G的linux虚拟机环境,如果直接装了linux那就再好不过了。接下来,你需要一个非常强大的VPN能够支撑下载10几G的源码(f*** GFW)

之前几个星期由于忙项目和各种事,前两天又刚去完Google Developer Day,很久没更文章了,今天从土里爬出来给各位献下丑。鉴于之前很多童鞋要求介绍WebRTC入门,我就来介绍下WebRTC。

0x001 配置

我是android开发,所以我下面的文章就以android环境的配置来写,iOS相比较起来还是比较简单的。配置文章网上还是有很多,就简单写写。首先,你要有一个大约25G的 linux 虚拟机环境,如果直接装了linux那就再好不过了。接下来,你需要一个非常强大的VPN能够支撑下载10几G的源码(f*** GFW),我建议直接上VPS,远程下载和编译,然后scp到本地(这里安利下Google Cloud,第一次注册赠送200刀的试用金,完全够满足下载编译,性能也是比某XX云好很多)。搞定上面的步骤,你就走完了85.4%的配置,剩下的就是follow官网的step了。android配置链接 iOS配置链接 PS. WebRTC从M54版本开始,把三个基础类单独放到了一个包,虽然这个包名还是org.webrtc。。。。所以编译完后要记得把这个基础类包也加到项目里,当然还有一种办法就是直接copy源代码,然后加一个org.webrtc的包,把源代码放到里面去。

0x010 安装WebRTC demo

首先你需要编译一下demo,下面是编译步骤

cd <path/to/webrtc>/src
ninja -C out/Default AppRTCMobile
adb install -r out/Default/apks/AppRTCMobile.apk
复制代码

当然最后一步,如果你是在VPS或者虚拟机,那就先拷到本机,然后安装。 使用demo的时候请注意,由于这里使用的服务器是Google的服务器,然后大家懂的,搭个梯子使用吧。 当然你也可以使用自己的服务器,修改Room server URL即可

WebRTC从入门到放弃

那就需要你去协调服务端同学来给你搭建了,这里不做展开。

0x011 demo源码类介绍

如果直接给大家分析源码,感觉没有什么参考性,我就以demo的代码来做分析。

WebRTC从入门到放弃

Util包

这个包下面的类主要是一些通用的网络和线程操作,由于加入房间的特殊性,所以线程池是单工作线程的。

AppRTCAudioManager

顾名思义,就是音频管理类,可以做一些扬声器和耳机的切换操作。 当然切换也有回调

private void onAudioManagerChangedState() {  
    // TODO(henrika): disable video if AppRTCAudioManager.AudioDevice.EARPIECE  // is active.
}
复制代码

比如用户从耳际切换到扬声器就可以给一个提示。

AppRTCClient

作为服务端通信和客户端通信之间的桥接声明,比如收到服务端什么消息或者客户端之间的通信状况。

AppRTCProximitySensor

距离感应器,没什么太多可说的

CallActivity

主要负责维护和在街面上显示通信状态。也包括转发消息等一些操作。

CallFragment

主要负责UI展示,剥离CallActivity,避免CallActivity过于庞大。

CaptureQualityController

控制视频的输出分辨率大小,这个需要在设置里面打开,才能看到底下的seekBar

WebRTC从入门到放弃

ConnectActivity

初始化相机参数和通信参数,不详细赘述。

CpuMonitor, HudFragment

前一个是搜集Cpu的信息,包括使用率、频率等信息,HudFragment可以理解为参数的UI显示,包括上行下行带宽、丢包率等等。

DirectRTCClient, TCPChannelClient

就是只走TCP通信,包括发送和接收信息,不通过普通的http请求,demo里是以http请求和socket通信两个结合的,使用场景由业务决定。

##PeerConnectionClient P2P通信管理,包括维护客户端之间的连接、相机的参数调整以及协议的协商。具体代码不做叙述,如果后面需要,可做单独介绍。(因为真的很多东西!)

PercentFrameLayout

封装的FrameLayout,用于百分比显示view,和com.android.support:percent库效果一样。

RoomParametersFetcher

解析服务端的json数据,并转发房间参数和地址

SettingActivity, SettingFragment

设置页面,具体参数可看前一篇文章 视频直播之优化移动端WebRTC通信

UnhandledExceptionHandler

crash时抓异常,不会直接把错误抛出来

WebSocketChannelClient, WebSocketRTCClient

websocket封装,用于socket消息的向上层转发和向下层发送数据。


以上所述就是小编给大家介绍的《WebRTC从入门到放弃》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

大型网站技术架构

大型网站技术架构

李智慧 / 电子工业出版社 / 2013-9-1 / 59.00元

《大型网站技术架构:核心原理与案例分析》通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计案例,为读者呈现一幅包括技术选型、架构设计、性能优化、Web 安全、系统发布、运维监控等在内的大型网站开发全景视图。 《大型网站技术架构:核心原理与案例分析》不仅适用于指导网站工程师、架构师进行网站技术架构设计,也可用于指导产品经......一起来看看 《大型网站技术架构》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

随机密码生成器
随机密码生成器

多种字符组合密码

SHA 加密
SHA 加密

SHA 加密工具