无码&流畅的视频直播监控体系

标签: 运维杂谈 监控体系 直播 视频 | 发表时间:2017-06-17 00:33 | 作者:99527
出处:http://www.yunweipai.com

背景

影响视频质量的因素是多样和复杂的。从主播端到看播端整条路径上,任何一环出问题,比如码率降低,分辨率降低,帧率降低,光源使用不当,滤镜使用不当,传输层丢包,播放端网络质量差,播放端解码能力弱等等,都可能导致视频质量下降。

检测视频质量一直以来有两种方式,分别是客观评价和主观评价。

  • 所谓客观评价就是将评价目标和一个标准的原始源进行对比,计算峰值信噪比(PSNR)以及衍生的一系列评价指标。
  • 主观评价就是由评价人员按照一定打分标准,对目标视频进行打分。

无论是哪一种方式,在大规模全民互动直播场景下,都显得捉襟见肘。这里我们建立了一个通过主观评价方式对一个相对小的视频集合进行分类标注,然后用机器学习的办法提取出模型,再扩展到对所有视频对象进行自动评价打分的方案,相应的建立了一个采样和分析的服务器集群,对花椒全网的频道进行自动画质监控。

架构

1. 逻辑结构

采样层:

视频本质上是由一帧一帧的连续图片组成的,所以通过提取场景关键帧的方式来代表某个时间段内的视频是一种普适的视频分析方法。我们也采用定期的方式(2~4s)从视频流里获取关键帧截图。然后将其交给分析层做进一步处理。

分析层:

预先通过机器学习的办法,得到一个训练过的模型,针对每一个输入的图片,套用模型分析处理,可以得到分类结果,这就是我们的自动评分。将评分结果交给业务处理层做进一步处理。

业务处理层:

由于分析层给出的只是某一小段时间的静止的场景判断结果,而实际情况下,视频又是一个由连续和不断变化的场景组成的集合,所以只靠一两次的识别结果进行判断,会有较大的误差。通过在业务层为每个视频流增加一个历次结果cache滑动窗口,缓存最近一段时间的结果,然后每收到一个新的分析结果,就按照预设算法,重新计算一次整个视频的质量判别结果,得到一个新的基于本视频流的评分。从而平滑了机器学习算法的误差,得到一个更为稳定的输出。

接口/表示层:

通过接口API的方式,将视频的判别结果提供给第三方,由其进行业务相关的扩展使用。

2. 当前部署物理拓扑说明

整个系统架构依托于花椒已有的视频实时截图服务以及花椒业务接口服务

  • 视频分析系统首先从花椒业务接口获取到线上直播视频基本信息;
  • 根据这些信息做一定的负载均衡,把监控任务分发到制定的worker机;
  • worker机会按照一定间隔从截图服务中获取截图,做一定预处理生成向量;
  • 由训练好的模型进行预测分析;
  • 分析结果入库后会提供web展示页、接口订阅服务、已经通过报警app、邮件等的统计和报警服务;

3. 系统承载量分析

当前视频云默认是每2s更新一张直播间截图,高峰期平均每秒需要处理的流的量级为数万(流的路数/2)。正常情况每张图的大小在100kB~200kB之间,以平均150kB计算。在带宽需求上,约有几十G。如果单台机器使用千兆网卡,则至少需要几十台机器。线上机器单核提取一张截图的维度信息时间大概是30ms左右,然后进行分类所需时间大概是20ms左右,平均下来,单核1s时间可以处理的图片数量大致是20张。目前采用机器是32核,即理论上1s时间可以处理640路流,从计算实时性上来分析,也需要几十台机器。

系统结构说明:这里使用了N台视频分析服务器,其工作就是从视频云请求关键帧,分析提取向量信息,归类得到质量好坏结果,然后存入共享的数据库中。另外使用了其中1台服务器作任务调度,并兼做分析结果存储。另外为了节省设备,目前的中间业务服务器,对外接口服务器是和一台视频服务器公用同一物理机。以15s和1min作为cache窗口,每15s对live/latest/school三个大项做一次整体评价,每1min对所有流做一次整体评价,然后由对外接口层生成一个评价结果的html网页以及一个json格式的文件。

