zoukankan      html  css  js  c++  java
  • Android WebRTC 音视频开发总结(一)

     

    本系列文章主要总结和分享WebRTC开发过程中的一些经验,转载请说明出处(博客园RTC.Blacker),更多交流与合作请看页面上方的子标题!

     

    一、WebRTC是什么?

        可能您还不知道WebRTC是什么,但您一定用过他里面的东西,因为QQ就用到了他的核心技术,不过那时候这些东西还不叫WebRTC,他也还掌握在GIPS手里(他们家的语音技术可谓独步天下),而且当年小马哥也给人家交了不少USD,扯远了。

     

        WebRTC是Google于2011年6月3日开源的即时通讯项目,旨在使其成为客户端视频通话的标准。其实在Google将WebRTC开源之前,微软和苹果各自的通讯产品已占用很大市场份额(如Skype),Google也是为了快速扩大市场,所以将他给开源。经常接触开源的人应该很容易理解Google这种策略,只不过在国内大家都喜欢弄成SDK,然后按年按月按用户数给你收费,总让你觉得不爽,呵呵。

     

        刚接触WebRTC的时候你会被里面的一堆概念搞晕,特别是对没接触过音视频的人来说,如WebRTC, ICE, STUN, TURN, P2P, NAT, Jingle, TALK, VOIP, FFMPEG, H264, VP8, NACK, RTP, RTCP, RTSP, RTMP, SIP, XMPP, ISAC, ILBC, OPUS, G711, G722.   晕了吧,凡事都要有个过程的,一步步来吧!不懂了就问问度娘或GOOGLE,再不懂就发个邮件给我(左边有联系方式:RTC.Blacker@gmail.com),咱们一起交流,不过问之前请先将问题描述清楚,节省大家时间也便于交流。

     

       如果想简单测试效果,可以试试我自己搞的东东:

       1.  http://www.cnblogs.com/lingyunhu/p/rtc23.html

       2.  http://www.cnblogs.com/lingyunhu/p/3722029.html

     

       如果想快速了解开发过程,可以看看我整理和翻译的东东:

       1.  http://www.cnblogs.com/lingyunhu/p/4129425.html

       2.  http://www.cnblogs.com/lingyunhu/p/4058182.html

     

       更多相关原创文章详见:http://www.cnblogs.com/lingyunhu/tag/webrtc%20android%20ios/

     

    二、WEBRTC代码如何获取和编译。

    1、下载编译:做这个动作前您最好先确认您是否需要做这个动作,如果仅仅做基于浏览器的开发您可以略过这个步骤,因为您要的东西浏览器都帮您做好了。

    2、环境准备:对刚入门的人来说编译WEBRTC很头疼,特别是对没接触过linux的人来说,虽然网上有很多资料,但是实际编译过程中总会出现这样或那样的错误,很多错误都不知所措。其实编译不过的主要原因就是有些文件下载不下来(因为国家防火墙限制),所以这里给出一个编译WebRTC的最简单的解决方案:

    2.1、买一个付费的VPN账号,其实买VPS是最好的,不过成本比较高。

    2.2、参考:http://www.webrtc.org/reference/getting-started,很详细,看仔细。

    这个方案屡试不爽,我已经成功编译过好几次了,如果还有问题可以联系我(andorid开发者来说最好使用ubuntu 64位环境,不要在windows下面搞。

    2.3、最近这个代码越来越难下了,所以我也不会去轻易更新,或者我就直接去香港下载,强吧!

    2.4、网上很多这方面的资料,建议您参考喔上面的做法,不然后面会走很多弯路,因为有些资料都过时了,作者也没有去更新。

     

    三、运行WebRTCDemo

    1、安装WebRTC/Trunk/out/WebRTCDemo-debug.apk,他支持点对点视频,在其SETTINGS页签中设置好对方IP,点击MAIN页签中的StartCall即可与对方开始视频通话,以前这个demo是有视频功能,现在只有音频功能,因为google将一些api拿掉了,为了标准化嘛,所以以后下载代码时找不到这个demo也不要惊讶,其实ios上根本就没有这个demo

     

     

    四、AppRTCDemo如何使用?

        WebRTCDemo可以直接做成P2P的效果,AppRTCDemo则需要另外一个服务端(也可直接连接:https://apprtc.appspot.com/,当然你也可以自己部署这个服务端,他是利用libjingle和XMPP来处理信令交互的,而且基于ICE协议实现P2P,至于什么是ICE,什么是STUN,TURN我在后面的文章中都有陆续讲到。

     

        AppRTCDemo的最大问题就是google为了推广自己的东东,将他搞得很复杂,服务端部署起来也很复杂,所以我后来直接做了一个移植,信令服务全部自己实现,现在已经实现了安卓,ios,pc之间视频通话的效果,而且也陆陆续续也做了不少手机适配方面的优化,很适合用在社交,智能家居,安防监控,在线教育等行业,接下来要做的工作也就是不断加入新功能,更新,优化。

     

    五、WebRTC的工程文件在不同项目如何管理?

        因为WebRTC是跨平台的,支持mac,windows,linux,但不同平台下用的工程文件格式不一样,如VisualStudio下是.vcproj,是每个开发平台下手动创建自己的工程文件吗?答案是否定的,他是通过.gyp文件来管理的,说白了.gyp文件相当于是他的工程描述文件,类似JSON格式,不同平台下编译的时候根据.gyp文件产生对应格式的工程文件,如.vcproj。

     

        说到这里就得谈谈它的编译方式ninja,搞chrome的那些程序员估计是受不了make的编译速度,所以开发了ninja。所以如果运行gclient runhooks的时候会生成很多*.ninja文件(这些文件在out目录下),ninja就是根据这些文件进行编译的,这些文件语法都比较简单,基本上都是rule和build,这样就产生了ninja的优势----快速编译,他很多条件都是预先决定的,比make快好多好多!

     

  • 相关阅读:
    (Java实现) 洛谷 P1603 斯诺登的密码
    (Java实现) 洛谷 P1036 选数
    (Java实现) 洛谷 P1036 选数
    (Java实现) 洛谷 P1012 拼数
    (Java实现) 洛谷 P1012 拼数
    (Java实现) 洛谷 P1028 数的计算
    (Java实现) 洛谷 P1028 数的计算
    (Java实现) 洛谷 P1553 数字反转(升级版)
    8.4 确定两个日期之间的月份数或年数
    (Java实现) 洛谷 P1553 数字反转(升级版)
  • 原文地址:https://www.cnblogs.com/lingyunhu/p/3578218.html
Copyright © 2011-2022 走看看