CDN高级技术专家周哲:深度剖析短视频分发过程中的用户体验优化技术点

摘要: 深圳云栖大会已经圆满落幕,在3月29日飞天技术汇-弹性计算、网络和CDN专场中,阿里云CDN高级技术专家周哲为我们带来了《海量短视频极速分发》的主题分享,带领我们从视频内容采集、上传、存储和分发的角度介绍整体方案,并且重点讲解短视频加速的注意事项和用户体验优化要点。

深圳云栖大会已经圆满落幕,在3月29日飞天技术汇-弹性计算、网络和CDN专场中,阿里云CDN高级技术专家周哲为我们带来了《海量短视频极速分发》的主题分享,带领我们从视频内容采集、上传、存储和分发的角度介绍整体方案,并且重点讲解短视频加速的注意事项和用户体验优化要点。

讲解从三个部分展开:短视频应用场景、阿里云短视频解决方案、阿里云对短视频用户体验的相关优化。

短视频应用场景

短视频比图片和文字包含更多的信息,在移动互联网普及的今天,短视频应用场景非常广泛。

一、 社群分享场景

用户可以录制视频,进行特效编辑处理,上传到服务器,通过社区的方式分享给好友。

图片描述

二、 电商场景

商家可以快速拍摄、制作商品的短片,把商品的介绍视频发给消费者,这样可以提高购买转化率。

三、 IM聊天场景

在交流过程中,通过随拍随传的短视频,用户可以更生动的表达观点,更真实的传递情感

四、 新媒体场景

区别于传统、单一的图文展示形态,短视频可以快速收集及发布新闻,一键呈现世界

五、 体育赛事场景

集成短视频SDK后,用户可以在现场实时拍摄和剪辑,生成具有传播价值的短视频,通过分享来全网同步赛事

阿里云针对短视频的业务场景,提供了一整套技术解决方案。在主播端,提供了视频上传SDK和短视频SDK,在观众端提供视频播放SDK,在服务器端提供点播服务、OSS存储和CDN加速。

图片描述

对于开发者来说,短视频解决方案的使用流程是这样的:首先主播端使用短视频SDK对用户的视频进行录制、特效处理和剪辑,然后将视频通过上传SDK上传到服务器端,在服务器端先通过点播服务进行转码以及视频处理,然后把处理好的视频存储到OSS上,做持久化保存。在播放端集成播放器SDK,播放器会向CDN请求资源,CDN如果有缓存会把缓存的数据发给客户端。如果CDN缓存没有数据会去OSS中拉取数据,在返回给客户端,并把数据缓存到CDN上。开发者使用这些技术组件,可以快速的开发短视频业务。

图片描述

下面,我们逐一介绍解决方案的能力与特点。

解决方案中的视频SDK,包括短视频、上传和播放三个。短视频SDK包含人脸贴图、高级美颜的功能,在用户录制视频之后先进行本地美颜再进行上传,同时也提供专业滤镜、MV特效和裁剪压缩、添加音乐的功能,使视频剪辑大众化;上传SDK通过快速通道可以把视频传输到服务器端,支持断点续传、后台上传、多文件管理等功能;播放器SDK支持Android、IOS、flash、H5等多个平台、加密播放和安全下载等。

点播和存储服务,点播服务提供视频管理相关的功能,比如视频转码,窄带高清可以在相同的用户观感体验下,节约30%的带宽;云剪辑功能可以在线对视频进行编辑处理;同时点播服务提供丰富的数据统计,开发者利用阿里云提供的API访问实时数据。

图片描述

同时,阿里云也在视频领域开放了AI技术,包括内容审核,降低违规风险;智能封面,对视频结构化处理和算法选取最优视频帧作为视频封面;标签预测,通过AI来识别视频中文字、图像、人物等信息,自动生成视频标签等。

基于短视频业务产生的海量数据,阿里云也提供了高可靠、强安全、低成本的存储服务。

为了应对短视频大规模的业务需求,阿里云CDN建设了大量的基础设施。

图片描述

首先,阿里云CDN拥有全球1200多个节点,分布在全球各个国家和地区,贴近用户部署,使用户更快速的访问视频内容,使视频体验更好。同时,为了面对业务的突发流量,阿里云提供了超过80TB的带宽储备,为持续增长的业务保驾护航。并且,单节点缓存容量超过1PB,通过提供更大的缓存空间,来提升用户访问速度。

介绍完了解决方案之后,周哲老师又为大家介绍了阿里云在短视频领域的一些优化技术。

短视频用户体验的关键指标有首屏时间、播放卡顿和播放错误。