4. 数据流向说明

  • 逻辑上在另一网络部署有一个任务,定期更新当前全网开流状态,将结果以json字典方式保存,每个小项存储每个流的sn,liveid,uid。
  • 流元信息模块定期从另一个网络获取上文的json数据,提取当前开流信息,并存入任务调度服务器上的redis数据库。存入时将sn做md5哈希,取其哈希结果的头两个字母作为sharding的标记,得到256个redis的sn表项。
  • 图片预处理模块启动时对相应流的sn进行编号,作用是每隔3s从调度服务器上获取自己编号对应的sn表项,然后去视频云下载对应sn的截图,分析,输出结果,存入调度服务器的”svm_result”表。
  • 流质量分析模块将每个视频流cache结果窗口内的所有结果进行整合,得出一个最终结果,并输出html和json文件。另外为便于进一步分析问题,在html里设置了明细链接,可以查看具体的每一个关键帧的分析结果。
  • 接口订阅服务器存在于别的网络上,定期利用上文的对外接口,获取json格式的视频质量信息,进行相应的处理,如发邮件报警,app消息push报警等。

展望

当前采用的svm是浅层学习方案,特点是只需要较少的样本就可以生成有一定效果的模型,但是还存在一些场景的不适应。目前基于神经网络的深度学习已经十分成熟,其外部框架如caffe,tensorflow, thera都逐渐流行起来,下一步可以结合这些框架,并同运行客服协调对视频流进行标注,增加机器学习的样本,进一步的优化识别结果。

总结

1. 视频质量评价方法总结

客观评价:
客观评价指的是不需要人为评价的方法,即将原视频与处理后的视频进行对比。可以进行象素级别的对比,也可以对某些特性进行提取和对比。客观评价指标常见的有PSNR(峰值信噪比),MSE(均值方差),SSIM(结构相似度)等。

主观评价:
主观评价是指由评测人员参与,对视频质量进行评估,相应的有一些主观评价工具,供评测者对待测视频进行打分。

此外对视频的清晰度也有一些客观评价的指标,如各类梯度函数,Brenner,Tenengrad等等。其原理是通过判断图像的象素点的灰度/RGB值等的变化程度判断图像是否清晰。

2. 机器学习的一些相关说明

SVM支持向量机

一种浅层机器学习分类方法,除了做线性分类,还可以结合核函数,将低纬度向量映射到更高维度实现线性分类的目的。在目前的系统中,采用了SVM来做图片质量分类。这种方式需要提取图片的清晰度特征,这里我们提取的是梯度特征。

深度学习神经网络,如CNN

通过卷积,亚采样,池化(pooling)等一层又一层的叠加操作,将图片提取出更多信息,并通过损失函数(loss)来校正处理分类参数,最后得到基于学习样本最佳的分类参数作为输出模型。理论上只要学习样本越多,最后的精度会越高。

原文来微信公众号:HULK 一线技术杂谈

相关 [无码 视频 直播] 推荐:

无码&流畅的视频直播监控体系

- - 运维派
影响视频质量的因素是多样和复杂的. 从主播端到看播端整条路径上,任何一环出问题,比如码率降低,分辨率降低,帧率降低,光源使用不当,滤镜使用不当,传输层丢包,播放端网络质量差,播放端解码能力弱等等,都可能导致视频质量下降. 检测视频质量一直以来有两种方式,分别是客观评价和主观评价. 所谓客观评价就是将评价目标和一个标准的原始源进行对比,计算峰值信噪比(PSNR)以及衍生的一系列评价指标.

HTML5 视频直播(一)

- - JerryQu 的小站
前不久工作中遇到了在移动 WEB 端直播视频的需求,研究了一下相关技术,记录一下. 目前 WEB 上主流的视频直播方案有 HLS 和 RTMP,移动 WEB 端目前就只有 HLS 能用,我们重点介绍它. HTTP Live Streaming(简称 HLS)是一个基于 HTTP 的视频流协议,由 Apple 公司实现,Mac OS 上的 QuickTime、Safari 以及 iOS 上的 Safari 都能很好的支持 HLS,高版本 Android 也增加了对 HLS 的支持.

