rtmp, rtsp, webrtc 简单的关系总结
- WebRTC,名称源自网页即时通信(英语:Web Real-Time Communication)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的 API
它于 2011 年 6 月 1 日开源并在 Google、Mozilla、Opera 支持下被纳入万维网联盟的 W3C 推荐标准。
目前主要应用于视频会议和连麦中,协议分层如下:
优点
·W3C 标准,主流浏览器支持程度高
·Google 在背后支撑,并在各平台有参考实现
·底层基于 SRTP 和 UDP,弱网情况优化空间大
·可以实现点对点通信,通信双方延时低
缺点
·ICE,STUN,TURN 传统 CDN 没有类似的服务提供
- 關於libjingle_peerconnection庫
为什么是peerconnection的库呢?
第一,peerconnection是webrtc对外的提供的比较全的接口的类
第二,peerconnection在框架的高层,与应用层最近,需要的改动最少
第三,peerconnection最容易编译和集成
第四,如果你想要两个人简单的直播连麦,peerconnection就足够了
直播
简单来说就是一个人发布自己的直播供别人观看,可以有一点延迟,重点在服务器的稳定和流量带宽,CDN的分发。而目前直播技术最简单成熟的就是基于RTMP的推流拉流,在此我推荐SRS(http://www.chnvideo.com/blog-classic-srs.html),原因很简单,就是简单高效稳定开源,文章可参考
连麦
连麦是现在直播中比较高大上的一个功能,可以和主播直接互动,市面上的映客,ME直播可以,一般都是两个人或三个人之间互动,可以说是为直播锦上添花,拉近了主播和和粉丝的距离,增加了人气等等等。
而基于WebRTC的P2P的连麦是比较简单的,最简单的思路,主播和粉丝P2P通了之后,主播将两路视频或者合成一路直接推送到SRS服务器上,供粉丝观看即可,连麦者获取主播视频本地观看。多人连麦可需要稍微复杂的服务架构设计和实现,有较大的难度,保证实时和稳定以及质量。
另外连麦模型还可以参考:视频直播中用户连麦技术模型与特点分析
- webrtc 怎么了????
如何看待B站 (bilibili) 开源 HTML5 播放器内核 flv.js?
https://www.zhihu.com/question/51997376?sort=created
直播未来属于RTMP还是HTTP?
dash:这个协议国内用的不多,http轮询传输,但是国外很多平台都在用,比如youtube直播,该协议是google公司研发的,和hls如出一辙,同样是将直播流数据切片,只不过不是ts文件,而是mp4或者3gp文件,又或者webm(vp8,vp9)文件,该协议同样和hls一样也是http传输,同样和hls主打的是“自适应动态码率”,大概意思就是当客户端网络不好的时候会无缝切换到低码率的路线。
hls和dash:这两种协议延时原因大致都是差不多的,因为切片了,切成小端的文件,单独开始传输,这就是延时的关键了,当然可以设置切成小文件,越小延时越低。按理说dash切片要比hls稍微先进一点,所以延时上dash要比hls低,但是同样的,切片了,就注定延时。
我列一个表作为总结:
协议 | httpflv | rtmp | hls | dash |
传输层 | http流 | tcp流 | http | http |
视频格式 | flv | flv tag | Ts文件 | Mp4 3gp webm |
延时 | 低 | 低 | 很高 | 高 |
数据分段 | 连续流 | 连续流 | 切片文件 | 切片文件 |
Html5播放 | 暂不支持 | 不支持 | 大部分支持 | 极大部分支持 |
服务器编程难易 | 简单 | 一般 | 一般+ | 中等 |
作者:Tinywan
https://github.com/notedit/rtmp-to-webrtc
基于RTMP和WebRTC开发大规模低延迟(1000毫秒内)直播系统
https://cloud.tencent.com/developer/article/1409975