WebRTC原生开发和混合开发优缺点

WebRTC的出现,让企业快速开发出一个支持全平台的音视频程序成为可能。在WebRTC之前,企业想要开发出一个全平台的音视频程序,难度,工作量非常大。使用WebRTC后,音视频程序中一些通用的模块比如音视频采集,播放模块,rtp,rtcp协议模块,都可以直接复用WebRTC现成的,不用自己再重复造轮子。这些模块开发难度不是很大,但是工作量非常大。使用WebRTC后,企业可以专注于优化流程,解决bug,实现业务需求。

目前,开发WebRTC程序有两种途径
  1. 原生开发,自己下载WebRTC代码,每个平台自己编译。在WebRTC API基础上自己再做封装和二次开发。
  2. 调用WebRTC javascript接口,WebRTC程序必须运行在支持WebRTC的浏览器中,用到的技术有javascript,html,css。windows,android,ios,linux可以共用一套代码。

在下面的文章中,我们将详细阐述WebRTC原生开发和混合开发之间的主要区别。


WebRTC 原生开发
WebRTC代码是用C++开发的,如果采用原生开发,团队中必须要有人对C++精通。而且如果要想能看懂和修改WebRTC代码,只是会C++是远远不够的,还要对流媒体技术很熟悉。WebRTC涉及的rfc文档有20多个,如果没有理论知识做支撑,WebRTC代码真的不是哪么容易可以看懂的。开发windows端,android端,ios端WebRTC程序,需要用到的技术和人员配置大概如下:

  1. windows端,界面采用Qt或者DirectUI,直接使用C++接口调用WebRTC的功能,人员至少需要一个Windows客户端开发人员和WebRTC SDK开发人员。
  2. android端,界面采用android原生界面,使用jni技术调用WebRTC功能,人员配置方面至少需要一个安卓开发人员和WebRTC 安卓SDK开发人员。
  3. Ios端,界面采用ios原生技术,使用oc调用WebRTC功能,人员配置方面至少需要一个ios开发人员和一个WebRTC SDK开发人员

综上所述,可以发现如果采用原生技术开发,需要的开发人员还是比较多的,涉及的技术点也多,相应的测试人员的工作量也大,想要把三个端的客户端全部做好,难度还是挺大的。

目前,WebRTC桌面版本稳定性和兼容性做的还比较好。移动版本由于移动版本的chrome使用的人比较少,Google在这方面投入还不够多,兼容性和稳定性还有很多要提高的地方。如果你的应用程序手机型号比较复杂,哪只能使用原生开发了,你可以在WebRTC官方版本之上把兼容性和稳定性做的更好。

安卓版本只有在安卓4.4以后的WebView才支持WebRTC功能,Ios版本的的chrome根本不支持WebRTC功能,据说Ios11版本的safari会支持WebRTC,但是在兼容性方面和chrome的WebRTC会有些兼容性问题。所有你的用户还有比较老的手机的话,哪你也只能采用原生开发了。

原生开发时,编译出来的WebRTC开发包大小在3M左右,而采用混合开发的话,App最后打包出来的大小都是在30M以上,所以如果你的应用程度如果对程序安装包大小有要求的话,也只能采用原生开发。
最后,如果你的应该程序还要加上H265之类的视频编码,或者对视频,音频输入源有特殊要求的话,都只能采用原生开发。
WebRTC混合应用开发

采用混合应用工发WebRTC程序,就是用javascript调用WebRTC接口,使用html,css来做显示界面。目前使用Html5来开发App和桌面程序也慢慢流行起来,比如React native技术。混合应用开发的好处就是一套代码可以兼容
windows,mac,ipad,ios,android,浏览器,一个全栈前端开发人员就可以全部搞定,开发工期比较短,难度也相对低一点。使用混合应用开发的缺点就是不能定制WebRTC底层,你只能使用WebRTC标准功能,如果WebRTC底层有bug,你也没有办法修改,还有一个缺点就是安装包比较大。
采用html5来开发WebRTC还有一个优势就是你可以在手机QQ,微信安卓版本中直接跳转,这意味用户不用安装任何程序,直接可以从微信或者手机QQ转你你的程序,这对于推广还是比较有利的。

