内容简介:之前几个星期由于忙项目和各种事,前两天又刚去完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即可
那就需要你去协调服务端同学来给你搭建了,这里不做展开。
0x011 demo源码类介绍
如果直接给大家分析源码,感觉没有什么参考性,我就以demo的代码来做分析。
Util包
这个包下面的类主要是一些通用的网络和线程操作,由于加入房间的特殊性,所以线程池是单工作线程的。
AppRTCAudioManager
顾名思义,就是音频管理类,可以做一些扬声器和耳机的切换操作。 当然切换也有回调
private void onAudioManagerChangedState() { // TODO(henrika): disable video if AppRTCAudioManager.AudioDevice.EARPIECE // is active. } 复制代码
比如用户从耳际切换到扬声器就可以给一个提示。
AppRTCClient
作为服务端通信和客户端通信之间的桥接声明,比如收到服务端什么消息或者客户端之间的通信状况。
AppRTCProximitySensor
距离感应器,没什么太多可说的
CallActivity
主要负责维护和在街面上显示通信状态。也包括转发消息等一些操作。
CallFragment
主要负责UI展示,剥离CallActivity,避免CallActivity过于庞大。
CaptureQualityController
控制视频的输出分辨率大小,这个需要在设置里面打开,才能看到底下的seekBar
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从入门到放弃》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
ANSI Common Lisp
Paul Graham / Prentice Hall / 1995-11-12 / USD 116.40
For use as a core text supplement in any course covering common LISP such as Artificial Intelligence or Concepts of Programming Languages. Teaching students new and more powerful ways of thinking abo......一起来看看 《ANSI Common Lisp》 这本书的介绍吧!