一、首屏时间是指在视频稳定播放期间,从用户点击播放到视频开始播放之间的时间差。首屏时间越长,会导致用户提前结束播放。

二、播放卡顿是指在播放过程中的不流畅情况,会严重影响用户体验。

三、播放错误是指用户播放视频时没有成功播放,或出现异常导致提前中断。

用户体验优化剖析

为了解决这些问题,我们对整个架构进行剖析。

首先,终端用户使用阿里云提供的视频SDK来请求调度服务器,调度服务器返回对应的节点IP,然后播放器通过CDN的节点IP来请求资源,CDN的边缘节点如果有缓存的话可以从本地发给播放器,如果没有缓存就去二级节点进行访问,二级节点没有缓存会去OSS或者用户源站拉取数据。

图片描述

阿里云CDN有一级节点、二级节点的缓存,二级节点的作用是

第一,做资源收敛,避免相同请求同时回源,减少源站压力
第二,离边缘节点接近,在边缘节点没命中的时候,能够更快的从二级节点获取到数据
第三,提供更大的存储空间,提高命中。

同时,阿里云对于整个播放过程,进行一些用户体验相关的数据打点,通过这些数据来进行分析,得到了一些优化点。

第一就是播放器

播放器是否优化决定了终端用户的观看质量。首先,我们对播放器SDK做了相关优化,比如,通过减少首次缓冲时间,可以设置在收到视频第一个I帧就开始解码播放;提供动态缓存大小,当出现网络抖动的时候,可以动态增加缓存大小,对数据进行预加载,通过这种方式来降低卡顿率;针对播放错误,播放器SDK实现了网络重试机制,来提供播放成功率。

第二个优化是针对调度系统

用户在访问边缘节点的时候,访问调度服务器,调度服务器返回的IP地址是不是最优的网络链路,这个很大程度上影响用户对于视频的下载速度。阿里云自研了智能调度系统,可以选择用户到边缘节点的最优链路,来反馈给客户端。

第三是阿里云提供非常多的网络节点覆盖

能够让边缘节点距离用户更近,来提升用户访问速度。

第四个优化点是协议栈优化

在用户向CDN服务器获取数据时,当出现网络抖动的时候,会有下载速度降低情况产生,阿里云CDN针对TCP协议栈进行优化,通过更高效的协议栈算法来提升下载速度。

第五个优化点是窄带高清

开发者可以使用阿里云提供的窄带高清功能,来降低播放视频的带宽。

第六是缓存服务器优化

用户在访问边缘节点的时候,如果请求在边缘节点MISS会直接回源,响应时间变慢,而如果边缘节点命中,用户的下载的速度就和边缘节点缓存服务器的性能具有强关联性了,阿里云针对缓存服务器的性能做了很多优化,通过加大边缘服务器的空间和智能优化,来提升访问速率。

第七是全链路监控

阿里云也支持全链路监控,来提早发现问题,针对性优化,确保稳定服务

智能调度系统优化

这里详细介绍一下智能调度的优化,针对调度系统,阿里云做了五个方面的优化。

第一个是精准的IP数据库会持续更新

基于第三方IP库数据、whois平台和淘宝手机用户在访问数据时的一些经纬度信息,会对IP库进行主动探测,基于这些维度的数据,进行计算和生成。IP库数据的准确性会对调度系统提供数据支撑。

第二个是提供HTTPDNS服务

用户通过localdns请求调度服务器,会遇到第一个问题是:localdns和用户ip位置有不匹配问题,会出现基于localdns调度时,调度系统看到的客户端ip和用户真实ip不一致,导致调度不准确。第二个问题是:用户查询dns服务器时,在查询过程中会出现dns结果被串改的情况

通过httpdns服务,可以解决由于localdns和ip地址不匹配问题,同时也可以做到dns结果防串改,使调度更精准。

播放器基于httpdns对dns查询做预加载,并对结果做缓存,减少dns查询查询带来的首屏时间慢。

第三点是基于用户体验的自动化调度

会基于用户的客户端IP以及用户到每个节点的网络情况、当前各个节点的状态,来进行计算,通过一些机器学习的方式,来预测用户到哪个节点的网络链路为最优。这样就确保给用户IP地址返回最优的网络链路。

第四个是大数据分析,选择最优节点。

通过当前节点覆盖情况和用户访问流量趋势,进行数据预测,去选择在哪里建点,并且去计算这些节点覆盖哪些用户的网络质量是最优的,为调度系统提供数据支撑。

最后一点是基于内容调度,提高命中率。

通过302做内容粒度的调度,把相同URL调度到同一台机器上,提高命中率。

缓存性能优化

阿里云CDN针对缓存系统也做了很多优化。

