RTC技术(WebRTC)

JavaScript017

RTC技术(WebRTC),第1张

RTC(Real time communication)实时通信,是实时音视频的一个简称,我们常说的RTC技术一般指的是WebRTC技术,已经被 W3C 和 IETF 发布为正式标准。由于几乎所有主流浏览器都支持 WebRTC 标准 API ,因此也让浏览器之间无插件化的音视频互通成为可能, 大大降低了音视频开发的门槛,开发者只需要调用 WebRTC API 即可快速构建出音视频应用。

更广义的RTC技术,不单单局限于音视频,包括IM、图片、白板、文件共享等富媒体在内的实时交互也属于RTC技术范畴。

直播中我们关心的几个点:延迟、质量、成本等。

传统rtmp直播痛点:TCP,延迟高、拥塞导致卡顿问题较多(质量问题)。

互联网网络复杂、延时敏感、实时音视频流畅度及清晰度较低以和运营成本较高等。

没有一项技术能兼顾并解决直播中的所有问题,RTC是时延、流畅、质量、成本等的平衡,成为技术选型落地的模型。

我们在做RTC应用的时候,不应该一味地追求一些点,不应该在某些单点上用力过猛(比如单纯的追求抗丢包能力),导致最终的效果会打很多折扣,不能只着眼于延迟低,画质高,应该把视角放在用户的整体体验上。

RTMP只是TCP上的一个标准协议,所以接入是一个标准体系,推流端可以是OBS这种直播软件工具,也可自开发rtmp推流工具,播放端可以是Flash播放器(Adobe 2020 12月份已经弃用)、服务端有技术成熟的CDN技术和设施进行分发、Native的播放器或者flv.js/hls.js这种开源播放器组件,遵循rtmp、flv、hls标准即可,接入成本比较低。而一个完善的RTC服务应用,需要从推流端、服务端、到拉流端,一整套完整的全链路闭环技术。

视频会议、在线教育小班课、大班课、1v1视频连麦、多人视频连麦互动、语音聊天室、在线面试、在线医疗、云游戏、智能家居、在线签约、在线K歌等,遍地开花。

比如Zoom、腾讯会议、钉钉会议、微信音视频聊天

互动连麦+服务端转推rtmp至CDN,CDN分发给观众。

声网、腾讯云音视频、即构、阿里云RTC、华为云RTC、微吼VRTC、网易云信RTC、保利威RTC、Ucloud RTC、融云RTC、拍乐云等。

5G时代RTC技术满足实时通信的同时,将赋能 AI、AR、VR、智能家居、云游戏、远程辅助驾驶等场景化落地。

一、input

传统上传音视频文件的方法

优点:兼容性较好,几乎所有浏览器,所有机型都支持。

缺点:视频文件过大,无法压缩。视频录制完成后,一次性传输,不能实时传输。上传视频的瓶颈在于前端到node层传输较慢。

考虑,寻找前端压缩方法。

二、getUserMedia

兼容性很差,iPhone微信不支持,仅仅Safari支持。Android微信支持性还可以。webrtc的视频清晰度不佳,有可能影响算法准确率。

三、小程序

小程序中使用自研的人脸识别技术,审核不通过(腾讯就是这么*)

四、微信JSSDK

不支持视频API(只有音频和图片)

考虑,音视频分离,算了不考虑~~~

目前已使用的几种场景

1、iPhone微信录制视频,可自动压缩,上传效果还可以接受,可继续使用input,

2、Android微信可以考虑getUserMedia实现,

3、APP内嵌的H5页面使用APP集成的SDK(前提是自己公司的APP,对接方的怕是不会给提供)

4、支付宝环境,目前没有想到好的办法。

LC总监给提供的几个思路,待调研

flash

rtmp

cdn

第三方如声网

1、实现直播间内活动玩法,转盘、抽奖、PK等功能。

2、主要通过和客户端jsbarage交互,实现业务需求,同时保证动画效果的完美还原。

3、使用声网实现语音直播功能,上下麦、闭麦、踢人等基础功能。