[原]视频直播 解决方案

- - banketree
中国好声音2016年开始海选了,某某代理了地方海选,为了更好的推广,决定进行网上直播. 服务端:Srs  (https://github.com/ossrs/srs). 收看直播嘛,只要开源播放器支持rtmp、hls…等等都可以看的,具体的我就不多说了. 作者:banketree 发表于2016/5/17 13:01:10 原文链接.

音乐人 Daria Musk 利用 Google+ Hangouts 直播演出视频

- jeff - 谷奥——探寻谷歌的奥秘
独立流行音乐人Daria Musk最近潮流了一把,她和自己的乐队利用Google+的Hangouts视频群聊服务,在自己的工作室里举办了一场小型音乐会的直播. 尽管鉴于Hangouts的限制,只能有10个人观看视频直播,但是咱有山寨的办法突破这个限制,就是10个人里的其中一位拿起自己另外一台电脑上的摄像头,拍摄自己看到的音乐会直播画面,然后在这台新电脑上再组建一个10人的Hangouts视频群聊,这样理论上可以一直接力下去,只不过质量就…….

webvbox :集网络视频、直播、小游戏、音乐欣赏

- tackwell - 笨兔兔
webvbox,是一款集网络视频观看、电视直播、音乐电台、小游戏、网络工具于一体的利器. 最新版本为webvbox 2 beta版本. 主页:http://hi.baidu.com/webvbox/. (这段话只有一个叹号标点,全是逗号,堪比GRE的长句子啦,玩笑. 支持多家视频网站:优酷、土豆、新浪…不用打开网页,想看就看.

谷奥: Google 在首页强推 Google+ Hangouts 演出视频直播

- lili - 谷奥聚合——谷奥主站+谷安 aggregator
尽管这并非黑眼豆豆的Will I. Am第一次利用Google+的Hangouts进行视频群聊了,但却是他第一次出现在Google首页里,这也是Google第一次将一个Google Profile个人链接地址放置在Google首页强推──这可是一个无价的广告位啊. 在直播开始之前的现在,如果你点击那个链接,只能看到黑眼豆豆的Will I.

Hangouts On Air-google+的全球视频直播工具

- - 无名小卒
        Google+向全球用户正式推出视频直播工具——Hangouts On Air,该工具可以让用户向公众直播视频. 用户需要登录google+,点击start a hangout,勾选Enable Hangouts On Air按钮,验证你的Youtube账户,这样你的视频就可以向全球直播了.

Android直播,音视频播放那些事儿

- - CSDN博客推荐文章
随着音视频领域的火热,在很多领域(教育,游戏,娱乐,体育,跑步,餐饮,音乐等)尝试做音视频直播/点播功能,那么作为开发一个小白,如何快速学习音视频基础知识,了解音视频编解码的传输协议,编解码方式,以及如何技术选型,如何解决遇到的坑,本文抛砖引玉,欢迎大咖交流. 静止的画面叫图像(picture). 连续的图像变化每秒超过24帧(frame)画面以上时,根椐视觉暂留原理, 人眼无法辨别每付单独的静态画面,看上去是平滑连续的视觉效果.

一款开源的视频直播项目 --EvilsLive

- - IT瘾-geek
EvilsLive 是一个视频直播件开发工具包(SDK), 目前只支持 Android, 以后还会支持 Web/IOS 等平台. 主要负责视频直播的采集、推流、预览、播放、美图支持. 欢迎大家 Star, 你们的关注才是我们持续的动力!. 目前此项目还在持续更新中..... 预览与推流分辨率可分别自由设置.

详解音视频直播中的低延时

- - SegmentFault 最新的文章
高泽华,声网 Agora 音频工匠,先后在中磊电子、士兰微电子、虹软科技主导音频项目. 任职 YY 期间负责语音音频技术工作. 在音乐、语音编解码方面有超过十年的研发经验. 音视频实时通讯的应用场景已经随处可见,从“吃鸡”的语音对讲、直播连麦、直播答题组队开黑,再到银行视频开户等. 对于开发者来讲,除了关注如何能快速实现不同应用场景重点额音视频通讯,另一个更需要关注的可能就是“低延时”.