通过自研的缓存系统,开发基于裸盘的缓存系统。使用内存、SSD、SATA三级缓存架构,把最热的资源存储到内存中,次热的资源存储在SSD中,冷的资源存储在SATA中,并且通过热点迁移的方式,把SATA中热的资源迁移到内存和SSD中,再通过淘汰算法,把内存和SSD中的冷的资源淘汰到SATA盘中。通过这种方式,提供内存和SSD的命中率,降低SATA盘的IO读写情况,来存储更多的冷资源,提高边缘节点利用率。

同时,自研的文件系统对IO操作做了很多优化,比如说合并IP对齐写入功能,避免内存碎片和磁盘碎片带来的IO性能严重下降。对大文件进行切片存储,分片存储到不同磁盘中,避免因单个视频文件过热导致磁盘性能下降。

通过以上的优化措施,缓存的平均命中率在95%以上,首字节时间平均低于10ms。

图片描述

基于用户体验的TCP协议栈优化

第一个优化点是基于时间序的丢包发现机制,主要是在TCP协议栈里去分析TCP发包的时间序列,然后能够识别出哪些包丢掉了,快速发现丢包和快速重传。

第二个优化点是主动丢包发现机制,是指我们在发现包的时候去主动探测,避免通过超时来发现丢包,减少丢包发现的时间,提高进行重传
第三个是自适应的初始化窗口,针对不同业务场景使用不同初始化窗口大小。

第四个是更激进的拥塞避免算法,针对网络不好的情况,在协议栈中识别状态,使用更激进的发包策略,解决下载速度慢的问题。

第五个优化点是使用更小的链接超时时间,来更早的发现丢包。

基于以上的优化,我们使用第三方检测平台,对某短视频业务1.2M文件,和其他CDN厂商做性能对比测试,相同文件大小从内容下载时间上看,使用阿里云CDN有2%-6%的性能提升。其余数据也表现优异。

图片描述

欢迎大家来使用阿里云点播服务、CDN和OSS存储,来搭建短视频应用。

原文链接

干货好文,请关注扫描以下二维码:

图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/522164.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

flink开发案例_为什么说 Flink + AI 值得期待?

作者:秦江杰去年 11 月的 Flink Forward Asia 2019(以下简称 FFA) 上 Flink 社区提出了未来发展的几个主要方向,其中之一就是拥抱 AI [1]。实际上,近年来 AI 持续火热,各种计算框架、模型和算法层出不穷&am…

工作流实战_25_flowable 流程中的自动跳过

项目地址:https://gitee.com/lwj/flowable.git 分支flowable-base 背景:在实际场景中,我们往往会有这样的需求,当流程到达某一个节点的时候,我们让其自动的跳过去,不做任何操作。 如: 1、当当前…

阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1

摘要: 全球开源区块链领域影响最为广泛的Hyperledger Fabric日前宣布了1.1版本的正式发布,带来了一系列丰富的新功能以及在安全性、性能与扩展性等方面的显著提升。阿里云容器服务区块链解决方案第一时间同步升级,在v1.1新功能的基础上&#…

福利 | 送你一张通往「2019 AI开发者大会」的门票

2019 AI开发者大会(AI ProCon 2019)是由中国IT社区CSDN主办的AI技术与产业年度盛会。多年经验淬炼,如今蓄势待发:2019年9月6-7日,大会将有近百位中美顶尖AI专家、知名企业代表以及千余名AI开发者齐聚北京,进行技术解读和产业论证。…

直接内存与元空间_深入浅出 JVM 内存管理

Java岗位面试,JVM是对程序员基本功考察,通常会问你对JVM了解吗?可以分几部分回答这个问题,首先JVM内存划分 | JVM垃圾回收的含义 | 有哪些GC算法 以及年轻代和老年代各自特点等等。1) JVM内存划分:① 方法区 (线程共享) 常量 静态变量 JIT(即时编译器)编译后代码也在方法区存放…

如何快速成长为技术大牛?阿里资深技术专家的总结亮了

摘要: 写在前面 不管是开发、测试、运维,每个技术人员心里多多少少都有一个成为技术大牛的梦,毕竟“梦想总是要有的,万一实现了呢”!正是对技术梦的追求,促使我们不断地努力和提升自己。 然而“梦想是美好的…

blob字段乱码怎么处理_下载的附件名总乱码?你该去读一下 RFC 文档了!

纸上得来终觉浅,绝知此事要躬行Web 开发过程中,相信大家都遇到过附件下载的场景,其中,各浏览器下载后的文件名中文乱码问题或许一度让你苦恼不已。网上搜索一下,大部分都是通过Request Headers中的UserAgent字段来判断…

