您当前的位置:首页 > 电脑百科 > 程序开发 > 算法

算法系列:视频播放器性能

时间:2020-09-01 12:59:00  来源:  作者:

算法系列:视频播放器性能

 

 

您已经完成了对相当棘手的内容的编码,其中一些内容比正常情况下涉及的质量控制要多一些,并且可以将其发布以供外部使用。但是首先您需要将其显示给管理层,因此您需要将流上传到预发布的登台服务器,并向老板发送URL文本。几分钟后,您会收到一条短信,询问为什么视频质量如此差。

老板对视频 看起来不好表示什么,以及如何解决该问题?是否存在特定场景的问题,媒体服务器中的故障,老板用来观看视频的移动设备上过时的播放器甚至公司VPN上的带宽是否有问题?

欢迎来到我们称为流媒体的错综复杂的世界。

在算法系列的上一篇文章中,我们研究了CDN背后的数学原理。好处是CDN可以准确地提供它们所得到的,并且通常会做得很好。但是有时,获取方(例如,对点播内容进行编码)会引入一个异常,该异常会通过CDN到达最终用户,从而导致回放质量不合格。

在我刚才提到的场景中,编码,传输和回放的算法在最终用户的播放器应用程序中如何相交?这就是我们在本文中有关球员表现的内容。

编码和传送

“编码一次,到处交付”是我们在 流媒体历史上一直听到的口号,这是我们取得不同成功水平的目标。在早期,这意味着使用正确的编解码器和播放器组合,因为编码器,媒体服务器和最终用户播放器都是同一生态系统的一部分,例如Adobe,Microsoft或Real提供的付费解决方案。

问题是“无处不在”仅意味着其中一种专有解决方案的围墙花园。如果一家公司使用Microsoft,但其客户使用Real,则每个流平台必须对内容进行一次编码。

H.264(又称高级视频 编码,AVC)的出现使编码方面的情况变得更好了,H.264 通常以 MPEG-2或MPEG-4容器格式存储。但是随后,出现了各种不同的基于HTTP的交付方式,例如平滑流,Adobe HDS或Apple HTTP Live Streaming(HLS),它们至少需要以选定的比特率(称为自适应比特率或ABR)进行多种编码)或多个细分步骤,以每个专有的HTTP细分大小和清单文件进行交付。

幸运的是,这些问题中的大多数已通过一些专有格式解决,这些专有格式构成了行业标准 MPEG-DASH方法的基础。同时,我们已经 看到Apple的HLS转向了DASH使用的分段MP4(fMP4)方法。

因此,在编码ABR内容时无需担心,因为所有内容都将在任何给定时间基于适当的带宽传送,对吗?是的,没有。将ABR内容传送到支持ABR的播放器时,需要考虑以下三件事。

有多少带宽可用?

这是ABR播放器性能正常的主要问题之一。这不仅是在任何特定时刻的问题,而且还是在特定时刻之前的问题,请记住(正如大多数股票经纪人在向潜在客户的推销中所提到的那样),过去的表现并不能保证未来的结果。 这是关键的原因是,当涉及到清单或MPD文件中接下来要请求哪个比特率合适的ABR段时,很多研究都假定播放器具有最佳决策。

在PV '18上,Brightcove的Yuriy Reznik和其他同事在第23包视频研讨会上发表了题为“ ABR流的编码配置文件的最佳设计 ”的论文。虽然它描述了建模网络带宽的方法以及选择给定ABR流的可能性(稍后将对此进行更多介绍),但是值得考虑两种不同的算法方法来解决调度问题。

第一个方法涉及引入平滑滤波器以估计带宽,如“ 自适应HTTP流的调度和速率自适应算法的设计”中所述”,这是 斯蒂芬·黑塞(Stephan Hesse)在Fraunhofer / HHI工作时写的,并且部分由欧盟框架计划7(FP7)开放内容感知网络(OCEAN)项目资助(见图1)。Reznik及其合著者在他们的论文中引用了它作为一种实用方式的示例,其中“ ABR流客户端估算可用带宽……然后决定接下来要提取的编码流”以尽可能多地利用可用带宽。

算法系列:视频播放器性能

 

图1

