最近,国家政策开始鼓励“地摊经济”,一时间各家企业平台纷纷推出地摊扶持政策,地摊概念股顺势大涨,地摊生态及配套商品也开始走俏,甚至在网络上也涌现出各种“新摊主速成攻略”,万亿的烟火经济俨然已经走上风口。
实际上,早就有人已经在网上“摆地摊”了,那就是直播带货!受到疫情的影响,线下实体纷纷停摆,直播带货受到了前所未有的追捧,企业们纷纷选择通过直播的形式,来提升品牌形象、保持与用户的互动并完成商品的销售。
那么问题就来了,在搭建直播平台或者应用的过程中,都需要关注哪些技术呢?CDN 又对直播起到什么作用呢?
一个直播系统都包括什么?
通常整个直播的系统可能包括:推流端经过一次边缘节点的加速,将视频直播流推到直播中心,在直播中心完成一系列转码、截图、录制、水印等处理,然后视频流再经过 CDN 分发,分发到不同的播放端,播放端有不同的 SDK 进行秒开、弱网等优化动作。
直播系统中的推流与播放
对于视频直播来讲,最重要的两个环节,一个是推流,一个是播放。推流一般采用 RTMP 协议,常用的推流端包括 OBS、手机 APP、FFmpeg 等。播放除了采用 RTMP 协议,还可以采用 HTTP FLV 和 HLS 协议,RTMP 和 HTTP FLV 是流式传输,HLS 是文件加速传输,常见的播放端包括:Flash / VLC / HTML5 / 手机 App 等等。对于阿里云直播系统来讲,大部分直播分发都是通过流式传输完成的,只有一少部分量是使用文件加速分发完成的。
流式分发与 CDN 直播系统
其实在直播场景中,不管是推流还是播放,流式分发都是长连接的,一场直播可能 5 个小时,推流在这 5 小时内不会中断。对于播放器来讲,服务器端获取到的是一帧一帧的音视频数据,不管是什么传输协议,都是采用 FLV tag 来封装。每一帧音频或者视频,都会有一个时间戳的属性。
视频直播流会传输音频帧和视频帧,对于音频帧来讲,它每一帧都可以独立解码,播放器从服务器获取到任何一帧音频帧之后,都可以独立渲染,听到声音。而视频分为视频关键帧和非关键帧,关键帧可以独立解码渲染,播放器拿到后可以直接看到画面,一般 10K 以上甚至几十 K;其他非关键帧解码依赖于前面的一些视频帧,播放器会根据前面的帧和这一帧来解码产生画面,非关键帧一般大小是几 K 甚至不到 1K。对于播放器来说,服务器一般会从视频关键帧开始发送,这样才不会产生花屏。
对于节点上直播服务器存储的内容,如果是文件加速,节点上存储的内容很明确,就是文件数据, URL 不变的话文件数据内容也不变。但是对于直播来讲,传输的就是帧数据,缓存的也是不断变化的帧序列数据。
下面的图里可以看到,当前的服务器缓存了 V1-V3 五帧数据,当 V4 这个关键帧出现了,服务器把之前的丢掉,开始缓存 V4 开始的音视频数据,以这个策略保证过来的播放端都是当前最新的数据。一般直播服务器都是用这个策略来进行服务器缓存的。
直播平台面临的挑战?
1、前面也说了,直播系统包含推流、转码、分发、播放等各个环境,经历了冗长复杂的网络环境,尤其是当业务场景逐渐丰富起来之后,功能需求也越来越多
2、一些关键指标的提升,比如:卡顿率、打开速度、流畅度、回源率等,任何指标的下降都可能会导致整个应用的用户体验下降,影响直播效果
3、直播平台经常会面临业务突发,数十万甚至数百万用户的同时在线,对服务器和带宽考验十分巨大
直播平台为什么要使用 CDN?
1、减少卡顿率,提升用户体验
直播,尤其是电商直播,对网络抖动十分敏感,稍有问题就会出现卡顿、花屏等问题,严重影响用户体验,甚至直接掉线影响销售。CDN 借助负载均衡系统能够将内容推送到接近用户的边缘节点,使得用户就近取得资源,可以大大提升访问效率。
2、业务峰值来临的时候,为流量高峰护航
在确保直播流畅度上,全球覆盖的 CDN 节点和精准调度系统缺一不可。CDN 节点是采用分布式架构,节点资源与带宽储备就代表了能够覆盖的用户的量级和广度。当突发峰值特别高的时候,CDN 系统会确保用更精准的调度策略,比如 DNS、IP 调度,来降低对直播的影响。打比方有一个装了很多冰块和水的杯子,如果我们要把杯子里面的狭小空间全部用上,我们先要把冰块放进去,再倒液态水。在智能调度的场景里,把“固体”和“液体”结合起来考虑,才能做到所有的节点、水位的精准控制,实现更精准的调度。
所以,选择节点和带宽资源覆盖广泛,综合实力强,质量有保证,具备大型项目最佳实践的 CDN 服务提供商对直播带货平台来说至关重要。想要在云上开启“地摊经济”,阿里云 CDN,了解一下~
阿里云全速重构年中大促中,CDN/ 全站加速、视频直播、视频点播等多款产品都推出限时折扣,点击登陆活动页面了解优惠详情
点击回顾 CDN 百科第一讲,最近你的 APP 崩了吗?
https://developer.aliyun.com/article/757268
点击回顾 CDN 百科第二讲,假如没用 CDN,网络世界会变成什么样?
https://developer.aliyun.com/article/759623
CDN 百科第三讲,如果用了云服务器,还需要做 CDN 加速吗?
https://developer.aliyun.com/article/763524
【CDN 百科】专栏中,我们会不断科普 CDN 知识,解读 CDN 实践,分享 CDN 案例,如果你也关注 CDN、使用 CDN,请留言回复你关心的话题,如果被选中就有机会获得阿里云 ET 公仔一个,包邮哦!