更广义的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、使用声网实现语音直播功能,上下麦、闭麦、踢人等基础功能。