黑塞写道:“ 我们发现适合我们目的的一种众所周知的平滑滤波器是指数移动平均滤波器。” “使用该滤波器,获得当前的平滑带宽估计 C k作为当前带宽测量值T k和先前的平滑估计C k-1的加权平均值,”得出以下公式:

C k =(1-α)T k +αCk -1

在该式(式3在文章中), α ∈(0,1),这意味着α之间的具体数量,但不包括0和1。因此,它是一个小数以上0.00但低于1.00,其形成什么黑森说是过滤器参数或“平滑因子”。

黑森继续指出,此递归的扩展产生以下公式:

算法系列:视频播放器性能

 

哪里

算法系列:视频播放器性能

 

是有效权重 w ^ 我施加到先前的测量Ť K-1个。

实际上,这允许将权重分配给特定的测量,然后将其“针对参数 α的几个可能值”绘制出来,以最佳地可靠地估计带宽。

黑塞写道:“ 平滑因子α的值会影响带宽估计值对过去测量的依赖程度。” “如果α接近0,则滤波器变为全通,它只会忽略所有过去的测量。”

但是,如果 α增加,则对最新测量的依赖将减少,而对先前测量的依赖将增加。为什么会这样呢?Hesse指出,客户端缓冲区可能能够吸收带宽的某些间歇性,而不需要切换到不同的ABR段带宽速率。

他写道:“另一方面,如果传输速率测量结果表明信道带宽发生永久性变化,我们还希望滤波器足够快速地做出反应。这对于允许量化单元切换速率(例如避免缓冲)非常重要。 -欠载……情况。”

如果我们(某种程度上)忽略带宽怎么办?

黑塞在其dispar.at博客中提到的第二种处理重新缓冲的方法是一种可能更好的方法,该方法是使用Lyapunov优化技术,通过基于缓冲占用率的算法来“最小化重新缓冲并最大化视频质量”。宝拉 这种方法不测量带宽,而是根据在任何给定点填充最终用户视频播放器缓冲区的分段的百分比来推断带宽可用性。

BOLA在2016年的一篇论文中被介绍由Kevin Spiteri(马萨诸塞大学-阿默斯特大学),Rahul Urgaonkar(亚马逊)和Ramesh K. Sitaraman(Akamai)撰写。他们认为,具有临时算法的现代视频播放器了解甚少,因此在决定下一个HTTP传递的段的带宽速率时,没有得到适当的利用。他们写道,“ [We]制定了比特率自适应,这是一个效用最大化问题,其中包含了QoE的两个关键要素:用户体验到的视频的平均比特率和重新缓冲事件的持续时间。”

此外,他们引用Sitaraman在2013年所做的有关网络性能及其对观看者影响的研究,他们说:“我们考虑了影响 用户总体QoE 的两个主要性能指标。” 第一个是“时间平均播放质量,它是用户观看的块的比特率的函数”,第二个是不重新缓冲所花费的总观看时间的一部分。

他们认为,BOLA是一种限制整个缓冲区避免持续消耗(欠载)或填充的方法。(请参见下面的图2。)缓冲区的大小是有限的,可以用队列中可以播放的块或段的数量来度量。如果缓冲区已满,播放器将等待请求下一个块;但是,如果可用带宽下降到请求之间的间隔,则请求的块(数据速率较高)下载时间可能更长。这可能会级联成缓冲区欠载情况。作者认为这种重复循环(由于缓冲区已满而导致欠载或下载暂停)是通常(但并非总是)由可用带宽波动引起的振荡。

算法系列:视频播放器性能

 

 

图2

但是,以免我们假设当观看者以恒定比特率消费内容时不会发生带宽选择更改,BOLA的作者指出了一个问题,该问题早在 Burst Technologies时就令人困惑,并且 在windows Media中有些不适播放器9:稳定带宽缓冲选择。他们写道:“拥有稳定的网络带宽和宽广的阈值仍然无法避免所有比特率的切换。”

以观看者为例,该观众具有恒定的2Mbps带宽和两个节目的ABR再现,一个为1.5Mbps,另一个为3Mbps,当缓冲区填满时,播放器的性能实际上可能是有害的:“播放器下载时缓冲区达到1.5Mbps时,缓冲区会继续增长。当缓冲区超过阈值时,播放器将切换到3Mbps,耗尽缓冲区。缓冲区被充分耗尽后,播放器将切换回1.5Mbps,并重复该循环。

