CDN百科第四讲 | 如何优雅地在云上“摆摊”——做直播带货,你不得不关注的技术
最近,国家政策开始鼓励“地摊经济”,一时间各家企业平台纷纷推出地摊扶持政策,地摊概念股顺势大涨,地摊生态及配套商品也开始走俏,甚至在网络上也涌现出各种“新摊主速成攻略”,万亿的烟火经济俨然已经走上风口。

实际上,早就有人已经在网上“摆地摊”了,那就是直播带货!受到疫情的影响,线下实体纷纷停摆,直播带货受到了前所未有的追捧,企业们纷纷选择通过直播的形式,来提升品牌形象、保持与用户的互动并完成商品的销售。
那么问题就来了,在搭建直播平台或者应用的过程中,都需要关注哪些技术呢?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://www.cnblogs.com/xuelisherry/p/12870289.html
点击回顾CDN百科第二讲,假如没用CDN,网络世界会变成什么样?
https://www.cnblogs.com/xuelisherry/p/12871432.html
CDN百科第三讲,如果用了云服务器,还需要做CDN加速吗?
https://www.cnblogs.com/xuelisherry/p/13047969.html
【CDN百科】专栏中,我们会不断科普CDN知识,解读CDN实践,分享CDN案例,如果你也关注CDN、使用CDN,请留言回复你关心的话题让我们知道啦~
CDN百科第四讲 | 如何优雅地在云上“摆摊”——做直播带货,你不得不关注的技术的更多相关文章
- 背包四讲 (AcWing算法基础课笔记整理)
背包四讲 背包问题(Knapsack problem)是一种组合优化的NP完全问题.问题可以描述为:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高 ...
- 斯坦福深度学习与nlp第四讲词窗口分类和神经网络
http://www.52nlp.cn/%E6%96%AF%E5%9D%A6%E7%A6%8F%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E4%B8%8Enlp%E7%A ...
- CDN百科第三讲 | 如果用了云服务器,还需要做CDN加速吗?
在全站上云的背景下,云计算已经不仅仅是大型互联网公司的独享概念,正在被更多的传统企业.中小企业甚至个人站长所采用.在众多云计算服务中,最常见两个产品就是云服务器和CDN,今天的CDN百科第三讲,就给大 ...
- linux 学习3 第四讲 文件常用命令
好几天没有在网上总结了.我把ppt先誊写在本子上,这样听的时候记录就方便很多,添些东西就可以. 我想先看shell那部分,但是没有之前几章的准备,是没法跟着视频动手操作的.所以还是按部就班得学习. 虽 ...
- Stanford机器学习---第四讲. 神经网络的表示 Neural Networks representation
原文 http://blog.csdn.net/abcjennifer/article/details/7749309 本栏目(Machine learning)包括单参数的线性回归.多参数的线性回归 ...
- 转:C#精髓 第四讲 GridView 72般绝技
说明:准备出一个系列,所谓精髓讲C#语言要点.这个系列没有先后顺序,不过尽量做到精.可能会不断增删整理,本系列最原始出处是csdn博客,谢谢关注. C#精髓 第四讲 GridView 72般绝技 作者 ...
- 《ArcGIS Engine+C#实例开发教程》第四讲 状态栏信息的添加与实现
原文:<ArcGIS Engine+C#实例开发教程>第四讲 状态栏信息的添加与实现 摘要:在上一讲中,我们完成了 MapControl 和PageLayoutControl两种视图的同步 ...
- 32位汇编第四讲,干货分享,汇编注入的实现,以及快速定位调用API的数量(OD查看)
32位汇编第四讲,干货分享,汇编注入的实现,以及快速定位调用API的数量(OD查看) 昨天,大家可能都看了代码了,不知道昨天有没有在汇编代码的基础上,实现注入计算器. 如果没有,今天则会讲解,不过建议 ...
- PE格式第四讲,数据目录表之导入表,以及IAT表
PE格式第四讲,数据目录表之导入表,以及IAT表 一丶IAT(地址表) 首先我们思考一个问题,程序加载的时候会调用API,比如我们以前写的标准PE 那么他到底是怎么去调用的? 他会Call 下边的Jm ...
随机推荐
- 第几天?(hdu2005)
第几天那个代码模板可以保存起来. #include<stdio.h> #include<math.h> #define PI 3.1415927 using namespace ...
- Python小技巧:如何批量更新已安装的库?
众所周知,升级某个库(假设为 xxx),可以用pip install --upgrade xxx 命令,或者简写成pip install -U xxx . 如果有多个库,可以依次写在 xxx 后面,以 ...
- 一元三次方程组求解 luogu P1024
题目传送门 首先,要明确题目信息,f(x1) * f(x2) < 0, 则一定存在实数根在区间(x1, x2).且所有的根都在[-100, 100)之间.根与根的绝对值之差 >= 1 那么 ...
- Python基础知识思维导图
看不清的可以右键保存到本地,或者在新标签页中打开图片
- R语言入门二
一.R语言应知常用函数 1.getwd() 函数:获取工作目录(同eclipse设置workspace类似),直接在R软件中使用,如下图: 2.setwd(dir=”工作目录”) 函数:设置R软件RS ...
- [leetcode] 并查集(Ⅱ)
最长连续序列 题目[128]:链接. 解题思路 节点本身的值作为节点的标号,两节点相邻,即允许合并(x, y)的条件为x == y+1 . 因为数组中可能会出现值为 -1 的节点,因此不能把 root ...
- & vue项目中的rem适配
有个朋友问我在vue项目怎么做rem适配,我工作中都是用的dva,但是我感觉道理都是一样的,换汤不换药.配完就顺手写下来吧! 需要安装两个插件库 lib-flexible和px2rem-loader ...
- Parrot os更新内核及/boot空间清理
升级时发现boot,空间满了,卸载以前的内核,清理空间. 如何升级内核请查看我上篇博客:https://www.cnblogs.com/junsec/p/11453049.html 卸载多余内核,清理 ...
- SSL/TLS/WTLS
转载来自http://blog.csdn.net/fw0124/article/details/8470940 一 前言 首先要澄清一下名字的混淆: 1 SSL(Secure Socket Layer ...
- 服务器ip地址 服务器ip登录方法
服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器.其中域名必须对应一个IP地址,一个域名可以有多个IP地址,而IP地址不一定有域名. 简单的解释就是:服 ...