AI ProCon倒计时6天:60+业内技术专家,探秘9大核心技术专题

2019 AI ProCon“598元学生票”限量抢购中!3日通票团购倒计时6天,扫码查看▲2018 年,由 CSDN 举办的第一届 AI 开发者大会喊出“只讲技术,拒绝空谈”,两天会议时间,国内外几十家顶尖科技企业讲述了其主流技…

工作流实战_28_flowable 任务多实例

原文连接:https://blog.csdn.net/liuwenjun05101/article/details/103680299 项目地址:https://gitee.com/lwj/flowable.git 分支flowable-base 任务多实例由2种形式: 第1种场景:当多实例中的每一个势力都办理完任务后&#xff0…

架构师如何应对复杂业务场景?领域建模的实战案例解析

摘要: 阿里妹导读:你还在用面向对象的语言写面向过程的代码吗?你是否正在被复杂的业务逻辑折磨?是否有时觉得应用开发没意思、没挑战、技术含量低?其实,应用开发一点都不简单,也不无聊&#xff…

【深圳云栖大会】阿里云弹性计算ESSD云盘产品全面解析

摘要: 2018年3月29日,在深圳云栖大会弹性计算技术专场上,来自阿里云弹性计算产品专家崆闻做了主题为《百万级别IOPS云盘产品全面解析》的技术分享,主要就阿里云新一代ESSD云盘的产品特点、适用业务场景和对业务的实际性能提升进行…

git分支合并指定代码_git的几种实用操作(合并代码与暂存复原代码)

总述git工具也用了很久,自己也写了几篇使用教程,今天继续给大家分享一些我工作中使用过的git操作。1.git合并远程仓库的代码2.git stash保存当前的修改这两种情况大家应该都使用比较多,现在大家使用git进行团队开发代码的情况比较普遍&#x…

flowable实战(十五)关于流程设计器 bpmn.js与vue的整合

一、前言: 由于flowable本身带的Moder风格实在与前端页面风格不一样,同时由于Modeler采用Angular.js写的,改造起来相对有一定的难度,所以打算换成bpmn.js当成流程设计器。二、与vue的整合 1.安装以下包进开发环境 npm install -…

大数据实践的6个阶段

戳蓝字“CSDN云计算”关注我们哦!来源公众号 | 智领云科技作者 | 智领云 彭锋博士在最新的“2018年Gartner数据管理技术成熟度曲线”报告中,DataOps的概念被首次提出,Gartner标记其目前在“极为初级”这个阶段里面,并预计需要5-10…

离线计算成本节省的神兵利器

摘要: 对于创业成长型的企业来说,离线计算已经必不可少了,通过离线计算我们可以生成复杂的业务报表,通过离线计算我们也能精确的算出用户画像。离线计算已经当今的企业中成为了不可或缺的存在。那么使用弹性计算能够对离线计算领域…

opencv论坛_Opencv批量添加logo的解决方案

知乎的水印是如何批量添加的?您想拥有这个本领吗?我在opencv论坛发现了这个趣图添加logo的方法,也许您正需要这个代码,那我就诚心分享下吧。如何删除结果图像中mainlogo.png周围的黑色边框?import cv2 import numpy as np import…

「深圳云栖大会」大数据时代以及人工智能推动下的阿里云异构计算

摘要: 最近几年,在大数据和人工智能的推动下,异构计算有了长足的发展。无论是在产品形态上,还是在应用领域上,阿里云异构计算都取得了累累硕果。 最近几年,在大数据和人工智能的推动下,异构计算…

mysql表设计要注意什么?

戳蓝字“CSDN云计算”关注我们哦!转自 | 孤独烟引言大家应该知道烟哥最近要(tiao 咳咳咳),嗯,不可描述!随手讲其中一部分知识,都是一些烟哥自己平时工作的总结以及经验。大家看完,其实能避开很多坑。而且很…

html table样式_CSS表格样式

表格的样式一般可以在HTML中直接定义,但是结构和样式需要分开声明,这可以方便后期的维护和修改。CSS中的表格样式有caption-side(表格标题位置)、border-collapse(表格边框合并)、border-spacing(表格边框间距)。 caption-sidecaption-side属性取值只有2…

AI开发者福音!阿里云推出国内首个基于英伟达NGC的GPU优化容器

摘要: 3月28日,在2018云栖大会深圳峰会上,阿里云宣布与英伟达GPU 云 合作 (NGC),开发者可以在云市场下载NVIDIA GPU 云镜像和运行NGC 容器,来使用阿里云上的NVIDIA GPU计算平台。 阿里云推出国内…