摘要:让精彩更流畅、让较量更清晰、让参与更沉浸、让体验更有趣,幕后的舞台,从来都是技术的战场,S12背后的名场面同样场场高能。
本文分享自华为云社区《用硬核方式打开S12名场面》,作者:华为公众号。
让精彩更流畅、让较量更清晰、让参与更沉浸、让体验更有趣,幕后的舞台,从来都是技术的战场,S12背后的名场面同样场场高能。
经过35天的鏖战,2022英雄联盟全球总决赛(S12)终于在11月6日落下帷幕。在这一个多月里,各方战队一路披荆斩棘,有命悬一线,也有高光瞬间,荣耀的背后始终跟随着挑战。而对于拥有S12直播平台独家版权的哔哩哔哩(以下简称“B站”)来说,亦是如此。
据悉,整个赛事期间,B站共完成了91场比赛的实时直播,其中最后一场的S12全球总决赛播出后,哔哩哔哩英雄联盟赛事直播间的实时人气一度突破3.1亿。
纹理更加清晰的画质、“纵享丝滑”的转播效果、沉浸感十足的互动特效、更贴心的无障碍直播间......S12直播可以看做是音视频领域“黑科技”的一次前沿试水。对于需承载亿万级并发在线观看人次的直播平台来说,每一处升级都错综复杂,每一点进步都得来不易。
在短视频、直播、社交等并进的互动时代,超高清已经成为游戏玩家的硬核需求。“得画质者得人心”,不管是音视频内容的生产商还是服务商,极致的画质体验已经成为获得用户注意力资源的武器。
而在B站上看过今年英雄联盟全球总决赛的观众,大都会明显感觉到:今年的赛事直播画面更清晰了,互动也更多了。
据【哔哩哔哩技术】官方公众号公布的信息显示,针对 S12的赛事直播,B站研发了一种实时画面超分算法来提升画面质量,该算法能够在源流的基础上使得画面细节更加清晰、纹理更加丰富。
▲低质图像/超分图像/高质图像/残差图像
图像超分算法在业内已经不是新词,目前主流超分算法分为非实时和实时处理两种类型。在过往,已有大量非实时超分算法的实践案例,比较典型的是视频网站将低分辨率、低清晰度的老旧视频转换成符合主流观看需求的720p、1080p、2k的高分辨率视频。但这种非实时超分算法的计算量很大,只适用于对视频实时性没有要求的场景。
在B站S12赛事直播这类对视频实时性要求很高的游戏直播场景中,实时处理的超分算法可大幅度缩减计算量,在提升画面质量的同时,也能提高视频处理效率。
在此前测试时,B站的实时画面超分算法将视频从1080p超分至4k分辨率,单卡处理速度可以达到75fps(画面每秒传输帧数)。这个处理效率对于60fps的游戏直播源流来说,在速度上还有较大富余。
此次B站推出的单卡4k 75fps的实时超分速度拓宽了超分技术在直播领域的应用。尽管目前该算法仅在S12官方赛事直播间应用,但据B站透露,未来其也将服务于更多需要较高实时性的游戏直播业务中,开拓更为广阔的应用空间。
不过,当前的互动时代,远不止画质等信息的“通信”传输,更强调的是共享时空,实时互动。
“看比赛时候的氛围有非常强的实时性和感染力,大家会想要把自己比较饱满的情绪及时表达出来,所以我们希望能通过除了弹幕或者是常规的点赞动作,让大家能把自己兴奋的一面更好地展现在直播间里,让所有在线的观众能共庆此时,分享快乐。”今年B站的赛事直播比较明显的变化是赛事房间使用了新版直播间,支持上下滑切换直播间、全新背景图、表情包弹幕等功能。据B站直播互动技术保障负责人CrystalDan介绍,为了增强互动性和趣味性,B站在直播间加入了不少新玩法。
例如在比赛到了团战、推高地等比较激烈的时刻,直播间会发起“点赞热力特效”,引导大家积极点赞为选手打call,在极短的时间内打满进度条后会出现酷炫的动画特效。一方面是让用户通过点赞的方式表达自己对这场比赛的热情,另一方面也让没有点赞的用户可以通过进度条和动画特效感受到紧张的比赛氛围。
再比如通过“小黄车”卖赛事装扮。当某一个战队获胜了,用户可能会由此产生购买该战队装扮或周边的欲望,以获得归属感和荣誉感。而直播间里的“小黄车”提供淘宝、京东、会员购、个性装扮等商品,能够满足用户边看边买的需求。此外,还有一键预约、礼物特效、弹幕表情等更便捷、强互动的功能,大大提升了用户的观赛和参与体验。
更好的画质,更多的玩法,说起来简单,要实现起来却并不容易。作为承载千万级乃至亿量级的赛事直播平台,任何细小的问题都会对用户体验造成巨大的伤害,而新的玩法也会带来新的场景计算和流量并发。
简单来讲,本次S12赛事直播的流程可以理解为:
腾讯官方提供赛事的原地址;
B站的云源站拿到直播信号后,会进行画面的预处理,包括增强或锐化等;
进行转码和4k的一个超分;
将处理好的视频流通过CDN内容分发网络,下发至观众的设备中进行播放。
为了保障直播各个环节的稳定性,早在今年8月,B站的技术团队就制定出了周密的直播保障方案。不仅在技术上,对直播老网关做了迁移和容器化,并通过Go/PHP去cpuset化、内核升级推进了直播合池,提升了PaaS资源弹性,对核心功能做多活保证直播体验,还通过全链路压测、混沌工程、设定预案/SOP等技术手段,去提高系统的可靠性。
同时,在业务上,B站也与上游业务方做了合理的流量预估和资源预算,并同往年一样,选择依托华为云过硬的技术服务,以确保直播万无一失。
“从外面来看,我们整个直播系统是一个比较简单的结构,但其实整个直播系统后面涉及到的微服务有几百个。这对于直播的保障工作来说,是一件很有挑战的事情。”B站S12技术总负责人小卫在采访中说道。
要知道,赛事直播是一项比较复杂的工程,需要统一的管理和调度。因此,华为云容器的引擎为B站提供了混合集群的统一管理服务。基于华为云CCE容器的托管服务,B站搭建起导购台和中转台,配合华为高性能的GPU云主机进行赛事的流转码,让每场比赛都能够顺利地在亿万的终端上流畅、顺滑地调度播放。
“在今年新增的这些玩法中,高并发的读和写是同时存在的,我们需要在高并发的场景下,保证用户的互动体验。” 小卫表示。
本次赛事华为云还为B站提供了边缘分布式直播方案,帮助B站降低计算成本,消除了之前统一转码源站的单点故障,增强了直播过程中的稳定性、安全性。同时打造海量弹性资源池,按需调度,更好地提升了用户的互动体验。
例如基于华为云智能边缘站点,可实现视频访问的冷热分流:
通过这样冷、热不同视频的不同调度逻辑,细粒度管理,能够更精细化地管理与控制成本。
同时,华为云独创的高性价比直播方案——边缘G-EIP的网络算力分离,也是本次赛事技术支持中的一大亮点。
众所周知,华为云在很多城市都有大量优质稳定的计算资源,能够确保B站的收流、转码、录制等计算密集型业务的持续稳定运行。只不过,一线城市的带宽资源相对成本较高,直播又是带宽强依赖型业务,这样势必会导致直播建设成本上浮,形成成本与稳定不可兼得的局面。
因此,华为云针对B站的实际场景需求,创新性地将网络出口拉远至一线城市附近的二三线城市pop点,利用当地廉价的带宽资源与华为云主力region的网络服务绑定结合,做到了可靠性与成本兼顾。同时,也得益于华为云分布在全国各区域的边缘站点,终端用户得以就近接入,保障了流畅的观赛体验。
此外,除了对直播间的互动功能进行升级,在今年的S12期间,B站的无障碍直播间也使用了华为的高性能GPU云主机,在自动生成实时字幕上比去年更为快速、准确。
“每当我们有一些资源不足、备量不足的问题时,就会找到我们的合作伙伴一起去看能不能通过一些方案或者从内部协调一些机器,帮我们去cover这些问题。”据B站S12技术总负责人小卫介绍,在赛事期间,华为云会专门指派一些工程师到现场做驻场保障,在比赛的后端也会有团队远程在线互动,以确保不管是前方还是后方出现问题,都能及时响应,从而保证整个赛事过程的平稳顺利。
“希望成为中国年轻人的文化生活方式,陪这一代人一起成长。”成立13年,以技术创新为源动力的B站已发展成为了国内音视频行业的领军企业,而华为也在借助底层技术架构的不断创新,释放音视频技术生产力。
从1988年华为通话业务成就国内一流的音频引擎,到2004年华为视频业务拥有国内一流的直播CDN能力,再到2017年华为云上线CDN海量节点,以及今年和B站的合作进一步突破了视频直播这一复杂工程,华为始终立足于整个音视频大生态,探索技术在其中的创新价值。
而得益于底座能力与关键技术的持续突破,音视频服务体系正逐步从点播、直播到实时音视频深化发展。实时性与互动性的长足需求与优化,逐步激活了更多场景下的音视频互动模式,驱动用户的音视频消费习惯向更加还原真实、更加沉浸式的实时音视频服务迁移。
“我曾经看过一个电影叫做《头号玩家》。在我自己的设想中,未来一定是往这个方向发展的,是通过脑机接口或者类似AR、VR的技术来实现的。我觉得这种沉浸式的体验给用户带来的感受会非常好。”B站技术委员会负责人毛剑在采访中说道。
实时的音视频互动与社交娱乐场景具有天然契合度,不仅可以直接提升现有产品的基础属性,还可以融合空间音频、VR、AR等技术,给予用户沉浸式的实时互动体验。也正因如此,国内实时音视频的市场规模一直在不断上升,场景效能也在不断深化。
根据艾瑞咨询发布的《2022年中国实时音视频行业研究报告》显示,2021年中国实时音视频(RTC)PaaS市场规模为16亿元,同比增长10.3%。受社交娱乐头部应用的高度渗透及“双减”政策的持续影响,预计未来三年的复合增长率为28.4%,2024年实时音视频(RTC)PaaS市场规模将达到30亿元。
而目前来看,华为云的SparkRTC技术已经十分成熟,可提供高质量、低成本的实时音视频服务,实现了跨大洲端到端时延200ms以内,SLA服务可用性高达99.99%。
“我们设想的未来,它包含着元宇宙、数字孪生,也包括VR和AR在内的很多技术。实现这些技术的核心在于,在应用的过程中解决高带宽和低延时问题。在那之后,视频这个市场就会像星辰大海一样宽广。它能带来海量的视频,人人都会去享受视频。”华为云上海总经理张英梗在采访中说道。
可以预见,未来实时音视频将有望在越来越多的产业互联网领域实现落地,同时元宇宙相关应用的出现也将为消费互联网创造更大的想象空间。
据张英梗总经理介绍,无论是to B还是to C,华为云都具有丰富的服务经验,未来也将持续加强数字内容生产的生态体系构建和技术研究实践,助力客户搭建无限玩法或场景,共建实时互动的世界。
“我们希望客户和伙伴在整个大视频生态上,都能体验到未来技术带给他们的创新价值,让客户能更好地服务于他的客户以及他自己。同时,也希望我们的伙伴在整个华为云生态上,都能享受到‘一切皆服务’带给他们价值体验。” 张英梗说道。
S12虽已落幕,但属于B站与华为云的音视频“黄金时代”才刚刚开始。
我经常将预配置的lambda插入可枚举的方法中,例如“map”、“select”等。但是“注入(inject)”的行为似乎有所不同。例如与mult4=lambda{|item|item*4}然后(5..10).map&mult4给我[20,24,28,32,36,40]但是,如果我制作一个2参数lambda用于像这样的注入(inject),multL=lambda{|product,n|product*n}我想说(5..10).inject(2)&multL因为“inject”有一个可选的单个初始值参数,但这给了我......irb(main):027:0>(5..10).inject
是否有self验证的问题列表。看着那个,我可以确定我知道。我应该复习一下。在学习的过程中,我列了一个这样的list,但它只包含我在某处听说过的项目。我需要一段时间才能找到新的东西。 最佳答案 以下是针对ruby和Rails的一些测试列表。证书名称:RubyonRails谁提供:oDeskIncorporation认证费用:免费网站:https://www.odesk.com/tests/985?pos=0证书名称:RubyonRails提供者:Techgig.com(TimesBusinessSolutionsLimited(T
我想覆盖store_accessor的getter。可以查到here.代码在这里:#Fileactiverecord/lib/active_record/store.rb,line74defstore_accessor(store_attribute,*keys)keys=keys.flatten_store_accessors_module.module_evaldokeys.eachdo|key|define_method("#{key}=")do|value|write_store_attribute(store_attribute,key,value)enddefine_met
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我最近开始学习Ruby,这是我的第一门编程语言。我对语法感到满意,并且我已经完成了许多只教授相同基础知识的教程。我已经写了一些小程序(包括我自己的数组排序方法,在有人告诉我谷歌“冒泡排序”之前我认为它非常聪明),但我觉得我需要尝试更大更难的东西来理解更多关于Ruby.关于如何执行此操作的任何想法?
深度学习12.CNN经典网络VGG16一、简介1.VGG来源2.VGG分类3.不同模型的参数数量4.3x3卷积核的好处5.关于学习率调度6.批归一化二、VGG16层分析1.层划分2.参数展开过程图解3.参数传递示例4.VGG16各层参数数量三、代码分析1.VGG16模型定义2.训练3.测试一、简介1.VGG来源VGG(VisualGeometryGroup)是一个视觉几何组在2014年提出的深度卷积神经网络架构。VGG在2014年ImageNet图像分类竞赛亚军,定位竞赛冠军;VGG网络采用连续的小卷积核(3x3)和池化层构建深度神经网络,网络深度可以达到16层或19层,其中VGG16和VGG
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。我一直在Rails上做两个项目,它们运行良好,但在这个过程中重新发明了轮子,自来水(和热水)和止痛药,正如我随后了解到的那样,这些已经存在于框架中。那么基本上,正确了解框架中所有智能部分的最佳方法是什么,这将节省时间而不是自己构建已经实现的功能?从第1页开始阅读文档?是否有公开所有内容的特定示例应用程序?一个特定的开源项目?所有的rails交通?还是完全
这个问题在这里已经有了答案:Unabletoinstallgem-Failedtobuildgemnativeextension-cannotloadsuchfile--mkmf(LoadError)(17个答案)关闭9年前。嘿,我正在尝试在一台新的ubuntu机器上安装rails。我安装了ruby和rvm,但出现“无法构建gemnative扩展”错误。这是什么意思?$sudogeminstallrails-v3.2.9(没有sudo表示我没有权限)然后它会输出很多“获取”命令,最终会出现这个错误:Buildingnativeextensions.Thiscouldtakeawhi
假设我有一个函数defodd_or_evennifn%2==0return:evenelsereturn:oddendend我有一个简单的可枚举数组simple=[1,2,3,4,5]然后我用我的函数在map中运行它,使用一个do-endblock:simple.mapdo|n|odd_or_even(n)end#=>[:odd,:even,:odd,:even,:odd]如果不首先定义函数,我怎么能做到这一点?例如,#doesnotworksimple.mapdo|n|ifn%2==0return:evenelsereturn:oddendend#Desiredresult:#=>[
我想知道如何从Apple.p12文件中提取key。根据我有限的理解,.p12文件是X504证书和私钥的组合。我看到我遇到的每个.p12文件都有一个X504证书和至少一个key,在某些情况下有两个key。这是因为每个.p12都有一个Apple开发人员key,有些还有一个额外的key(可能是Appleroot授权key)。我只考虑那些具有两个key的.p12文件是有效的。我的目标是区分具有一个key的.p12文件和具有两个key的.p12文件。到目前为止,我已经使用OpenSSL来检查X504文件和任何.p12的key。例如,我有这段代码可以检查目录中的所有.p12文件:Dir.glob(
在以下示例中,我无法理解Ruby运算符的优先级:x=1&&y=2由于&&的优先级高于=,我的理解是类似于+和*运算符:1+2*3+4解析为1+(2*3)+4它应该等于:x=(1&&y)=2但是,所有Ruby源代码(包括内部语法解析器Ripper)都将其解析为x=(1&&(y=2))为什么?编辑[08.01.2016]让我们关注一个子表达式:1&&y=2根据优先规则,我们应该尝试将其解析为:(1&&y)=2这没有意义,因为=需要特定的LHS(变量、常量、[]数组项等)。但是既然(1&&y)是一个正确的表达式,那么解析器应该如何处理呢?我试过咨询Ruby的parse.y,但它太像意大利面条