2020 年初,一场突如其来的疫情,小时候破天荒的想法居然真的成了现实:html
随着各地中小学纷纷网上开学,至此,辛勤的园丁们摇身一变,变成了当红主播,经过在线直播为学生授课;而学生们则变成了为主播刷“666”,刷“火箭”的粉丝。同时,五花八门的直播课教学“事故”也跟着层出不穷。web
例若有老师声情并茂地讲了一节课,最后发现没有开麦,一直对着空气口若悬河……浏览器
而有的同窗上课忘记关麦还不自知,数学课上背历史,场面一度十分尴尬……安全
有的老师家里网络太卡,等到网络恢复,卡顿结束,下课时间也到了……各类“翻车现场”虽然让直播网课的“娱乐性”直线上升,但学生的学习效能也略打折扣。因而,老师和同窗有了共同的心愿:但愿疫情早日结束,咱们要开学!服务器
虽然网课直播产生了不少段子,但仍是以教学为主,是现阶段“停课不停学”较有效的学习方式。微信
其实,不止于网课,公司会议、亲友拜年、朋友小聚,均可以经过直播实现,这样既能够防止人群汇集,又能完成想要的事情,一箭双雕。网络
说到直播,你们最关心的确定都是直播延迟问题,由于这会直接影响到直播的质量。过年期间在家,我那即将高考的妹妹在家上网课,而她最常说的一句话就是:“老师手速真快,问题还没回答呢,答案就已经出现到公屏上了。”架构
这就是直播延迟致使的。ide
众所周知,延迟和网络环境有很大的关系。网速跟不上,延迟就会变高;传递数据丢包时,会出现画面和声音“卡顿”现象。所以,想要进行一场完美的直播,不管直播环境仍是观看环境,都要保证网络的稳定。性能
除了网络因素,还有一个很大的影响直播延迟的缘由,那就是直播架构中选择的直播协议。目前经常使用的直播协议有三种,分别是:RTMP、HLS 和 HTTP-FLV。
RTMP
RTMP,即 Real Time Messaging Protocol(实时消息传输协议)。它是 Adobe 为 Flash 播放器和服务器之间的数据传输所开发的专有协议,该协议可经过 Internet 在编码器和服务器之间提供视频,音频和数据的高性能传输。RTMP 是一种基于 TCP 的复杂实时网络协议,专为低带宽下的高性能传输而设计。它对底层的优化也比其它协议更加优秀,基本上全部的编码器(摄像头之类)都支持 RTMP 输出。
除了上述的一些优势,RTMP 的最重要优点之一就是传输中的实时延迟很是低(大约在1-3秒),而 HTTP 流的延时通常在 10 秒以上。RTMP 流的技术成熟(如今已经有 10 多年的历史了)能够相对轻松地实现。它不但能够传输多种格式的视频和音频,还能够应用诸如播放器验证之类的安全功能。
可是,RTMP 也有一些缺点:
HLS
在 2019 年,使用过 Chrome 浏览器的用户应该都收到过浏览器的弹窗:“自 2020 年 12 月开始,Flash Player 将再也不受支持”。其实不止 Chrome 浏览器,其余浏览器也这类提示。目前你们还能够手动选择启用 Adobe Flash Player 插件,但到今年 12 月份后,Chrome 将完全禁止调用 Flash 插件。为此各个网站只能选择放弃 Adobe Flash Player,转身投入 HTML5 的怀抱。而 Adobe 也已经宣布,2020 年末将中止更新 Flash Player。
到 2020 年底,Flash 最终将会消失。这也是 Apple 向用户推广 HLS(HTTP Live Streaming)协议为流视频首选方式的缘由。
HLS 是 Apple 推出的基于 HTTP 协议的动态码率自适应技术,它支持 HTML5,而且实现很是简单。同时由于 HLS 是 Apple 提出的,因此不管是 iPhone、 iPad、Safari 都不须要安装任何插件就能够原生支持播放 HLS, 而如今 Android,Microsoft 和 Linux 设备也都支持播放使用 HLS 推送的流。
为了向每一个观看流媒体的人(包括屏幕小,网络不稳定的人)提供高质量的流,HLS 能够根据每一个设备的状况动态调整分辨率,这被称为自适应比特率流传输。固然了,HLS 不是以一个比特率建立一个实时流,而是使用一个代码转换器(一般位于服务器中)来建立具备不一样比特率和分辨率的多个流。而后,流媒体服务器再根据每一个设备的屏幕和网络状况发送最高分辨率的流。
HLS 同时还兼具如下特色:
HLS 能够说是如今最经常使用的流协议了。在国外发布的一份《2019 年视频流延迟报告》中显示,超过 45% 的参与者表示他们在使用 HLS 协议进行流分发。
HTTP-FLV
通常的直播应用要么使用 Adobe 的 RTMP 协议,要么使用 Apple 的 HLS 协议,下面咱们来讲说既结合了 RTMP 的低延时,又能够复用现有 HTTP 分发资源的流式协议:HTTP-FLV。
FLV 你们都比较熟悉,它是 Flash Video 的简称,FLV 流媒体格式是随着 Flash MX 的推出发展而来的视频格式。而 HTTP-FLV 表明经过 HTTP 以 FLV 格式传递的实时流。对于服务器端,因为如今仍是广泛使用 RTMP 进行推流,能够将 RTMP 流转换为 FLV;对于客户端,播放 FLV 流与播放静态资源中的 FLV 视频相同。固然,须要支持 FLV 的播放器。
HTTP-FLV 还具备如下特色:
三种协议对比
对于常常看直播和视频的小伙伴们,感兴趣的确定不只是视频内容,固然少不了有趣的弹幕了。若是说视频是一块蛋糕,那弹幕就是蛋糕上那些五光十色的点缀。弹幕的出现,让视频的内容表达更加丰富多彩,让你们忽然发现原来有这么多人陪我一块儿看,咱们还能一块儿互动,这种归属感是何等的强烈。
能够说弹幕是直播必不可少的一部分,那它能够借助什么技术实现呢?下面咱们来讲的就是 WebSocket。
WebSocket 是一种全新的协议,它将 TCP 的 Socket(套接字)应用在了 web page 上,从而使通讯双方创建起一个保持在活动状态链接通道,而且属于全双工(双方同时进行双向通讯)。而直播发送的弹幕须要实时显示,经过 WebSocket 协议可将本地客户端发送的弹幕信息经过服务端所有推送至其余用户的客户端并进行实时展现。WebSocket 协议更好的节省了服务器资源和带宽,而且可以更实时地进行通信。
在这以前,不少网站使用的是 HTTP 的轮询。HTTP 协议是半双工协议,也就是说在同一时间点只能处理一个方向的数据传输,属于单向传输。比起 HTTP,WebSocket 协议是全双工的,服务器能够随时主动给客户端下发数据,能够双向发送或接受信息,属于双向传输。WebSocket 能够经过客户端和服务器的握手创建链接,而且链接一直保持“打开”状态,这样既避免了资源浪费,又保证了实时性。
总结一下,WebSocket 主要有如下优点:
不止直播弹幕,相似网站在线咨询窗口、在线教育、体育实况更新等场景均可以经过 WebSocket 实现。又拍云将 WebSocket 协议 与 CDN 完美融合,支持单一域名即有 WebSocket 服务又包含 HTTP 服务,可实现两种服务同时加速,并经过多种技术优化手段,提高用户访问效率。
同时,针对疫情期间线上医疗、在线学习的需求量上升,又拍云提供了完整的在线解决方案,从文件上传、内容存储、音视频处理、内容分发、安全防御等方面为在线用户提供一站式服务。什么?你是技术小白?彻底不怕,上直播零门槛搭建线上直播,观看直播也无需下载任何 App,自动生成直播分享观看页面,同时还支持在第三方平台同步观看。还在等什么,赶快行动起来!
往期技术文章都在微信同步分享,能够添加微信:upyun0001