如果最终观看者想要保持恒定的质量,则可以有两种选择:以较低质量的1.5Mbps再现观看整个节目,或者采用旧的Burst Technologies技巧,并以比用户更高的带宽观看整个节目。可供他或她使用。BOLA的作者称此选择为“以更大的 振荡成本来最大化效用并以3Mbps的更高比特率播放视频的一部分”,但提供了针对振荡(BOLA-O)或效用(BOLA)的解决方案。 -U)。有关BOLA算法如何响应缓冲区级别的说明,请参见图3

算法系列:视频播放器性能

 

 

图3

该算法的最后一部分通过引入比特率上限来实现BOLA算法在可用内容比特率之间进行切换时在较高或较低振荡之间进行选择的能力。我问Spiteri,将比特率上限描述为将MPD或清单文件中的再现选择限制为比特率低于视频播放器设备当前可用带宽的再现形式是否准确。他确认 这是一个准确的描述,而不是某些人试图将比特率上限错误地等同于Net Neutrality第三轨术语“带宽限制”的描述。

BOLA作者写道:“ BOLA-O通过将较高的比特率与下载前一个块时测得的带宽进行比较,验证了较高的比特率是可持续的。” “由于动机是为了限制振荡而不是预测未来的带宽,因此这种调整不会将比特率降低到比上一次下载时更低的水平”,以此来限制缓冲区的增长,就像降低缓冲区的大小一样。 Mbps格式下载。

第二种选择是使用BOLA故意选择一个高于持续带宽的内容比特率,而BOLA-U遵循的原则是不要过多地填充缓冲区。作者写道:“通过将比特率提高到比可持续带宽高一个水平,可以避免缓冲区的过度增长。” “使用较小的缓冲区大小并增加BOOL-U的稳定性会得到回报,并且BOLA-U的效用要大于BOLA-FINITE。…实际上,丢失的效用受到编码比特率之间的距离的限制;如果下一个,较低的比特率水平离网络带宽不远,那么实用程序将丢失。”

Spiteri向我详细说明了这一点。他说:“ BOLA-U偶尔会使用比设备带宽更高的比特率,从而获得更高的平均比特率。” “当然 必须是偶然的;始终以较高的比特率下载会导致重新缓冲。BOLA-U仅在缓冲区级别足够高时才以如此高的比特率进行下载,因此不存在重新缓冲的风险。”

Spiteri还表示,有经验证据表明,当内容以更高的比特率和分辨率呈现时,用户会保持参与,并引用了ACM SIGCOMM 2011上发表的论文“了解视频质量对用户参与的影响”。

因此,实际上,编码比特率之间的距离是否会引起实际问题?2020年1月的论文《了解野外的视频流算法》Melissa Licciardello,MaximilianGrüner和Ankit Singla撰写的文章似乎表明,在使用更多可用带宽以提高最终用户观看质量方面,还有改进的余地。它可以衡量各种在线平台上播放器对ABR视频流算法的实际使用情况。

作者说:“我们……发现证据表明,大多数部署的算法都针对稳定的行为进行了调整,而不是针对带宽变化的快速适应;有些算法针对了视觉感知指标,而不是基于比特率的指标进行了调整,其中许多算法出乎意料地 大量使用。未使用的可用带宽。” 作者没有解决BOLA最大效用方法带来稳定性的有意识选择,但他们指出了另外一个难题:视觉感知指标。

在某些方面,这可能是语义上的区别。例如,BOLA的作者讨论了“经验证据,当视频以更高的比特率呈现时,用户会更加投入并观看更长的时间”,但是讨论围绕的是标准清晰度和高清内容之间的差异,因此与内容以更高带宽呈现的事实相比,参与的可能性更大。

然而,使用视觉感知指标来调整播放可能会充满危险, 尤其是在早期的指标(例如峰值信噪比(PSNR))方面,这是臭名昭著的例子,如果PSNR为唯一因素。(请参阅 这些 灯塔并排图片 一个很好的视觉例子。)

下一步是什么?

在调整播放器性能方面还有更多的算法工作要做吗?是。

Licciardello,Grüner和Singla最近撰写了“重构专有视频流算法”,该论文详细介绍了他们对包括BOLA在内的许多专有调度算法进行反向工程的研究尝试。他们计划在7月的2020 USENIX年度技术会议上介绍它。