结论
采用原生开发还是混合开发,没有决对的好坏之分。这要根据你团队研发人员的情况和目标客户情况灵活对待。
1.如果团队前端实力比较强,哪你就使用混合开发模式。
2.如果App面向的是的用户量非常大,手机型号还不好固定,哪只能采用原生开发。
3.如果目标客户是企业客户,对安装包大小不在意,手机型号也好固定。哪可以采用混合开发。
4.如果要对接监控摄像头之类的非标准音视频设备,或者要采用VP8,VP9之外的其它视频编码,哪只能
采用原生开发了。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WebRTC 简介 WebRTC,名称源自网页实时通信(Web Real-Time Communication)的缩写,是一个支持网页浏览器进行实时语音通话或视频聊天的技术,是谷歌2010年以6820万美元收购Global IP Solutions公司而获得的一项技术。 WebRTC提供了实时音视频的核心技术,包括音视频的采集、编解码、网络传输、显示等功能,并且还支持跨平台:windows,linux,mac,android。 虽然WebRTC的目标是实现跨平台的Web端实时音视频通讯,但因为核心层代码的Native、高品质和内聚性,开发者很容易进行除Web平台外的移殖和应用。很长一段时间内WebRTC是业界能免费得到的唯一高品质实时音视频通讯技术。 为什么需要 WebRTC 开发者教程? 虽然WebRTC技术已经较为成熟,其集成了最佳的音/视频引擎,十分先进的codec,且包含了使用STUN、ICE、TURN、RTP-over-TCP的关键NAT和防火墙穿透等众多门槛并不低的技术。抛开音视频技术本身的复杂性外,要想找到合适的资料、完整的代码和库、配合合适的IDE和辅助工具能正常地实现编译和安装都非常的不容易,而这还只是个开始。没有靠谱的教程,你该怎么开始?那么地坑等在那,难道你打算一个一个趟过去? 本《WebRTC 零基础开发者教程》主要讲了什么 本文中提供下载的《WebRTC 零基础开发者教程》将以一个初学者的角度,从0开始逐步引导你掌握WebRTC开发的方方面面(当然,教程中更多的是操作性的内容,具体到技术原理和实现,显然不是本教程的讨论范畴)。 《WebRTC 零基础开发者教程》目录 1 工具 1.1 depot_tools 1.1.1 目标 1.1.2 Chromium 1.1.3 使用说明在这儿 1.1.4 下载 1.1.5 使用 1.1.6 具体使用例子 1.2 Gyp工具 1.3 Python工具 1.4 本地集成开发环境(IDE ) 1.4.1 Visual studio 1.4.2 Kdevelop 1.4.3 Eclipse 2 Webrtc 2.1 下载、编译 2.1.1 Windows下 2.1.2 ubuntu下编译 2.1.3 编译Android(只能在 linux 下) 3 webrtc开发 3.1 开发P2P视频软件需要处理的问题 3.1.1 用户列的获取、交换、信令的交换 3.1.2 P2P通信 3.1.3 多媒体处理 3.2 webrtc架构 3.2.1 WebRTC架构组件介绍 3.2.2 WebRTC核心模块API介绍 3.2.3 webRTC核心API详解 4 Libjingle详细介绍 4.1 重要组件 4.1.1 信号 4.1.2 线程和消息 4.1.3 名称转换 4.1.4 SSL支持 4.1.5 连接 4.1.6 传输,通道,连接 4.1.7 候选项 4.1.8 数据包 4.2 如何工作 4.2.1 Application模块 4.2.2 XMPP Messaging Component 模块 4.2.3 Session Logic and management commponent 模块 4.2.4 Peer to peer Component 模块 4.2.5 其他 4.3 建立libjingle应用程序 5 代码分析 5.1 音频通道建立过程 5.2 音频接收播放过程 5.3 视频接收播放过程 6 协议 6.1 XMPP协议 6.1.1 原理介绍 6.1.2 XMPP 协议网络架构 6.1.3 XMPP 协议的组成 6.1.4 Xmpp介绍 6.1.5 协议内容 6.2 Stun协议 6.2.1 P2P实现的原理 6.2.2 P2P的常用实现 6.2.3 Stun URI 6.2.4 内容 6.2.5 中文内容 6.2.6 开源服务器 6.2.7 公开的免费STUN服务器 6.3 Turn协议 6.3.1 概念 6.3.2 Turn uri 6.3.3 开源服务器工程 6.3.4 开源库 6.4 交互式连接建立(Interactive Connectivity Establishment) 6.4.1 IETF规格 6.4.2 开源工程 6.5 XEP-0166 Jingle 6.5.1 绪论 6.5.2 需求 6.6 Sctp协议 6.7 Rtp协议 7 附件 7.1 Gyp工具 7.2 Google test程序 7.3 Webrtc库介绍 7.4 webrtc代码相关基础知识 7.5 STUN和TURN技术浅析 7.6 基于ICE的VoIP穿越NAT改进方案 7.7 ubuntu安装使用stuntman 7.8 一个开源的ICE库——libnice介绍 7.9 4种利用TURN穿越对称型NAT方案的设计与实现 7.10 基于ICE方式SIP信令穿透Symmetric_NAT技术研究
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值