CDN 分发网络在直播上的应用
传统的直播主要依赖于CDN网络进行分发,支持大规模并发,其能力取决于CDN网络的容量。与常规CDN的大文件和小文件分发不同,由于主播分布广泛,除了播放端的下行分发网络外,还提供了上行主播推流汇聚网络。仅当直播内容资源集中时,部分业务方会要求直播CDN直接回流至其源站。想了解更多信息,请访问:[
上行汇聚
当前,传统直播CDN的上行一般使用RTMP协议。也有采用UDP的方式,这种方式需要SDK的配合,行业内正在积极探索。国外有使用http-ts方式进行推流的实践,可以参考nginx-rtmp项目中的开源模块nginx-ts-module。目前,采用这种方式的关键挑战在于终端支持问题。而这个开源项目目前仅支持HLS和Dash的播放。
除了主播推流外,另一种方式是从汇聚点拉到业务方源站的流。
下行分发
下行分发通常使用的协议包括rtmp、http-flv和hls三种。关于这三种协议的优劣,网上已有大量文章探讨,通常我们会从终端兼容性、延迟和首屏等多个维度去考量。
关于rtmp和http-flv
由于rtmp协议在发送数据前需要较多的交互,追求首屏的直播平台倾向于选择http-flv协议作为下行分发协议。在实际线上环境中,采用http-flv可能会增加约100-200ms的延迟。尽管rtmp和http-flv的延迟可以控制在3秒内,但由于网络环境的复杂性,过低的延迟可能导致卡顿率上升。CDN通常会在用户接入时,多发送几秒的数据(通常是5-8秒)到播放端缓冲区,以应对网络波动。
关于hls
hls对Android和IOS端的支持较好,对P2P的支持也较强。对延迟要求不高的直播平台(如体育赛事)通常会选择这个协议。hls的延迟一般与切片大小有关,通常每个切片大小为6-8秒。如果用户在GOP(1秒)调小的情况下,CDN端可以将切片方式配置为按GOP切片的方式,HLS的延迟可以缩短到5秒内。但这样做可能会增加卡顿率。
其他协议
除了上述协议外,还有dash和hds等类似hls的协议。Dash在国外使用较多,而hds是Adobe自家的切片协议,较少有开源项目支持。
随着Adobe退出Flash,目前也有平台在研究替代技术。例如B站开源的flv.js项目,它可以在页面上使用js将flv转换为fmp4,然后使用H5进行观看。目前也有研究在CDN端加入http-fmp4的支持。尽管fmp4可以支持流式播放,但它与天生为流式传输而设计的协议如flv和ts相比,还存在许多问题。其中涉及到的技术细节和问题还需进一步研究和解决。UDP协议
UDP方式,如同上行使用UDP分发一样,下行使用UDP同样面临标准化和SDK配合的问题。对于直播而言,追求卡顿率的降低和延迟的极致体验,使得UDP成为未来的必然趋势。在互动直播中,我们会详细探讨这一话题。
转码服务
CDN一般提供转码服务,可分为在线转码和离线转码两大类。
在线转码
截图、水印、直播转码归类于在线转码。其中直播转码又分为主动转码和被动转码。
直播截图主要用于审核业务,如直播鉴黄,以及主播封面的定时更新。
水印则是为主播视频添加直播平台的标签,类似于电视台的台标。推流工具不同,加水印的方式也有所不同。
主动转码是用户推流到CDN后,按照客户需求将源流转化为多路子码流。播放端可根据网络状况选择播放码率。但主动转码资源消耗大,因为并非所有主播都有观众,而转码是一项资源密集型业务。
被动转码则是有观众观看子码流时再转码,这种方式大大减少了计算资源的消耗,被大型直播平台广泛采用。
离线转码
离线转码主要处理直播录制文件。例如,直播转为点播时,需要将录制文件转化为mp4或hls格式。轮播和延播也是离线转码的常见应用场景。
FLV+H.265(HEVC)
尽管官方标准FLV不支持H.265,但为降低带宽成本,许多直播平台采用FLV+H.265的支持方式。转码需要对ffmpeg进行修改,但H.265的转码对终端要求较高,应用尚不广泛。
录制
直播录制主要使用FLV和hls两种格式。nginx-rtmp的record模块支持FLV录制,而hls模块则支持hls录制。
为何不使用mp4格式呢?主要是因为mp4的封装结构与直播特性的兼容性问题。mp4的fast-open特性使得moov头和mdat的排列方式在直播中不适用。在直播中,数据帧是实时增加的,导致moov头一直变化,无法确定后面数据帧的偏移位置。CDN一般更常用的录制格式是对流式传输较为亲和的FLV和hls。MP4格式也可以像HLS一样进行分片存储,但我们在处理直播转点播的内容时,更倾向于在直播完成后将整个内容封装为MP4格式,或者在播放超过一定时间后,比如1小时,再将其转换为MP4文件。这样的处理方式既方便又高效。
时移功能
当前,时移功能更多地采用HLS方式实现,也有部分使用FLV格式。但在使用FLV时,需要对大文件进行分片处理。在直播过程中,时移功能通常需要与录制功能结合使用,以满足观众的回放需求。
鉴权机制
鉴权主要分为上行鉴权和下行鉴权两大类。
直播的鉴权方式多样,其中包括:
1. Referer鉴权:主要用于下行http传输,根据referer的白名单或黑名单进行权限控制。但这种方式的安全性相对较低,相对容易被破解。
2. 签名算法鉴权:适用于上行和下行,直播平台会根据用户的key和timestamp参数,以及用户的secret生成一个signature,然后与用户提供的signature进行对比。这种方式的安全性较高,因为timestamp保证了signature在一定时间范围内(一般是分钟级别)的有效性。直播平台不会将key直接放到客户端代码中,而是有一套从服务端获取signature的方法。
3. 回源鉴权:也适用于上行和下行。当请求到达CDN节点后,CDN会向业务平台的API服务器发起请求,由业务平台判断是否允许该请求通过。为保证首屏播放的及时性,一般采用异步方式,即先放行播放端,同时向业务平台API服务器发送鉴权请求。拿到鉴权结果后,如果是禁播状态,再通过禁播接口对观众进行断流处理。
CDN节点一般支持以上一种或多种鉴权方式的同时使用。
其他业务功能
除了基本的直播功能,还包括断流、禁播、开停播通知、观众人数统计等功能。
轮推网视频直播服务器解决方案以其高效解决直播技术难题的能力脱颖而出。拥有全球CDN节点等众多优势功能选择,致力于为广大用户提供高效、稳定的直播流媒体解决方案,满足各种直播需求。
网络推广
- CDN 分发网络在直播上的应用
- 漫谈游戏服务器架构
- 关于网站收录的完美解决办法
- 企业级渗透测试服务怎么做
- VMware vSAN超融合基础架构 虚拟化集群解决方案
- 常见的ChatGPT相关错误提示及解决办法
- seo全攻略怎么样 seo快速入门教程
- 香港服务器配置IPv6隧道教程
- DNS域名劫持的几种方式及解决方法
- 精品双拼再交易?Weihai.com超15万聚名网结拍?
- 块存储、文件存储、对象存储三种存储类型的区
- 中国互联网骨干网详解,国外互联网骨干网互联
- vip域名:新顶级域名中的佼佼者
- 百度这些年推出了哪些算法 搜索引擎算法大揭秘
- 网络超载效率计算公式
- 国内哪些虚拟主机比较好 中国十大虚拟主机排名