并不是说BOLA算法是静止不动的。实际上,在2019年,BOLA原始论文的两位作者(Spiteri和Sitaraman)以及他们在论文中感谢的同事Daniel Sparacio发表了“ 从理论到实践:在DASH参考文献中提高比特率适应性”播放器”,这是基于以下事实的研究论文:许多针对ABR内容的播放器调度算法通常分为两类 :基于吞吐量和基于缓冲区。他们认为,一种更好的模型是使用“吞吐量预测和尝试利用两者的优势。”

为了帮助推动混合方法的发展,三位作者对BOLA算法进行了更新,以包含一个称为BOLA-E的增强版本。该版本引入了一些概念,例如不包含视频数据且可用于更改缓冲区级别的“虚拟段”,以及“占位符算法”以更好地允许BOLA做出明智的比特率切换决策。更重要的是,BOLA现在已经实现到Video.js中,该视频是DASH行业论坛(DASH-IF)倡导的参考视频播放器。

此外,作者开发的一种称为快速切换的新算法已在DASH-IF参考播放器中实现。快速切换的概念非常新颖: 如果带宽突然提高,并且有时间用这些更高质量的片段重新填充缓冲区,则可以通过“用较高位的片段替换客户端缓冲区中的较低位的片段”来提高视频质量。这有可能提高低延迟的吞吐量,同时又不会迫使观看者在整个 内容观看体验中忍受不确定的较低质量的体验。

最后,斯皮提里告诉我,2016年BOLA论文的更新版本已经 发布,该论文讨论了理论部分的更多详细信息,并将BOLA与许多其他算法进行了比较。它还包括符号的更改。Spiteri说:“虽然原始版本使用比特率m = 1表示最高比特率,但是新版本使用比特率m = 1表示最低比特率,”他补充说,这种转变“主要与dash.js播放器一致,其中较低的比特率具有较低的索引。”

结论

随着2020年上半年流媒体的激增,包括锁定期间在家观看点播内容以及越来越多地使用低延迟,多参与者网络会议软件,对播放器性能优化的需求从未如此迫切。幸运的是,当本文试图用基本的术语进行解释时,播放器性能魔力的背后的数学继续建立在基本算法上,同时正在展示和调整新颖和增强的版本,以提供越来越好的最终用户观看体验。



