直播行业愈发火爆,近期刘畊宏一首本草纲目的直播开启了大家在家健身的热潮,抖音小杨哥自爆开播十分钟同时在线100万人,众多游戏职业联赛直播让无数玩家身临其境般呐喊,无论哪种类型的直播,延迟都是用户关注的痛点和重点,特别对于在线教育这种随时需要老师和学员互动的场景,今天和大家介绍一款延迟一秒内的直播系统。
为什么会有直播延迟
视频直播主要涉及到采集、编码、传输、服务器转码、解码这样的流程。而延迟可以理解为几个关键延迟成分的集合:处理延迟、传输延迟和传播延迟。处理延迟是指系统对数据包报头进行分析和确定数据包被发送到哪里去所要花费的时间。传输延迟是指将包中的数据位传入线路所需要的时间。根据数据包的大小和带宽的不同而有所变化。但并不取决于传输线路的距离,而传播延迟是指数据包的第一个比特位从发送端到达接收端的时间。通常也被称为距离的延迟,受数据传输距离和传播速度的影响
我们如何做到一秒内延迟
上述这些延迟无法避免,而直播协议的选择对直播迟延影响比较大。目前国内比较常见的三种直播协议 RTMP、HLS、HTTP-FLV,下面来简单介绍下。RTMP 是专为流媒体开发的协议,对底层的优化比其它协议更加优秀,同时它 Adobe Flash 支持好,基本上所有的编码器(摄像头之类)都支持 RTMP 输出。现在 PC 市场巨大,PC 主要是 Windows,Windows 的浏览器基本上都支持 Flash。另外 RTMP 适合长时间播放,曾经有过测试,连续 100 万秒,即 10 天多连续播放没有出现问题。最后 RTMP 的延迟相对较低,一般延时在 1-3s 之间,一般的视频会议,互动式直播,完全是够用的。
当然 RTMP 并没有尽善尽美,它也有不足的地方。一方面是它是基于 TCP 传输,非公共端口,可能会被防火墙阻拦;另一方面,也是比较坑的一方面是 RTMP 为 Adobe 私有协议,很多设备无法播放,特别是在 iOS 端,需要使用第三方解码器才能播放。
HLS 是由苹果公司提出的基于 HTTP 的流媒体网络传输协议。是苹果公司 QuickTime X 和 iPhone 软件系统的一部分。主要应用于 iOS 设备,包含(iPhone, iPad, iPod touch) 以及 Mac OSX 提供音视频直播服务和录制内容(点播)等服务。它的工作原理是把整个流分成一个个小的基于 HTTP 的文件来下载,每次只下载一些。当媒体流正在播放时,客户端可以选择从许多不同的备用源中以不同的速率下载同样的资源,允许流媒体会话适应不同的数据速率。性能高,可以通过 CDN 进行网络分发。
而 HLS 的劣势也非常明显,首先 HLS 实时性差,延迟高,HLS 的延迟基本在 10s+ 以上。另外由于 HLS 请求的并不是完整的数据流,导致它产生文件碎片多。ts 切片较小,会造成海量小文件,对存储和缓存都有一定的挑战。
FLV是一种在网络上传输的流媒体数据存储容器格式。而我们所说的 HTTP-FLV 即将流媒体数据封装成 FLV 格式,然后通过 HTTP 协议传输给客户端。HTTP-FLV 能够好的穿透防火墙,它是基于 HTTP/80 传输,有效避免被防火墙拦截。另外,它可以通过 HTTP 302 跳转灵活调度/负载均衡,支持使用 HTTPS 加密传输,也能够兼容支持 Android,iOS 的移动端。FLV 也有一个缺点,由于它的传输特性,会让流媒体资源缓存在本地客户端,在保密性方面不够好。
在不同的直播场景中,选用合适的直播协议,能大大降低直播的延迟。
码率选择
针对不同的直播需求,我们给用户提供了不同的分辨率选择,可以在学员网络较差的时候给学员提供较好的流畅度
目前珊瑚课堂提供一秒内超低延迟、普通六秒左右高延迟、高并发的一站式解决方案,详情请点击官网右侧免费试用