Tags:视频播放器   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的是一个开源的 HTML5 视频播放器插件——MuiP...【详细内容】
2021-12-16  Tags: 视频播放器  点击:(22)  评论:(0)  加入收藏
Web项目开发中视频播放是一个非常常见的需求,需要播放器能够支持pc端和移动端的使用,并且支持常见的视频格式。我们从github上精选了5款优秀的Html5 播放器插件分享给大家。(排...【详细内容】
2021-09-17  Tags: 视频播放器  点击:(99)  评论:(0)  加入收藏
一、FFmpeg视频解码器1.视频解码知识1).纯净的视频解码流程压缩编码数据->像素数据。例如解码H.264,就是“H.264码流->YUV”。2).一般的视频解码流程视频码流一般存储在一定...【详细内容】
2021-05-19  Tags: 视频播放器  点击:(163)  评论:(0)  加入收藏
您已经完成了对相当棘手的内容的编码,其中一些内容比正常情况下涉及的质量控制要多一些,并且可以将其发布以供外部使用。但是首先您需要将其显示给管理层,因此您需要将流上...【详细内容】
2020-09-01  Tags: 视频播放器  点击:(106)  评论:(0)  加入收藏
4k已经到来,只是还没有普及,目前我们普遍看到的高清视频还是1080p的,想要观看4k影片,还需要找4k资源。目前能免费下载4k资源的网站并不多,且不被大多数人知道。 之后我会写篇文章...【详细内容】
2020-06-24  Tags: 视频播放器  点击:(108)  评论:(0)  加入收藏
IINA Mac版是Mac平台上的一款开源视频播放器。IINA Mac版基于 mpv,为最新 Mac 系统而生,支持 Touch Bar、兼容 MPV 脚本、几乎支持所有格式、网络播放,是一款拥有优雅外观的视...【详细内容】
2019-12-26  Tags: 视频播放器  点击:(145)  评论:(0)  加入收藏
选择合适的视频播放器有助于确保你获得最佳的观看体验,并为你提供创建视频网站的工具。你甚至可以根据个人喜好自定义正在观看的视频。-- Stella Aldridge(作者)选择合适的视...【详细内容】
2019-10-21  Tags: 视频播放器  点击:(140)  评论:(0)  加入收藏
Plyr是一款简单并且十分简洁的Wordpress Html5 视频播放器插件,安装插件以后,在后台启用,在发布文章的时候使用如下短代码就可以插入一款漂亮的播放器了。代码如下:[plyr poster...【详细内容】
2019-09-22  Tags: 视频播放器  点击:(259)  评论:(0)  加入收藏
▌简易百科推荐
前言Kafka 中有很多延时操作,比如对于耗时的网络请求(比如 Produce 是等待 ISR 副本复制成功)会被封装成 DelayOperation 进行延迟处理操作,防止阻塞 Kafka请求处理线程。Kafka...【详细内容】
2021-12-27  Java技术那些事    Tags:时间轮   点击:(1)  评论:(0)  加入收藏
博雯 发自 凹非寺量子位 报道 | 公众号 QbitAI在炼丹过程中,为了减少训练所需资源,MLer有时会将大型复杂的大模型“蒸馏”为较小的模型,同时还要保证与压缩前相当的结果。这就...【详细内容】
2021-12-24  量子位    Tags:蒸馏法   点击:(9)  评论:(0)  加入收藏
分稀疏重建和稠密重建两类:稀疏重建:使用RGB相机SLAMOrb-slam,Orb-slam2,orb-slam3:工程地址在: http://webdiis.unizar.es/~raulmur/orbslam/ DSO(Direct Sparse Odometry)因为...【详细内容】
2021-12-23  老师明明可以靠颜值    Tags:算法   点击:(7)  评论:(0)  加入收藏
1. 基本概念希尔排序又叫递减增量排序算法,它是在直接插入排序算法的基础上进行改进而来的,综合来说它的效率肯定是要高于直接插入排序算法的;希尔排序是一种不稳定的排序算法...【详细内容】
2021-12-22  青石野草    Tags:希尔排序   点击:(6)  评论:(0)  加入收藏
ROP是一种技巧,我们对execve函数进行拼凑来进行system /bin/sh。栈迁移的特征是溢出0x10个字符,在本次getshell中,还碰到了如何利用printf函数来进行canary的泄露。ROP+栈迁移...【详细内容】
2021-12-15  星云博创    Tags:栈迁移   点击:(19)  评论:(0)  加入收藏
一、什么是冒泡排序1.1、文字描述冒泡排序是一种简单的排序算法。它重复地走访要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地...【详细内容】
2021-12-15    晓掌柜丶韶华  Tags:排序算法   点击:(16)  评论:(0)  加入收藏
在了解golang的map之前,我们需要了解哈希这个概念。哈希表,又称散列表(Hash table),是根据键(key)而直接访问在内存储存位置的数据结构。也就是说,它通过计算出一个键值的函数,将...【详细内容】
2021-12-07  一棵梧桐木    Tags:哈希表   点击:(13)  评论:(0)  加入收藏
前面文章在谈论分布式唯一ID生成的时候,有提到雪花算法,这一次,我们详细点讲解,只讲它。SnowFlake算法据国家大气研究中心的查尔斯·奈特称,一般的雪花大约由10^19个水分子...【详细内容】
2021-11-17  小心程序猿QAQ    Tags:雪花算法   点击:(24)  评论:(0)  加入收藏
导读:在大数据时代,对复杂数据结构中的各数据项进行有效的排序和查找的能力非常重要,因为很多现代算法都需要用到它。在为数据恰当选择排序和查找策略时,需要根据数据的规模和类型进行判断。尽管不同策略最终得到的结果完...【详细内容】
2021-11-04  华章科技    Tags:排序算法   点击:(37)  评论:(0)  加入收藏
这是我在网上找的资源的一个总结,会先给出一个我看了觉得还行的关于算法的讲解,再配上实现的代码: Original author: Bill_Hoo Original Address: http://blog.sina.com.cn/s/bl...【详细内容】
2021-11-04  有AI野心的电工和码农    Tags: KMP算法   点击:(36)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条