关于视频:视频加密防盗录防下载有什么好的方法

针对教育行业外围数据的平安诉求,能够通过防下载、防盗链、防录屏及防篡改等4大技术,进攻对外围资源的攻打,防止视频数据泄露,保障网站视频的平安与可用性。   1.防下载(视频数据加密、播放器加密)   A.视频数据加密-VRM13:保利威采纳碎片化混同加密技术,将上传视频切片、对碎片逐个加密,采纳AES128加密,XOR加密,关键帧错序,碎片混同加密等技术,对要害数据进行混同爱护,视频破解难度倍增。   B.播放器加密:保利威自主播放器采纳防反编译、代码混同等形式,对视频平安进行双重坚固,爱护视频版权。  2.OVP防盗链即黑白名单,启用业界当先的OVP技术,设置视频只容许某些指定的域名下能力失常播放,其余域名无奈播放。 3.防录屏(问答播放器、浏览器防录屏、视频水印及ID跑马灯)  A. ID跑马灯 将用户ID、电话号码或其余信息内容等展示在视频上,实现设定文字在视频上不规则地跑动,可追溯录屏者身份,对小窗录屏/全屏录屏等行为起到强有力的震慑作用。 B. 视频水印 在视频中增加用户专属的视频水印,从而让视频中融入企业的版权信息,避免盗录者盗取版权,爱护公司的知识产权。 C. 浏览器防录屏   通过播放器实时监测,如果检测到视频处于录屏状态或小窗待录屏状态,视频会立刻进行播放,以此来避免视频被盗取。   D. 问答播放器 视频播放到某个工夫点,弹出问答播放器,只有答题正确,提交后能力持续观看,减少了录屏的难度,进步录屏老本,升高了盗版视频的观看体验。 4. 网页数据防篡改  传输链路反对ATS/HTTPS加密协议。从服务器端到分发端,从分发端到观看端,均满足数据安全要求。防止视频在传输过程中被截取或被篡改。 视频版权保护体系,通过对视频内容加密、播放器代码加密、视频播放防录屏、视频传输防篡改等4大技术,让视频实现从上传、散发、传输到播放的端对端的视频平安管控。  5. 加密成果实例演示我做的加密演示实例成果:https://tony.89525.com/edu/index.php

September 7, 2023 · 1 min · jiezi

关于视频:如何定位分析视频异常画面

前言视频典型画面不失常次要蕴含画面卡顿、画面含糊、画面不显示、画面花屏这 4 类问题。本文次要介绍的是画面花屏的状况,这里的画面花屏蕴含了花屏、闪屏、绿屏、黑屏。视频花屏是多媒体工程师最常见的问题之一,也是最辣手的问题之一,笔者此前也数次遇到这样的问题,明天在此总结分享下教训,心愿浏览到这篇文章的小伙伴们都可能有所播种。 问题定位很多小伙伴碰到此类问题,往往感觉大刀阔斧,实质起因还是对于视频链路不太清晰,导致无从下手。当遇到视频花屏时,首先要定位是最先呈现的花屏的是哪个阶段产生的,再逐层进行剖析定位。以 RTC 视频为例,分为发送端、服务器、接收端,其具体流程如下: 如果发现对端显示不失常,排查程序: (1)排查接收端; (2)排查发送端 ; (3)排查服务器; 如果发现是本端显示不失常,排查程序: (1)排查发送端 ; (2) 其次是分环节排查。 接收端流程 播放器流程 rtmp-解协定-解码-后处理-渲染。 mp4/flv-解封装-解码-后处理-渲染。 播放器数据起源来自网络视频或者本地视频。 如果本地视频呈现问题,能够先应用其余播放器 VLC/ffplay 播放本地的视频看看。 如果网络视频呈现问题,能够保留解码前的数据,应用 ffplay 播放 h264 试试。 依据播放器的 2 种流程,还有可能在解协定或者解封装的阶段,因而能够在这之后 dump h264 码流看看。 WebRTC接收端流程rtp-jitterbuffer-解码-后处理-渲染。网络局部:嵌入式设施用了webrtc,其网卡对于带宽限度重大,会造成数据包失落重大;另外就是理论网络状况差,导致接收端数据包失落重大;都有可能导致生成的画面花屏。 解码局部:硬件解码容易出错,一是硬件解码器会因各种厂商定制化存在差别,兼容性问题多,容易呈现报错的状况,二是 YUV 格局的不同,软解个别是 YUV420p,硬解是 NV12 等,对于解码器的格局指定,须要关注解码器自身的能力。咱们还能够在解码之后 dump YUV 数据来查看具体的状况,如果播放 dump 之后的数据存在绿屏、花屏,有可能是内存对齐的问题,也有可能是 dump 格局不对,或者是硬件解码器的问题。 后处理局部:图像格式转换、opengl 内存对齐、GPU 数据多线程同步问题等。 渲染局部:渲染呈现色调偏差,有可能是图像格式转换的计算公式上的偏差,也有可能是opengl内存对齐的问题。画面裂屏有可能是渲染脏数据的问题,次要起因是GPU数据的多线程同步问题。 发送端流程 采集环节:自身摄像头进去的数据就存在异样,属于硬件采集设施异样,特地是一些 USB 内部摄像头;其次就是采集原始格局如 MJPEG 格局,Pipeline 上在采集模块将 MJPEG 转为 I420,图像格式转换也有可能导致数据异样。回调环节:将采集数据回调内部,内部进行二次解决,如美颜等,也有可能导致数据异样,常见的就是画面黑屏、闪屏等景象,次要是因为内部模块因为 OpenGL 出错,导致给出的 GPU 数据没有填充等起因。前解决环节:包含图像格式的转换和 GPU 纹理渲染都有可能存在异样,以及相干的前解决视频算法。编码环节:dump h264 码流,排查编码引入的问题。本地预览环节:包含图像格式的转换和 GPU 纹理渲染都有可能存在异样。发送环节:udp 发送,有可能存在丢包状况;弱网导致队列呈现了数据沉积,并产生了 drop 数据的状况;短时间发送大量数据,如 I 帧的迅速发送。dump 环节:通常咱们通过 YUV dump 排查具体是上述哪个环节引入的问题,但对于 dump 自身也有可能存在问题,例如 dump 的格局和理论大小的尺寸,在播放时设置不统一,就会呈现问题。服务器转发 ...

June 8, 2023 · 2 min · jiezi

关于视频:大淘宝技术斩获NTIRE-2023视频质量评价比赛冠军内含夺冠方案

近日,CVPR NTIRE 2023 Quality Assessment of Video Enhancement Challenge比赛结果颁布,来自大淘宝音视频技术团队的同学组成「TB-VQA」队伍,从37支队伍中怀才不遇,拿下该较量(惟一赛道)冠军。此次夺冠是团队继MSU 2020和2021世界编码器较量、CVPR NTIRE 2022压缩视频超分与加强较量夺魁后,再次在音视频核心技术的权威较量中折桂。赛事介绍CVPR NTIRE (New Trends in Image Restoration and Enhancement workshop and challenges on image and video processing) 是近年来图像和视频加强解决畛域最具影响力的全球性赛事。往年(2023)的赛事包含Quality Assessment of Video Enhancement Challenge(视频品质评估,VQA)、real-time image super-resolution、image shadow removal、video colorization、image denoising等,笼罩许多图像和视频加强解决的经典工作。由上述比赛不难看出,视频加强解决曾经在学术界大量钻研并在工业界失去广泛应用。随着互联网视频化的深刻,越来越多的UGC(user generated content)等非传统广电视频(包含但不限于短视频、直播等)在互联网平台上被生产或播放,并大都通过加强解决。天然地,如何无效地掂量加强解决后的视频品质就成为一项重要且紧迫的工作。因而,VQA比赛应运而生,并由NTIRE于往年首次举办。主办方构建了蕴含1,211个实在利用场景的视频的数据集 ,对其进行包含色调、亮度、和对比度加强、去抖动、去模糊等加强解决,并对解决后的视频进行打分作为GT(ground truth)。参赛者设计方案对上述视频进行打分,与GT更为靠近(应用相关性作为掂量指标,包含SRCC和 PLCC,是业界最罕用的指标,更高的SRCC和PLCC示意与GT拟合水平更高)的参赛者名次更好。本次比赛由苏黎世联邦理工学院计算机视觉实验室主办,仅有惟一赛道——无参考视频品质评估,星散了国内外几十只参赛队伍,包含字节、快手、网易、小米、Shopee等出名科技企业,北京航空航天大学、新加坡南洋理工大学等高校均有参赛。通过强烈的角逐,大淘宝音视频技术的参赛队伍「TB-VQA」在惟一赛道夺冠,在Main Score、SRCC、和PLCC三项指标均胜出。 表1. CVPR NTIRE 2023 VQA较量排行榜 值得一提的是,本次较量的冠军是大淘宝音视频技术团队继MSU 2020和2021世界编码器较量、CVPR NTIRE 2022压缩视频超分与加强较量夺魁后,再次在音视频核心技术的权威较量中获得佳绩。团队在视频编码、视频加强解决、视频品质评估、以及视频传输等视频核心技术畛域均有布局,一些技术冲破发表在CVPR、ICCV等计算机视觉和视频畛域的顶级会议,在上述较量获得杰出问题,也是团队长期以来继续投入和不断创新的阶段性成绩。 在视频编码方面,MSU(莫斯科国立大学)世界视频编码器大赛是视频编码畛域最权威的全球性顶级赛事,迄今已由MSU的Graphics & Media Lab间断举办了二十三届,其评测报告被业界宽泛认可,吸引了包含Google、Netflix、Intel、Nvidia、腾讯、字节、华为等国内外出名科技企业参加,代表了行业倒退的风向标。大淘宝音视频技术团队自研的奇点编码器S265和S266,相比业界风行的开源编码器x265、VVEnC等,在编码速度、编码品质、和编码延时等多方面均有显著冲破,并联结阿里云视频云团队加入了MSU 2020和2021间断两届较量,获得多个赛道第一。S265曾经全面利用于包含淘宝直播、逛逛、首页信息流在内的大淘宝内容业务,通过奇点编码器压缩后,一般手机在3G网络也可顺滑播放720p的高画质,最新公布的手机甚至可反对4k 30FPS超高清直播。 在视频加强解决方面,CVPR NTIRE 压缩视频超分与加强较量自2020年起已举办三届,在工业界和学术界均产生了重大的影响,吸引了包含腾讯、字节、华为等出名科技企业,中科院、北大、港中文、ETH等科研机构参赛,其中很多参赛者都是间断参赛,竞争强烈。CVPR NTIRE 2022压缩视频超分与加强较量蕴含三个赛道,别离是: 赛道1:针对视频编码的高压缩比带来的失真的视频复原问题;赛道2:在赛道1的根底上,同时解决高压缩和2倍超分问题。;赛道3:在赛道2的根底上,进一步摸索4倍超分问题。其中,Track1和Track2的问题曾经在工业界失去广泛应用,将视频还原到现实视频的画质可能大幅晋升人眼感官,吸引人们的观看志愿。通过强烈的角逐,大淘宝音视频技术团队自研的视频超分办法TaoMC2,获得了三个赛道两冠一亚(赛道3亚军)的问题。相干视频加强技术目前已广泛应用于点淘、逛逛在内的所有大淘宝内容业务,反对直播、短视频的实时和非实时转码过程中的画质加强;相干超分辨率技术也宽泛用于诸如弱网等场景下的低分辨率视频传输、保障低传输带宽下的高分辨率的用户播放画质体验。后文分享咱们的具体的计划—— 参考计划视频品质评估依照对参考视频可用性个别能够分成三类:全参考视频品质评估、局部参考视频品质评估、和无参考视频品质评估 [1]。因为视频加强场景不存在完满的参考视频,因而更适宜采纳无参考视频品质评估办法。无参考视频品质评估作为品质评估的次要钻研方向之一,在过来的几年里失去了宽泛的关注。支流办法有:基于图像识别 [2] 或者图像品质评估 [3] 工作的预训练模型来提取视频的帧级特色、思考时序上的相关性回归特色或者进一步联合时域特色 [4] 、以及针对视频失真进行端到端的特色表征学习 [5] 等。 ...

April 26, 2023 · 2 min · jiezi

关于视频:视频编辑场景下的文字模版技术方案

作者 | Lok'tar ogar 导读 本文依据度咔剪辑APP文字模版开发实际,分享视频编辑场景下,动态文字模版渲染能力的技术计划。作为富文本渲染计划的父集,此技术计划能够扩大到其余须要简单富文本渲染的场景下。 全文6745字,预计浏览工夫17分钟。 先睹为快文字模版成果展现:△文字模版在度咔剪辑中的利用 01 背景视频创作工具的外围竞争力之一是其丰盛的素材库,其中包含各种视频素材、音频素材以及贴纸素材等等。其中的文字模版也是不可或缺的一部分。文字模版提供了富文本的编辑性能,使用户可能在视频中增加更多样式柔美的文字信息,从而削减了视频素材的多样性。此外,通过预设的款式,用户能够更加不便地抉择适宜本人的文字模版,节俭了素材抉择的工夫,晋升了用户体验。在度咔的晚期版本中,咱们并没有提供文字模版这一素材类型。为了晋升产品的竞争力和进步素材渗透率,咱们进行了肯定的研发工作,最终推出了文字模版素材。这些文字模版素材不仅能够满足用户的需要,而且能够为用户提供更多的创作灵感和思路。同时,咱们也一直地更新和优化咱们的素材库,以确保用户可能取得最新和最优质的素材资源。文字模版须要出现的图文款式较为简单,度咔文字模版已反对的个性见上面的列表: 02 整体设计咱们基于已建设的素材平台,新增了文字模版这一类型,并且在素材平台提供了素材编辑、预览、配置上线的性能。素材生产和预览相结合,能够在同一界面预览刚刚调整的成果,能够间接匹配度咔的字体库,以及间接批改图片资源。这种素材生产方式具备高可复用性,用一个文字模版,改一个背景图、新增一个描边,就能够间接生产出另一个文字模版。公布这一模版,并导出效果图,即进入待审核队列,审核后可配置上线。截至目前,咱们已上线了361套文字模版,并实现了【素材生产】-【素材平台预览】-【素材下发和客户端载入】-【客户端渲染】的残缺链路。 03 性能实现3.1 素材生产目前视频编辑行业支流的素材格局通常采纳资源文件和配置文件(形容文件)的形式进行。其中,资源文件包含图片资源和字体文件,而配置文件则次要用于形容文字模版的排版属性和渲染参数。这种形式的长处在于,生产端只须要通过特定字段来形容相干个性,就能够在渲染端出现进去。这种形式灵便度较高,能够依据具体场景须要由简略到简单地迭代相干个性,同时实现老本也绝对较低。不过,毛病在于素材生产模式是自定义的,须要肯定的设计学习老本。除此之外,还有一种生产方式是针对业余设计软件的,以Photoshop(PS)为例。PS有比拟成熟的文件格式文档,蕴含了各类数据结构,能够间接应用PSD文件解析图文属性进行渲染。这种形式的长处在于素材生产方式较为通用,设计简直没有学习老本。不过,毛病在于咱们须要的一些个性无奈通过PSD简略地满足,比方多层暗影成果,其是由多个文本框层层叠加失去的成果。在批改文字内容的时候,咱们须要同步批改这几个文本框,因而须要把它们作为一个组来解决,逻辑就变得比较复杂。如果用配置文件来形容,则能够间接进行多层绘制,免去简单的逻辑解决。思考到业务ROI和短期上线性能的可行性,咱们采纳了第一种形式,并借鉴了黄油相机团队的素材生产规范,设计了用于形容排版属性和渲染参数的JSON构造。 3.2 端渲染在视频编辑场景下,文字的解决须要进行文字排版和文字绘制两个局部的解决。对于文字排版,iOS平台采纳了CoreText底层框架来进行排版解决,而Android则能够通过FontMetrics等获取底层FreeType对于字形解决的后果。不论是将一段文字作为整体进行排版解决,还是别离计算每个文字的地位,总的解决的性能耗费是雷同的。在进行文字绘制方面,须要在性能开销和开发成本之间寻求均衡。最终,iOS采纳了QuartzCore框架,Android则应用Canvas来进行文字绘制。这样,在预览时,文字能够间接出现在视图上,反对实时编辑预览。当须要将视频导出时,咱们将其解决为贴纸的模式增加在视频中。以iOS为例,花字组件架构如下: 3.3 形容文件设计上文提到,咱们用json文件形容文字模版的排版属性和渲染参数,资源下发到客户端后,客户端会解析对应参数,来进行文字模版的排版和最终成果出现。形容文件中会波及以下内容: (1)文字排版属性 baseline:字符基线,baseline是虚构的线ascent:字形最高点到baseline的举荐间隔descent:字形最低点到baseline的举荐间隔leading:行间距,即前一行的descent与下一行的ascent之间的间隔advance width:Origin到下一个字形Origin的间隔left-side bearing:Origin到字形最右边的间隔right-side bearing:字形最左边到下一个字形Origin的间隔bounding box:蕴含字形的最小矩形x-height:个别指小写字母x最高点到baseline的举荐间隔Cap-height:个别指H或I最高点到baseline的举荐间隔(2)文本对象组合下图为两个文字绘制区域的组合示例 3.4 排版绘制流程在咱们的文字模版中,排版和绘制是密不可分的,须要在代码逻辑中交叉进行解决。咱们的绘制步骤是从底层到顶层逐层绘制,但因为一些绘制过程会耗费大量工夫,为了防止阻塞主线程,咱们应用了异步绘制的技术。在异步绘制的过程中,咱们将一些比拟耗时的绘制过程放在了后盾线程中进行解决,这样就可能不影响用户的失常应用。同时,在异步绘制的过程中,咱们也会进行文字排版的计算,这样可能在后续绘制过程中疾速获取到文字的相干信息,进而进步绘制效率。总的来说,咱们通过采纳异步绘制的形式,可能保障文字模版的排版和绘制过程顺利进行,同时也不会对用户造成太多的烦扰。 04 难点与挑战1、多端成果的对齐咱们的我的项目反对web、iOS和Android端的渲染,但因为通用的跨端计划须要在底层应用OpenGL渲染,而过后的人力资源限度使得短期内难以实现。因而,咱们采纳了多端独立渲染的形式,每个平台都有独立的渲染计划。这种形式也带来了一个问题:不同平台的渲染成果会有差别。为了解决这个问题,咱们须要保障多端成果的一致性。因为在技术层面难以抹平差别,咱们决定通过规定和规范的对立来实现一致性。在设计json文件的格局时,咱们就对立了多端渲染的规范,比方文字装璜绝对于文字的初始地位是左上角对齐还是居中对齐,坐标原点的对立等。同时,咱们还对立了对应的参数所用的单位,从而最大水平地保障了最终出现成果的一致性。这样,无论在哪个平台上渲染,咱们都可能失去统一的后果,使用户体验更加对立和良好。 2、文字预排版在文字模版中,咱们将字号分为两种类型:固定字号和非固定字号。对于固定字号,咱们能够间接进行文字排版计算和绘制。然而,对于非固定字号的字体,咱们须要进行预排版的计算,以算出以后文字内容下对应的字号大小。这里有些计划是采纳二分法,先定一个较大的字号值,在0到该字号值的范畴内逐步迫近正确值,但这样其实造成了非必要的工夫损耗,联合文字排版的根底逻辑和限定条件,咱们能够做出工夫复杂度靠近O(1)的算法:计算最大字高->计算最小字高->计算字数最长行的字高->依据行数算字高->算出最终字高->依据字高算字号。iOS中用CoreText排版技术时,少部分状况会主动裁切填不满的文字,间接用计算出的字号会导致局部文字被裁切,所以要将以上后果作为估算后果,将size逐次减1,直至能填入path。 CGFloat ascent, descent; UIFont *font = [self.calFont fontWithSize:size]; CTFontRef fontRefMeasure = (__bridge CTFontRef)font; [attrString addAttribute:(id)kCTFontAttributeName value:(__bridge id)fontRefMeasure range:NSMakeRange(0, attrString.length)]; CTLineRef line = CTLineCreateWithAttributedString((__bridge CFAttributedStringRef)attrString); CTLineGetTypographicBounds(line, &ascent, &descent, NULL); //calculate max font size CGFloat calFontHeight = MIN(height, width); self.maxFontHeight = calFontHeight; //calculate min font size CGFloat maxLine = self.document.maxLine * BDTZBigFontDataOriginScale; if (maxLine <= 0) { maxLine = 1; } calFontHeight = [self itemWidth] / (maxLine + (maxLine - 1) * (self.leadingRatio * BDTZBigFontDataOriginScale - 1)); self.minFontHeight = MIN(self.maxFontHeight, calFontHeight); // longest column int64_t n = 0; NSArray *strArray = [self.document.content componentsSeparatedByString:@"\n"]; NSString *measureStr = self.document.content; // 这里是针对多行文本的解决,循环次数为行数,量级较小(个别为1-10行) for (NSString *str in strArray) { if (str.length > n) { n = str.length; measureStr = str; } } CGFloat fontWidthRatioOrigin = (self.document.fontWidthRatio * BDTZBigFontDataOriginScale); CGFloat trackingRatio = (self.document.trackingRatio * BDTZBigFontDataOriginScale) * (ascent + descent) / ascent; CGRect rect = [@"我" boundingRectWithSize:CGSizeMake(CGFLOAT_MAX, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:self.calFont} context:nil]; CGFloat fontWidthRatio = fontWidthRatioOrigin > 0 ? fontWidthRatioOrigin * (ascent + descent) / ascent : rect.size.width / rect.size.height; CGFloat fontHeight = width / (n * fontWidthRatio + n * trackingRatio); if (strArray.count > 1) { //calculate font size accoring column count calFontHeight = [self itemWidth] / (strArray.count + (strArray.count - 1) * (self.leadingRatio * BDTZBigFontDataOriginScale - 1)); //take the min value of the above two font sizes fontHeight = MIN(fontHeight, calFontHeight); } if (fontHeight > self.maxFontHeight) { fontHeight = self.maxFontHeight; } else if (fontHeight < self.minFontHeight) { fontHeight = self.minFontHeight; } CGFloat calSize = fontHeight; calFontHeight = [self calculateFontHeightSize:calSize]; calSize = floorf(calSize / (calFontHeight * (ascent + descent) / ascent) * calSize); //exact value, calculate repeatedly with frame until the path can be filled //依据估算后果,将size逐次减1,直至能填入path,此处代码省略 if (calSize <= 0) { return calSize; } calFontHeight = [self calculateFontHeightSize:calSize]; self.fontHeight = calFontHeight * (ascent + descent) / ascent; self.font = [self.calFont fontWithSize:calSize];3、绘制性能文字模版的实时预览须要频繁绘制,这会对CPU带来较大的累赘,从而导致卡顿。为了解决这个问题,咱们必须采纳异步绘制的形式。具体来说,咱们能够创立一个异步的串行队列,来存储用户每次操作的文字内容状态。每当用户进行批改操作时,咱们就将以后状态退出到队列中,期待后盾线程进行异步绘制。以后一个状态绘制实现后,咱们再从队列中取出下一个待绘制状态,直到所有状态都被绘制结束。这样,既实现了异步绘制避免卡主线程,又将用户每次批改的后果残缺出现进去。为了进一步优化文字模版的用户体验,除了异步绘制之外,还能够思考应用缓存机制来晋升渲染性能。在用户对文字模版进行操作时,文字视图会从新进行排版和绘制,如果每次都从新绘制整个模版,不仅会占用大量CPU资源,而且会升高用户体验。因而,咱们能够应用缓存来存储已绘制的模版视图,当用户批改文字内容时,只须要从新绘制被批改的局部,而不是整个视图。通过这种形式,咱们能够进步渲染性能,同时还能缩小资源耗费,进步零碎的响应速度。 ...

March 23, 2023 · 2 min · jiezi

关于视频:什么是投屏SDK

投屏软件想必咱们都是十分理解的,那么什么是SDK呢?SDK其实就是集成在APP外面的第三方工具包,也就是软件开发工具包。这个软件开发工具包能够帮忙APP高效率低成本的实现地图领取,统计、社交、广告等一系列性能。简略的来讲就是通过第三方服务包实现产品性能的软件工具棒,其实在咱们生存当中与SDK的接触也是十分亲密的,例如咱们在生存当中接管到的短信验证码就有可能来自第三方之手。投屏SDK是开发者通过调用SDK接口,就能够轻松的将各种视频流媒体或者直播流媒体推送到智能电视上进行播放了。这也十分符合现代人的一些需要,尤其是短视频频道的崛起,越来越多的人们开始利用投屏SDK。在泛滥投屏SDK当中,乐播投屏SDK是一套基于乐联协定开发实用于安卓或者ios设施的程序接口。我只须要下载乐播投屏app,就能够轻轻松松的将手机上的视频投放到电视上进行播放了,这样的话,能够真正的解决小屏实现大屏的快感,当然也能够将一些短视频下面的直播推送到电视上,这样能够更清晰的理解,粉丝的反馈与粉丝进行无效的互动和沟通了。投屏SDK也真正实现了多屏互动,而且平台也反对多个终端的应用,肯定水平上也升高了研发的老本,同时也进步了用户的粘性,进步了用户的满意度,现在投屏时代曾经降临,既能够将小屏投放到大屏,也能够将大屏投放到小屏,当然除了能够投放到智能电视之外,也能够投放到电脑当中,只须要把握肯定的办法,就能够轻轻松松的实现这些性能了。有限投屏SDK兼容性也比拟强,可实用于ios零碎,安卓零碎,windows零碎和MacOS零碎。乐播投屏操作起来十分的简略。用户只须要通过手机关上乐播投屏app扫描电视上的二维码就能够实现投屏了,电脑投屏,无需任何转接线,在乐播投屏电脑端抉择索要投屏的设施或者输出大屏端显示的投屏码就能够实现投屏了,当然对于一些游戏爱好者来说,想要体验大屏的畅爽的话,也能够将游戏搬到荧屏上。乐播投屏为游戏玩家打造了沉迷式的游戏体验,也彻底解放了小屏的时代。长期应用手机体验游戏的话,会造成眼睛酸涩甚至视力含糊,视力降落这样的状况。将游戏搬到荧屏上,能够体验大屏的快感,同时也丰盛了玩家的体验。这样的游戏形式也是十分新鲜独特的,现在互联网时代的交互性也极大的扭转了人们的休闲娱乐形式,尤其是对于一些热衷网络云社交云游戏的人们来说,通过投屏互动也丰盛了业余文化生存,进步了生活品质。乐播投屏也让云投屏的互动性和电视大屏的视频劣势进行完满的联合,也让投屏更加好玩畅爽。这也是时代提高的一种体现。

February 13, 2023 · 1 min · jiezi

关于视频:纠删码在实时视频流中的应用丨Dev-for-Dev-专栏

本文为「Dev for Dev 专栏」系列内容,作者为声网网络体验团队王瑞。01 背景在实时音视频通话中,音视频品质受网络丢包影响较大,特地是对于视频。 为什么视频对丢包更敏感呢?通常来说,音频的原始码率绝对视频来说比拟小,因而音频编码器的压缩率比视频编码器要小很多。音频帧通常都是独立编码和解码的,因而任何一帧数据的失落,都不会影响其余帧的解码。 而对于视频来说,为了达到较高的压缩率,通常会采纳残差编码的办法来去除大量的空间和工夫冗余信息,这就导致了在解码时,须要依赖参考帧能力正确解码,任何一帧数据的失落,都会导致后续相互关联的一些帧无奈解码。因为视频帧之间的这种相关性就导致了视频对传输丢包更加敏感。 常见的丢包包含 IP 传输网络的拥塞丢包,以及凑近用户侧的无线丢包。拥塞丢包个别是因为网络中解决能力比拟小的瓶颈节点导致的,可能体现为随机或间断丢包,无线丢包个别是因为信道烦扰导致的,常常体现为间断丢包。当然,在理论网络的丢包起因很多,体现也都不一样。 通过拥塞控制算法能够肯定水平防止拥塞丢包的产生,但无奈解决所有场景的丢包问题。 丢包产生后,通常会采纳以下两种补救办法: (1)重传(Automatic Repeat-reQuest, ARQ) 重传是一种高效的补救伎俩,但它依赖反馈信道,同时重传效率对网络RTT十分敏感。在高丢包下可能须要多次重传。 (2)纠错编码(Forward Error Correction, FEC) 纠错编码无需反馈信道,同时网络RTT的大小也不会影响它的效率。 在一对一的互联场景中,如果网络RTT较低,重传是一种适合的抉择。但在RTT较大的时候,重传的效率会明显降低。另外在大规模的多播和播送利用中,过多的重传申请可能会加剧网络拥塞和丢包。 在这些状况下,采纳FEC技术是更适合的抉择。FEC在编码端进行冗余编码,在接收端通过冗余数据主动复原出失落的数据包,其劣势在于不依赖反馈信道,且纠错效率不受RTT影响。因而,在高RTT环境中,能够无效防止重传导致的高提早。本文次要对实时视频传输中的FEC技术做简要介绍,并介绍声网的最佳实际。 02 基本概念介绍1、删除信道如果发送端发送的一组数据,通过特定信道传输,其失落数据的地位对接收端是已知的,那么这种信道模型就称之为删除信道。基于互联网的包交换网络是一种典型的删除信道,在这种信道模型下,所有已接管到的数据都被认为是正确的。 2、检错码,纠错码与纠删码在信道编码中,差错控制编码依据编码用处不同,能够分为检错码、纠错码和纠删码三种。 检错码是为了校验数据通过信道传输后是否呈现了谬误,罕用的检错码包含简略奇偶校验码、循环冗余校验码等。纠错码不仅能够辨认到信道传输是否呈现了谬误,还能纠正传输谬误。在纠错码看来,通过过错信道传输后,接收端收到的数据都是不牢靠的,须要通过解码来发现和纠正错误。常见的纠错码包含汉明码、BCH码等(见参考资料5)。 纠删码能够认为是一种非凡的纠错码,对于纠删码来说,其过错信道是一种删除信道,对接收者来说谬误的地位是已知的,并且收到的数据都认为是正确的,因而其编译码会比纠错码更容易一些。 传统纠错码技术的倒退曾经十分成熟,通常用在网络协议的物理层和数据链路层,用于保障牢靠的链路级信道。而纠删码大部分是基于纠错码的实践倒退而来,罕用于应用层的FEC编码。 3、RS码在视频传输的应用层FEC编码算法中,RS码是一种常见的算法。RS码是一类重要的线性分组码,也是一种性能优异的短码,工作在无限域上。线性分组码通常用(n,k)码来示意,对于位编码来说,k和n示意比特数,其中k为信息位个数,n为码长;而在应用层FEC畛域,FEC编码采纳包编码方式,在包编码中,k和n都示意包数。对于码长为n的RS纠删码来说,只有收到任意k个信息位,就能够解码出所有n个数据。 对于一个(n,k)线性纠删码,能够示意为如下的矩阵运算: Y = x * G 其中,x是信息位向量,y是码字向量,G是生成矩阵。 在RS码中,常见的生成矩阵有范德蒙矩阵和柯西矩阵,别离如下图所示,这两种矩阵的特点是任意子矩阵均可逆,因而总能利用任意k个接管码字来解码出残余n-k个码字。 ■范德蒙矩阵 ■柯西矩阵 4、无限域运算域是一个能够在其上进行加、减、乘、除运算而后果不会超出域的汇合,如果域中的元素个数是无限的,就称为无限域,或伽罗华域。无限域在密码学、编码实践中有着宽泛的利用。 RS码是一种工作在无限域GF(2^q)上的多进制纠删码,RS码的全副码元取自无限域GF(2^q)上。通常,咱们能够用以下两种办法来结构无限域: 定理一:对于汇合Zp={0,1,…,p-1},如果p为素数,那么在Zp上进行模p的加法和乘法运算就形成一个无限域。 即Z2,Z3,Z5都是无限域,然而Z8不是,因为8不是素数。为了可能在非素数上结构无限域,就须要借助于本原多项式。 定理二:如果p为素数,m为正整数,那么在GF(p^m)上模一个m阶本原多项式也形成无限域。 根源多项式就是首项系数为1的不可约多项式,在理论算法实现中,思考到性能与算法复杂性,RS算法常实现在GF(2^8)域上,本原多项式能够有多个,如下就是一个8阶根源多项式的例子: 03 实时视频流的FEC编码方案1、卷积码与分组码所谓分组码是指编码器须要事后把输出数据分组,达到分组长度能力编码。而卷积码的输出是间断的,输入也是间断的,不须要进行预分组。 分组码的输入只与以后编码的分组数据无关,例如(n,k)分组码以k个输出为一组,编码出n个输入,输入仅与k个输出无关。而(n,k,L)卷积码的编码输入不仅与k个输出无关,还与历史的L个输出无关。L为束缚长度,或记忆深度。 为了加强反抗间断丢包的能力,通常会减少分组码的分组长度(即k),然而因为分组码的解码提早是线性的,k值的减少会导致解码提早的减少。这就带来了分组长度的抉择问题,较长的分组长度能提供更好的纠错能力,但同时增大了零碎提早。而卷积码不须要思考分组长度问题,能够实现on-the-fly coding,更适宜实时流传输场景应用。 2、常见的几种编码方案对实时视频流来说,常见有以下几种编码方案,帧级编码、GOP级编码、扩窗编码、滑窗编码。其中前两种是分组码,后两种是卷积码的利用。 帧级FEC编码以单帧为分组单位(如下图),在这种编码方案中,FEC能够实现最小解码提早,但在低码率下因为分组太小,导致在间断丢包时很容易呈现无奈解码的状况。GOP级编码以GOP为分组单位,这种编码方案的益处是大幅提高了间断丢包下的解码稳定性,然而也带来了较大的解码提早,在实时场景中难以利用。 扩窗和滑窗编码是卷积码的具体利用,因为不存在分组问题,所以实践上能够在视频流的任意地位进行编码。两者的区别是,对帧X进行编码时,扩窗编码会编码所在GOP范畴内的第1至第X帧,而滑窗编码只会编码第X-T到X帧,其中T为最大窗口长度。这两种编码方式都能很好的进步间断丢包场景下的解码概率,同时不会额定减少解码提早。但因为扩窗编码在大GOP下存在性能问题,因而滑窗编码是一个更为理论的计划。下图是一个T=3的滑窗FEC编码的例子。 3、信源与信道联结卷积编码在声网的实际中,咱们不仅大规模利用了卷积码计划,验证了卷积码在实时视频流传输中的劣势,同时,咱们将信源编码与信道编码联合,发明了一种新的编码方案,并命名为DMEC(Dense Matrix Erasure Coding),DMEC真正施展了卷积码的最大性能劣势,可能实现在不同场景下的最优视频QoE。 在信息论中,对信息的编码分为信源编码和信道编码,信源编码是为了去除冗余信息,进步通信效率,例如罕用的视频编码器H.264就是一种信源编码器。而信道编码是为了反抗信道中的噪声和衰减,通过减少冗余,来进步抗干扰和纠错能力,例如下面讲到的RS码就是一种信道编码算法。 对于视频信源编码器来说,以H264为例,通常视频帧是逐帧参考的,即后一帧总是参考同GOP内的前一帧。但在分层编码的状况下则不然,在分层编码时,视频帧会分为根底层和一个或多个加强层。在多上行的场景中,分层编码能够为不同设施和不同网络状况的终端提供不同等级的自适应视频流。但与此同时,分层编码使得视频帧的依赖关系变得复杂,如果依然套用简略的滑窗FEC编码,视频品质将无奈达到最优。 ...

September 7, 2022 · 2 min · jiezi

关于视频:Uniapp实现实时音视频的基础美颜滤镜功能

视频根底美颜性能简介ZEGO 音视频SDK提供根底美颜性能,为用户呈现出良好的肌肤状态,打造独特天然的美颜成果。美颜滤镜性能罕用于视频通话、直播等场景。 开发者能够开启美颜开关,而后依据须要调整美白、磨皮、锐化以及红润的水平,轻松实现根底美颜性能。 Uniapp实现根底美颜的前提条件在实现根底美颜性能之前,请确保: 已在我的项目中集成 ZEGO Express SDK,实现根本的实时音视频通话性能,详情请参考 疾速开始 - 集成 和 疾速开始 - 实现视频通话。已在 ZEGO 控制台 创立我的项目,并申请无效的 AppID 和 AppSign,详情请参考 控制台 - 项目管理 中的“我的项目信息”。Uniapp根底美颜SDK应用步骤初始化根底美颜性能的环境若您须要应用根底美颜性能,则必须在 startPreview 开始预览、startPublishingStream 推流前,调用 startEffectsEnv 接口初始化美颜环境。 /** 1. 创立美颜环境 */await this.engine.startEffectsEnv();开关根底美颜性能的成果展现enableEffectsBeauty 接口和 setEffectsBeautyParam 接口的调用时序无先后之分。 初始化美颜环境后,您能够在推流前后,调用 enableEffectsBeauty 接口实时开启或敞开美颜成果。 /** 开关美颜成果 */await this.engine.enableEffectsBeauty(true);设置根底美颜成果参数初始化美颜环境后,您能够在推流前后,调用 setEffectsBeautyParam 接口实时设置美颜成果参数。 smoothIntensity:磨皮,在保留脸部细节的根底上进行磨皮,比方脸上的痣会保留。whitenIntensity:美白,对画面整体调高亮度来美白脸部。rosyIntensity:红润,对画面整体进行寒色解决。sharpenIntensity:锐化,对画面整体进行锐化解决,当画面有些含糊时能够略微调大锐化使轮廓清晰。以上四个参数的取值范畴都为 0 ~ 100,取值越大美颜水平越高,默认值为 50。 // 创立美颜参数对象let beautyParam = {};// 美白、红润、磨皮、锐化beautyParam.whitenIntensity = 50;beautyParam.rosyIntensity = 50;beautyParam.smoothIntensity = 50;beautyParam.sharpenIntensity = 50;/** 3. 设置美颜参数 */await this.engine.setEffectsBeautyParam(beautyParam);销毁根底美颜环境当调用 enableEffectsBeauty 接口设为 “false” 时,会敞开美颜成果,但美颜模块还是会占用资源并耗费性能。如果想彻底开释资源,节俭性能耗费,则须要在预览和推流前调用 stopEffectsEnv 接口销毁美颜环境。 ...

September 7, 2022 · 1 min · jiezi

关于视频:从技术全景到场景实战透析窄带高清的演进突破

随着5G时代的到来,互联网短视频、电影电视剧、电商直播、游戏直播、视频会议等音视频业务呈井喷式倒退。 作为通用云端转码平台,阿里云视频云的窄带高清须要解决海量、不同品质的视频。对于中高质量的视频,现有的窄带高清1.0就能提供称心的转码成果,并带来达30%的带宽老本升高;而对于有显著压缩失真和成像噪声的低质量视频,须要使用性能更好的窄带高清2.0进行去压缩失真、去噪和加强解决从而失去更好的观看体验。 在2022稀土开发者大会上,阿里云智能视频云技术专家周明才以《阿里云窄带高清的演进冲破与场景实战》为主题,深度分享阿里云视频云在窄带高清上的研发思考与实际。 01 窄带高清的源起谈及窄带高清之前,先来聊聊一般的云端转码流程。转码实质上是一个先解码再编码的过程。从下图能够看到,一般云端转码是在用户端先造成一个原始视频,通过编码之后以视频流的模式传到服务端,在服务端解码之后做转码,而后再编码通过CDN(内容散发网络)散发进来,此时一般转码次要的性能就是做视频格式的对立,并在肯定水平上降低码率。 窄带高清是什么?它与一般转码的次要区别是什么?通过窄带高清的字面意思能够了解,“窄带”是指让视频通过窄带高清转码之后,对带宽的需要变得更小。同时,“高清”是指通过转码后的画质依然可能放弃高清、丰盛的视觉体验。 上图的下半局部也就是窄带高清的流程,与一般转码流程不同点在于,在云端做了解码之后,窄带高清还会对视频品质做加强解决,以及利用编码信息来辅助晋升视频品质。通过品质晋升后,再用针对主观品质做过优化的编码器进行编码,最初进行散发。 总结来说,窄带高清实质上解决的是品质晋升和压缩的问题,其次要指标是谋求品质、码率和老本的最优平衡。阿里云早在2015年就曾经提出了窄带高清这一概念。在2016年正式推出窄带高清这一技术品牌并且进行了产品化。 往年,阿里云推出了窄带高清2.0极致修复生成版本。相较于先前版本,最大特点是能生成细节纹理做到极致修复。 窄带高清全景图窄带高清在做自适应参数决策时次要思考三个维度:业务场景、视频热度、视频内容。 因为业务场景的不同,比方电商直播、游戏直播、赛事直播,所须要的视频加强和编码参数不一样;对于一些高热内容,如:在手淘场景中能够用窄带高清2.0启动二次转码来实现品质的进一步晋升和码率的节俭;在视频内容维度,会针对以后的视频做一些High-level和 Low-level的剖析,High-level蕴含语义的剖析,特地是ROI的检测,Low-level包含视频压缩水平、含糊水平、噪声水平的视频品质剖析。 依据以上这些维度的剖析,能够失去自适应参数的决策后果。依据此后果,窄带高清再去做相应的视频修复和视频加强。具体来说,视频修复包含强压缩失真、降噪等,视频加强蕴含细节加强、色调加强、对比度加强等。 02 视频内容分析ROIROI的次要目标是在码率受限或码率统一的状况下,将码率尽可能调配到人眼更关注的区域,比方在电影电视剧中,观众会更多关注配角的脸。 基于ROI的解决和压缩,有以下两个难点:一是如何失去低成本的ROI算法,二是如何基于ROI进行码控决策,例如:保障ROI区域主观品质晋升的同时,非ROI区域的主观品质不会显著降落;同时做到时域间断、不闪动。 在低成本ROI计算方面,阿里云自研了自适应决策的人脸检测跟踪算法,这是一款低成本、高精度的算法。在极大局部工夫只须要做计算量极小的人脸跟踪,只有少部分工夫做人脸检测,从而在保障高精度的状况下,实现超低老本和疾速ROI获取。 从下图表格外面能够看到,阿里云自研算法相比开源人脸检测算法,精度和召回基本上没有损失,同时复杂度和计算耗时有显著数量级的降落。 在有了ROI算法之后,须要对场景、视频品质的自适应码率调配进行决策。针对此难题,次要思考与编码器联合,在主观和主观之间获得平衡,同时保障时域的统一。 JND传统视频压缩办法次要基于信息实践,从预测构造的角度减小时域冗余、空间冗余、统计冗余,但这对视觉冗余开掘是远远不够的。 在JND算法里,次要采纳了两个算法,一个是空域JND算法,一个是时域JND算法,拿到这些JND算法后,咱们再基于MOS的自适应码控算法,对QP做自适应的调配,最终实现在通用场景及主观状况下,码率能够节俭30%以上。 03 视频修复加强细节加强讲到视频修复加强,提及最多的就是细节加强局部,成果的确会比拟显著。 通常的细节加强基于UnSharp Mask的框架。阿里云视频云自研的细节加强算法,有以下三个特点:第一是有更精密的图像纹理细节提取形式,能提取不同尺寸,不同特色的图像纹理构造,加强成果更优;第二,算法能够通过对图像内容纹理构造剖析,依据区域纹理复杂度实现部分区域自适应加强;第三个特点是算法能够和与编码联合,依据编码器的编码信息反馈来自适应调整加强策略。 色调加强通常采集的视频素材,因为采集的设施或者光线亮度的起因,导致素材色彩可能看起来会比拟黯淡。特地是在短视频场景,这类视频会失去视觉吸引力,因而须要色调加强。 色调加强存在哪些难点问题?具体如何做色调加强? 像Ffmpeg外面有EQ filter,EQ filter会用UV通道去做色调加强。而在咱们的自研算法里,实际上是在RGB色彩空间去做加强,即会依据以后色彩点的饱和度,去做一些部分的自适应。同时,也会依据以后画面整体的状况,做一个整体的自适应。 在肤色爱护这块,因为传统的色调加强完之后,人脸区域会泛红,主观视觉上不天然。为了解决这一问题,咱们采纳了肤色爱护的办法,对肤色区域做一个额定的爱护。 这是一个色调加强前跟加强后的成果比照。能够看到加强后的绿色的蔬菜、肉,整个的色彩看着会更丰满,对于美食类视频来讲更可能激发起观众的食欲。 对比度加强在对比度加强中,应用了经典的CLAHE算法,其思路是对一个视频帧做分块,通常分成8x8个分块,在每一块统计直方图。而后统计直方图的时候,对直方图做一个Clip,就是所谓的对比度受限的直方图平衡,这次要是克服适度放大噪声的问题。基于CLAHE的视频对比度加强其实有一个难点,就是时域闪动问题。这在学术界也是一个较难的问题,到目前为止,还没有失去十分彻底的解决。 降噪降噪在ffmpeg外面有很多算法,比方像BM3D、BM4D、 NLM,这些算法的去噪成果好,然而复杂度十分高,会导致速度慢老本高,可能还须要配合噪声预计模块来一起应用。 另外还有一些绝对平衡的算法,速度比拟快,然而成果不强。如果想要晋升它的去噪强度,通常会引入一些伪影或细节失落的问题。 基于这些调研,咱们自研的降噪算法采纳基于多分辨率合成在下面做滤波框架。首先是对输出图像会做小波合成,失去高频跟低频信息。对于高频做软阈值解决。对于低频采纳双边滤波降噪。通过这种滤波或者软阈值之后,再从新合成回去,就能够达到去噪目标。算法的外围难点在于如何去做减速,使得老本和运算速度可能满足转码要求,尤其是实时转码场景,对速度要求是十分高的。 减速算法团队对于小波变换减速做了包含整形化很多的尝试,总是存在一些累积误差。所以咱们最初采纳了浮点型减速形式,用avx2浮点减速可能达到大略三倍的晋升。 另外是双边滤波这部分的减速,传统的双边滤波基于邻域像素的操作。这种基于邻域的操作其实十分慢的。因而,咱们采纳了RBF这个疾速算法,把二维的滤波分解成一维的,同时采纳递归的形式去从左到右,从右到左,从上到下,从下到上,这样的一维操作,就能够实现相似于原始双边滤波成果。通过采纳RBF这个疾速算法,咱们能够取得大略13倍的减速。此外咱们还做了这种AVX2汇编的优化,这块可能额定减速十倍左右。 上图是SDR+的整体效果图,在通过SDR+的解决之后,画面整体的对比度、亮度、清晰度会有很大的晋升,以上这些是针对视频加强做的一些工作。 CDEF去振铃首先是CDEF去振铃,CDEF自身是源自于AV 1的一个技术,在CDEF解决之前,强边缘左近会有很多的毛刺和振铃。通过CDEF解决之后,画面中的噪声失去很大的剔除。 CDEF算法的外围步骤,其实是一个平滑滤波的过程,只不过它的平滑滤波的权重、偏差都做了一些非凡的解决。特地是它的滤波权重,跟以后像素点所在的8x8像素区域的次要方向是有关系,也就是图中左下角这里展现的,它会去做一个最优方向的一个搜寻。搜寻完了之后,依据主方向来确定它的这个滤波器抽头的方向和权重。此外,CDEF有两局部的权重,一个是主方向的WP,另一个是辅助方向WS。而后对于邻域点和以后点的灰度偏差做截断,这能够防止过平滑。 去压缩失真除了用CDEF基于传统的图像处理算法做去振铃之外,还做了基于深度学习的去压缩失真的算法。这个算法是基于多帧的计划,更利于帧间连续性,不易呈现帧间闪动。“窄带高清”算法分成两大块:一个是品质检测模块,一个是去压缩模块。品质检测模块能够辨认不同品质视频源的压缩水平,而后输入QP MAP作为压缩强度掂量指标。另一个是去压缩模块,输出多帧视频和对应帧的QP MAP,利用QP MAP进行自适应去压缩。 极致修复生成极致修复生成次要是针对画质比拟差的场景,去除较强的压缩失真的同时,生成一些因压缩而失落的细节。在极致修复生成研发中,有以下几个要点:一是构建训练数据(在训练数据构建时,参照了Real-ESRGAN的二阶进化思路);二是对比拟敏感的人脸区域,保障人脸生成稳定性;三是做模型压缩时,使得模型计算量低的同时保持良好的成果;四是模型部署。 极致修复的场景实战在六月份NBA决赛直播时,百视TV心愿通过应用咱们的窄带高清2.0修复生成技术,来晋升他们赛事直播的品质。如两头这个截图所示,截图的上半局部是主播间接推过来的视频成果,下半局部是通过极致修复生成之后的成果。 能够看到修复之后,Youtube这几个字母边缘会更清晰、洁净,不再毛躁。其余篮球场景相干的,比方球员身后的数字及球员的身材轮廓,也会变得特地清晰。另外也有些生成成果,比方地板上有生成一些纹理,使整体的赛事观感大大晋升。 除了自研的算法,阿里云也有一些高校合作项目,字幕修复就是其中一个合作项目的成绩。能够看图中右下角理论修复字幕例子。该字幕取自一个老片MV,下面一行是原始MV里的字幕,能够看到“话”字的言字旁几条横笔画会有一些粘连,此外文字边缘还有很多的噪声。上面一行是通过字幕修复之后的成果,可能看到会变得很洁净、清晰。 ...

August 3, 2022 · 1 min · jiezi

关于视频:从云原生到智能化深度解读行业首个视频直播技术最佳实践图谱

在2022阿里云直播峰会上,多位直播产业畛域技术专家与行业先行者,独特探讨超视频化时代视频直播技术的演进趋势与将来倒退。会上,阿里云重磅公布了行业首个「视频直播技术最佳实际图谱」,将直播技术演绎总结为7点:云原生、高牢靠、低延时、超高清、智能化、专业性及多场景,本文将对「视频直播技术最佳实际图谱」进行深度解读。 视频直播的趋势就是极致升高延时,其蕴含传输延时和计算延时。 谈到延时,公众对于延时的了解次要集中在传输延时上,根据视频的延时,能够将视频分成点播、直播、连麦互动、实时互动等。 当传输的延时在3-10秒,这样的视频具备可播送的属性,如:体育赛事直播;当传输的延时在250-800毫秒之间,可进行沟通、互动,如:互动课堂连麦等;当传输的延时升高至50-80毫秒,此时视频便具备可操控性和沉迷感,如:云实时3D渲染、近程视频操控…… 除了传输延时,视频的编解码、高清化等技术的计算也会带来算力的延时。紧随直播的趋势,如何能将传输延时和计算延时一直升高,为更多直播场景带来技术撑持及设想空间? 阿里云的直播技术基于云原生的底座和分布式边缘节点,通过对传输协定的革新,交融实时媒体解决能力与边缘算力,可能大幅无效升高传输延时与计算延时,并通过寰球实时流媒体传输网络GRTN(Global Real-time Transport Network)、超低延时直播服务RTS(Real-time Streaming)、实时媒体解决能力、视频+AI等技术利用,实现低延时的最佳实际,实现老本与体验的最佳均衡,在带来泛滥通用直播解决方案的同时,也衍生出泛滥场景化解决方案。 本次峰会公布的行业首个「视频直播技术最佳实际图谱」,是通过阿里云多年的直播技术摸索与实际积淀而来的,演绎总结为7大点:云原生、高牢靠、低延时、超高清、智能化、专业性及多场景。 云原生视频技术就是云原生的最佳实际。阿里云所提倡的云原生次要有三点:“产品的服务化”,“随便的弹性”,“软硬一体、云边一体、云端一体”,而视频技术恰好就是云原生的最佳实际。 云的基础设施,包含核心节点、边缘节点、CDN网络是保障大规模散发和传输的根底;云原生的软硬一体,能反对CPU/GPU/FPGA/ASIC等多种软硬件异构计划;云与端的严密协同和算力调配,能实现云、挪动端、Web端、PC端渲染成果统一。 除此之外,云原生的工夫、空间、异构弹性,不仅能反对数十种业务混跑,云边端计算量化灵便调整,还能实现100+种实时传输、媒体解决、AI工作多机型异构混跑,给视频业务带来有限的算力的同时将资源充沛无效利用起来,大幅降低成本,衍生出更多新场景。 高牢靠热点视频有千万级的实时并发,高牢靠是最根本的要求。视频直播技术须要高牢靠,尤其是热点视频往往会带来百万、千万级的并发,此时高牢靠是最根本的要求。阿里云的视频技术高牢靠次要体现两方面,一是在架构上领有全链路日志/监测/报警/预测和高牢靠、多正本的秒级切换,能实现智能自动化运维和接入网络秒级信息排查,带来跨核心逃逸能力及容灾服务保障。 高牢靠的第二个方面,体现在对弱网体验的晋升。阿里云独有的QoS技术,能对带宽进行精准预测,大幅晋升带宽利用率和拥塞控制能力,同时联合编码器的弱网感知和抗丢包技术,能在70%的丢包状态下仍达到较高清晰度和流畅性。基于深度学习的智能语音丢包弥补,能晋升弱网状态下的音频清晰度,而麦上麦下提早敏感自适应技术,能在多场景下实现音频流畅性和通话提早的均衡。QoS技术能辨认和动静适配如:丢包、延时等多种网络场景,大大晋升终端用户对业务性能的音视频主观感触。 低延时GRTN打造最佳流媒体实际场景。延时指的是主播端的画面传递到用户屏幕所消耗的工夫,当排除网络、码流、设施性能的状况下,在不同的直播场景中选用适合的直播流协定,能大大降低直播的延时。回顾直播的历史,也是直播协定的历史,支流的协定有耳熟能详的HLS、DASH、RTMP等,延时广泛在5s以上,在强互动的需要下,直播协定也在一直向低延时转化,比方:SRT、LL-HLS等。 阿里云在低延时上的最佳实际,次要在两个方面。一是在网络层面,将传统的CDN内容散发网络革新成GRTN寰球实时传输网,其定位是基于核心云和边缘云的异构节点,构建超低延时、全分布式下沉的通信级流媒体传输网络。 GRTN目前交融了互联网直播和RTC等多种业务场景的音视频流传输和替换,并具备泛滥其余核心技术,如:GRTN构建的双向的实时信令网可能做到切网音讯的毫秒级传递,当有一个公布端的媒体流产生网络切换后,订阅的客户端对GRTN外部产生的切换行为是齐全无感知的。 二是在这“一张网”上,阿里云打造了超低延时直播服务RTS(Real-Time Streaming)。基于GRTN的短延时直播RTS能够反对规范H5 WebRTC推播,在千万级并发状况下延时能够管制在1s以内;RTC端到端延时能够管制在250ms左右。观看下方RTS和RTMP的直播协定的比照视频,能够发现在有肯定丢包率的状况下,RTS在体验、晦涩度和色调上都绝对RTMP有显著的劣势。 https://www.youku.com/video/X...RTS与RTMP提早比照视频 超高清老本与体验的最佳和谐,带来更沉迷、更极致的音视频体验。对于超高清在视频直播技术中的实际,阿里云自研的s265编码技术能实现高画质低码率,并反对4K实时编码;反对AV1编码,较HEVC节俭25%以上的码率。公众熟知的“窄带高清”技术,窄高1.0对多场景进行优化,通过RIO和JND智能编码节约码率,窄高2.0自适应视频降噪和内容修复,通过色调和纹理加强晋升人眼主观画质,带来体验和老本的最佳和谐。 与此同时,阿里云在直播技术上还对采集编码传输链路进行优化,全链路反对4K和8K。在工程上,通过各类算法对帧率、码率、分辨率、色调等各维度进行晋升,无论是老片、瑕疵、人像、还是动画场景,都能进行修复带来超高清的体验。除了在云端对视频进行解决,还能在端侧进行超分插帧、降噪、色调加强等,即便是非HDR的设施,通过色调加强SDR+技术,也能实现端侧统一的超高清体验。 端侧超高清比照 色调加强SDR+技术 智能化在超视频化时代,音视频的智能化是一大趋势。深度学习能带来各类AI能力的晋升,在视频实际上是最好的一个进口。在智能化方面,阿里云的视频直播技术,除了传统的智能配音、智能拆条、智能集锦,还能对音视频内容实时审核,针对黄反暴恐广告实现精准辨认,节俭了大量的人工甄别老本。 经过训练的虚拟人技术,反对3D头像、Live2D、风格化迁徙、虚构主播等,带来更多XR技术的演进。此外,“智能化”还体现在音频体验上,基于深度学习技术与传统信号处理有机联合的3A技术,能实现智能降噪、突出人声、无损音乐,并能够广泛应用于各类实时场景。智能语音超分技术,在小模型的状况下仍可放弃高音质,这些都是AI与视频联合带来的成果。 https://www.youku.com/video/X...“智能降噪”的多场景体验 专业性专业性,让直播逐步演变成“智播”。阿里云对于直播技术的专业性体现在多码率、多协定、内容爱护和实时制作上,直播逐步演变为“智播”。值得一提的是,在实时制作方面,阿里云将传统导播台云端再造,交融实时翻译、图文包装、动静标签、广告替换等导播创新能力,兼顾直播专业性与近程导播劣势。 同时,基于多路实时实景抠像,阿里云还曾将“虚构演播室”搬到冬奥现场。阿里云的“云导播”技术,不仅反对多种设施、多机位、异地开播,还可能实现双屏、分屏、画中画等开播场景,最大水平贴近直播需要。 https://www.youku.com/video/X...互动虚构演播室助力冬奥 阿里云在直播技术上的专业性联合“云导播”丰盛的节目制作模式、更低的老本,可能广泛应用到广电新媒体、赛事直播、流动直播、商业直播等场景中,帮忙客户突破业务瓶颈,更快更好地开展业务。 https://www.youku.com/video/X...《这!就是街舞》云导播+帧级别多视角同步 多场景“直播+”已成为一种趋势,渗透到各个场景。从场景来看,直播从最早的大型文体直播、电商直播、游戏直播逐步渗透到企业培训、在线教育、广电新媒体场景。阿里云将直播、点播、在线会议的各种算法能力都集成到同一个SDK外面,实现多场景交融的同时,一体化SDK还能按需打包实现灵便的自定义。从传统的SDK接入、API接入到“低代码直播样板间”,阿里云直播针对电商直播、在线教育、企业直播等提供一站式接入的场景计划,通过简略的三步对接和十几行代码,让客户轻松接入直播的体验,助力业务的倒退。 以后,直播业务已成为数字化社会服务的重要组成部分,越来越多的内容与产业转向“直播+”模式,直播技术倒退的将来图景随着市场需求变动更加清晰。 「视频直播技术最佳实际图谱」正是基于阿里云在直播技术上多年的摸索和最佳实际,从直播技术的外围,到直播的全场景笼罩,再到直播技术创新与利用,助力企业深度了解“直播”,突破技术壁垒,携手各行各业在万物互联的浪潮中一直更迭与前行。 「视频云技术」你最值得关注的音视频技术公众号,每周推送来自阿里云一线的实际技术文章,在这里与音视频畛域一流工程师交换切磋。公众号后盾回复【技术】可退出阿里云视频云产品技术交换群,和业内大咖一起探讨音视频技术,获取更多行业最新信息。    

July 20, 2022 · 1 min · jiezi

关于视频:百家号基于AE的视频渲染技术探索

作者 | 金展 导读:百家号作为百度为创作者打造的集创作、公布、变现于一体的内容创作平台,在图文、短视频方面曾经深耕多年,基于百度根底AI能力,通过视觉、语音、 NLP等技术将图文内容智能合成视频是目前次要的摸索方向,目前每天帮忙创作者制作数千条靠近于真人制作程度的视频。视频渲染合成作为内容视频化的最初一个制作环节,决定着视频内容品质、时效性等要害指标,本文将带你理解百家号视频渲染合成的技术实现,具体介绍AE在视频渲染方面的独特劣势。。 全文8634字,预计浏览工夫22分钟。 01 背景短视频作为近年来挪动互联网衰亡的重要内容模式,市场规模持续增长,依据2021年12月CNNIC的数据报告,短视频用户规模就已达9.34亿,占互联网用户的90.5%。如何高效智能地进行短视频合成来满足用户的视频内容生产,越来越成为内容创作者的一个挑战。百家号作为百度为创作者打造的集创作、公布、变现于一体的内容创作平台,在图文、短视频方面曾经深耕多年,如何基于百度根底AI能力,通过视觉、语音、 NLP等技术将图文内容智能合成视频是目前次要的摸索方向。 晚期,百家号是基于VidPress(https://ai.baidu.com/creativi...) ,通过五大步骤实现图文主动转视频;VidPress的工作原理和剪辑师制作视频的步骤相似:先筹备文字脚本,而后收集媒体素材,再将素材解决成视频片段,将脚本配音和视频进行对齐,最初进行编辑和查看。通过 AI 技术,VidPress 能够实现文字剖析和摘要、视频内容搜寻、素材智能化解决、音视频对齐,以及智能剪辑等5个步骤的自动化。这不仅保障了视频生成品质靠近于真人制作程度,同时也大幅晋升视频创作的效率。 基于该技术,百家号已服务数十家媒体,在热点资讯、媒体报道等多个畛域发展了屡次利用,每天帮忙创作者自动生产数千条视频内容。整体的业务性能如下: 而随着百家号的业务迭代,更多的个性化需要为智能合成视频带来了一些挑战,例如:度晓晓播报天气,在视频中增加虚拟人等,在实现了文字剖析和摘要提取、视频素材智能化解决、音视频合成之后,视频的出现成果是百家号业务要解决的外围问题之一,视频创作不仅须要AI的加持,同样离不开视频合成这个关键环节;视频渲染合成作为内容视频化的最初一个制作环节,决定着视频内容品质、时效性等要害指标。 所以,百家号从往年3月份开始致力于渲染局部的优化工作,本文咱们将重点聊聊视频渲染合成这个环节。 △度晓晓播报天气视频成果 02 为什么抉择AE谈到视频合成,咱们会想到 FFmpeg、OpenGL、Shader 这些根底库,以及建设在这些根底库之上的Adobe After Effects(简称 AE) 、UE4、Unity 3d等视频处理软件和渲染引擎。 FFmpeg 在视频解决方面性能非常弱小,被誉为多媒体畛域的瑞士军刀,在视频合成方面(https://ffmpeg.org/ffmpeg.html)和转场成果(一个例子:https://trac.ffmpeg.org/wiki/...) 方面都有着杰出的体现,FFmpeg 的命令比拟弱小,能够实现视频转码,视频拼接、图片合成、音频合成,也是咱们业务中视频合成的根底依赖之一。 例如:你只须要筹备 img01.png,img02.png两张尺寸雷同的图片,在装置FFmpeg当前,执行以下代码就能生成一个带有过渡成果的视频。 ffmpeg -loop 1 -t 5 -i img01.png -loop 1 -t 5 -i img02.png -filter_complex "[0][1]xfade=transition=fade:duration=1:offset=4,format=yuv420p" output.mp4OpenGL计划OpenGL是驰名的图形库,反对各种丰盛的图形动画,在转场动画方面也能实现十分酷炫的成果(https://gl-transitions.com/),而且是跨平台的。然而要定制个性化成果,有肯定的学习老本和开发成本。 AE 的视频合成设计师应用 Adobe After Effects(AE) 做好一个模板,开发者应用Adobe Extension Scripts(AES)脚本形式替换掉模板中占位的内容(包含视频、图片和文本),基于内容数据驱动和AE模板来创立视频。 过后在百度外部也有一些团队在应用这个计划,在咱们看来,基于AE合成视频,能以较低的研发老本晋升视频成果的丰盛度,保障视频合成的品质。在百家号目前业务场景,咱们感觉 AE 是一个值得抉择的计划之一,也是目前次要的渲染计划。基于 AE 作为视频渲染引擎有 3 大劣势,别离是丰盛的特效插件生态、弱小的脚本能力、设计师的成果无损还原。 2.1 丰盛的特效插件 AE 作为弱小的视频后期制作软件,AE的三大性能,视频合成、特效制作、图形动画,能帮忙创作者疾速实现一些多样化的视觉效果。从广告短片到网页动画再到电影特效,都有它的身影。AE 有着丰盛的插件生态,咱们来看一些简略例子: ...

July 12, 2022 · 3 min · jiezi

关于视频:浏览器下载视频

浏览器下载视频 function _download(url, name = "file") { var downUrl = url; var fileName = name; var xhr = xhr = new XMLHttpRequest() xhr.open('GET', downUrl, true); xhr.responseType = 'blob'; xhr.onload = function () { if (this.status === 200) { var type = xhr.getResponseHeader('Content-Type') var blob = new Blob([this.response], { type: type }) if (typeof window.navigator.msSaveBlob !== 'undefined') { window.navigator.msSaveBlob(blob, fileName) } else { var URL = window.URL || window.webkitURL var objectUrl = URL.createObjectURL(blob) if (fileName) { // 创立a标签用于跳转至下载链接 var a = document.createElement('a') if (typeof a.download === 'undefined') { window.location = objectUrl } else { a.href = objectUrl a.download = fileName document.body.appendChild(a) a.click() a.remove() } } else { window.location = objectUrl } URL.revokeObjectURL(objectUrl) } } } xhr.send();}

May 17, 2022 · 1 min · jiezi

关于视频:视频开播时长首帧检测方案

1、边缘检测从第1张图片开始剖析前后两张图片的类似度,类似度低于阀值的临界图片代表画面开始呈现切换动画,即为点击开始的工夫,此种办法实用于起始界面绝对静止的场景。而首帧呈现机会,能够通过边缘检测数值序列判断从含糊到不含糊来判断,仅实用于切换播放时有转场过渡画面。例如直播关上场景,缘检测数值序列从激烈变动值复原绝对安稳的值,认为首帧呈现。 2、特色元素的地位辨认播放转场,并无两头加载过程或页面切换,画面始终处于动静状态,此时基于边缘检测剖析计算出来的数据根本就不可信了,此时能够通过特色元素的地位辨认,失去变动曲线,也能够计算出变动起始工夫。 3、部分特色的梯度计算以后后画面都有动静播放,且无法控制被测视频的内容时,基于类似度剖析和基于特色元素地位辨认的计划都不能齐全解决误差,例如最常见的上下滑举荐场景,此时须要通过部分特色的剃度计算来辨认画面的首帧时长。

February 8, 2022 · 1 min · jiezi

关于视频:视搭-视频可视化搭建

TNTWeb - 全称腾讯新闻前端团队,组内小伙伴在 Web 前端、NodeJS 开发、UI 设计、挪动 APP 等大前端畛域都有所实际和积攒。 目前团队次要反对腾讯新闻各业务的前端开发,业务开发之余也积攒积淀了一些前端基础设施,赋能业务提效和产品翻新。 团队提倡开源共建,领有各种技术大牛,团队 Github 地址:https://github.com/tnfe 明天为大家介绍 shida, 我的项目地址: shida 介绍可视化搭建,听起来神秘又弱小。然而他又能够非常简单。 随着网络上短视频流量的持续增长,随着生产、生活习惯的扭转,便捷、活泼的视频化内容展示模式,胜利博得了用户的信赖,用户们对短视频的依赖水平也直线回升。视频可视化搭建平台的渗透力也越来越强。 视频可视化搭建工具, 是常见的经营工具, 能够让用户疾速编辑和生成视频, 晋升效率。但从零开始设计和开发出这种工具并不简略。 明天要介绍的《视搭》, 提供了视频可视化搭建的外围性能, 免去从零实现视频可视化搭建工具的艰难。 《视搭》是一个视频可视化搭建我的项目。您能够通过简略的拖拽形式疾速生产一个短视频,应用形式就像易企秀或百度 H5 等 h5 搭建工具一样的简略。目前行业内罕有对于视频可视化搭建的开源我的项目,《视搭》是一个绝对比拟残缺的开源我的项目,仅抛砖引玉心愿您喜爱。 《视搭》的后端视频合成局部是基于FFCreatorhttps://github.com/tnfe/FFCre...这个库开发的,FFCreator 是一个基于 node.js 的轻量、灵便的短视频加工库。您只须要增加几张图片或视频片段再加一段背景音乐,就能够疾速生成一个很酷的视频短片。 《视搭》前端局部 fork 自quark-h5我的项目开发,本我的项目未做太多扩大。quark-h5 是一个很棒的 h5 搭建开源工具,架构正当、代码比拟清晰易读,感激作者。 我的项目预览: 工程目录|-- client --------前端我的项目界面代码 |--common --------前端界面对应动态资源 |--components --------组件 |--config --------配置文件 |--eventBus --------eventBus |--filter --------过滤器 |--mixins --------混入 |--pages --------页面 |--router --------路由配置 |--store --------vuex状态治理 |--service --------axios封装 |--App.vue --------App |--main.js --------入口文件 |--permission.js --------权限管制|-- server --------服务器端我的项目代码 |--confog --------配置文件 |--controller --------数据库链接相干 |--extend --------框架扩大 |--model -------Schema和Model |--middleware --------中间件 |--core --------Koa MVC实现主动加载外围文件 |--views --------ejs页面模板 |--public --------动态资源 |--router.js --------路由 |--app.js --------服务端入口|-- common --------前后端专用代码模块(如加解密)|-- engine-template --------页面模板引擎,应用webpack打包成js提供页面援用|-- config.json --------配置文件编辑器整体设计一个组件抉择区,提供使用者抉择须要的组件一个编辑预览画板,提供使用者拖拽排序页面预览的性能一个组件属性编辑,提供给使用者编辑组件外部 props、公共款式和动画的性能用户在左侧组件区域抉择组件增加到页面上,编辑区域通过动静组件个性渲染出每个元素组件。视频合成外围基于FFCreatorhttps://github.com/tnfe/FFCre...,只须要很少的依赖和较低的机器配置就能够疾速开始工作开发调试启动 mongodb装置 mongodb:https://zhuanlan.zhihu.com/p/...配置 mongodb:配置文件在/server/config/index.js启动 mongodb:https://www.cnblogs.com/zhm19...装置依赖npm i启动前端并开启 watch 模式此模式下会开启热更新 ...

January 27, 2022 · 1 min · jiezi

关于视频:视频加密软件选择你都怎么选

想要给本人的视频课程加密的时候,咱们应该如何去抉择适宜本人的加密计划呢?现在,市面上的加密软件流行,防破解、防录屏也是成为了视频加密用户最为关怀的话题,同时也是一场技术上的较量,须要长时间的经验和工夫去做。市场上也有一些收费的视频加密软件,然而收费的会有质量保证吗?因而咱们在抉择视频加密软件计划时更应该抉择一家齐全牢靠又有肯定技术实力的公司来做。在抉择时咱们能够依据本身的理论状况和想要的软件需要来看,因为适宜本人才是最重要的。 首先能够看下视频加密软件须要具备的几项性能: 安全性强 对视频采纳逐帧加密,并且不会扭转视频的格局2.后盾管制权限 后盾能够操控视频播放的工夫、次数,并且在产生一些非凡状况时随时能够召回 3.跨平台播放 可能反对多平台播放,如安卓、iOS、Mac、Windows,保障观看者的体验 4.方便快捷 只需装置专用的播放器,激活后就能稳固播放 5.主动绑定设施激活观看视频主动绑定设施,分享流传无奈观看 6、导入视频不便 反对WiFi导入,文件夹导入,下载后也能够间接选用点盾云的形式间接关上。 7、后盾管理系统提供后盾管理系统,能够不便地保护学生信息和课程信息。 依据以上的性能来看,点量软件的视频加密是从以下方面来体现的: 反对支流视频格式,如MP4、FLV、F4V等视频加密一次即可在手机端和电脑端播放,反对安卓、iOS、Windows、Mac。只需装置专门的播放器即可播放,无需装置其余利用基于关键帧加密技术,加密前后的文件变动只减少几十个字节,根本保持一致大小,不减少网络传输压力。不同用户有不同的加密密钥,一机一码,激活后即便分享也不能观看,只能在激活的设施上观看。多种计划可选,反对在线视频加密观看、离线加密视频观看、网站视频加密、SDK加密计划等从多方面满足所有客户的不同加密需要。

January 22, 2022 · 1 min · jiezi

关于视频:短视频如何有效去重vivo-短视频分享去重实践

✏️ 编者按:对于短视频产品而言,晋升视频去重性能、升高误杀率,是晋升用户体验的必要环节。在此次 Milvus 社区发动的「Milvus 实战系列直播」中,咱们有幸邀请到了 vivo 互联网服务器开发工程师马运杰,与大家分享开源向量数据库 Milvus 在 vivo 视频中的实际。 嘉宾简介: 马运杰,vivo 短视频后端架构师,负责 vivo 短视频服务端以及视频解决平台的零碎架构设计,毕业于南京邮电大学,热衷新技术预研与难点攻坚。 业务背景为什么要视频去重? 对于观众来说,良好的观看体验与视频内容有着很大的关系。以后,全网范畴内次要精品视频次要来自于 MCN 机构,一些公司为了更快更好地去笼罩全网内容,会抉择和内容代理单干,而代理手上会有很多反复的版权内容,导致反复内容呈现。另外,搬运类视频也会产生反复内容。如果将反复的内容间接分发给用户,就会造成极差的用户体验,堪称「劝退」。所以,内容进行去重解决是十分有必要的。 目前,视频去重面临哪些痛点? 目前,根底样本数据已达到大几千万,在不久的未来会过亿。目前的难点是,在亿级样本数据的根底上反对百万级别的吞吐量,同时须要兼顾去重的精度以及高召回率。接下来,我将为大家介绍咱们是如何应答这几个问题的。 算法流程设计首先,进行视频特征提取,对视频进行抽帧。视频抽帧有多种策略,能够依照固定的工夫距离抽帧,或者抽取视频所有的关键帧等。咱们首先对视频进行场景检测,优先抽取出场景切换中具备代表性的一些关键帧,而后利用图像算法提取关键帧的部分特色,之后再把这些部分特色去合并失去全局特色。全局特色是几千维的浮点型的向量,最初咱们还会再进行一层哈希压缩,这层哈希压缩其实压缩了很多的数字量,然而也会给咱们带来一些问题,后续会提到。除了视频特色之外,咱们还会提取视频的音频指纹,作为比对的重要依据。 特征提取后,咱们进行特色匹配。将历史提取的视频特色放在向量数据库 Milvus 中,通过 Milvus 数据库召回 topK 的向量,而后通过肯定的策略进行过滤合并,失去类似的视频的候选集,通过粗疏的音频指纹的比对,根本能够失去类似视频的汇合。最初,依据业务上的其余特色,如时长、题目等等特色的残缺比对,最终造成类似视频汇合。 辨认成果须要同时兼顾召回和精度这两个方面。在视频召回的时候,咱们会适当放宽整个限度,尽可能多地召回类似视频;而在音频比对当中,咱们会更严格地进行筛选。这种策略有肯定缺点,比方短视频罕用的“拍同款”性能中,拍进去的音频十分相似,比对后果可能不是很好。整体来看的话,这样的策略还是能达到 90% 以上的精度和召回率指标。 去重零碎设计整体零碎架构如上图,分为三个服务、四个步骤。第一个局部是特征提取,次要是负责视音频特色的提取以及特色文件的治理,其中还包含了视频的镜头检测以及抽帧。第二个局部是去重策略,次要包含了业务上的逻辑以及去重的策略管制。第三个局部是特色召回局部,次要是作为 Milvus 数据库的客户端代理工作,工作内容次要是负责创立汇合以及索引。第四个局部则是基于 Milvus 数据库搭建的检索集群,外面分为主集群和备集群。 在进行零碎的具体介绍之前,咱们先来看一组压测后果。从后果中能够看到,第一列向量数量、第三列向量维度和最终的 TPS 呈负线性相关。向量数量、向量维度和索引参数,是影响 TPS 的次要因素,也是咱们前面去晋升这个性能的次要方向。 咱们所做的第一个工作是集群化部署。 从压测数据能够看出,单实例只能反对几百万的向量检索,也就是几十万的视频样本。尽管这种单机部署也会有它的一些劣势,比如说部署起来非常简单,使用方便等等。然而对于全局去重的业务不适合的。咱们抉择应用 Mishards 插件来搭建分布式集群,通过一直地退出 Milvus 实例,来分担每个实例的查问数量,晋升整个集群的吞吐量。Milvus 数据库外部解决申请的时候其实都是单线程的,如果要晋升整个零碎的并发能力,能够思考左边这样多集群部署形式,晋升咱们整体的吞吐量。 除了集群化部署之外,创立索引也是晋升性能的次要形式。上图右边示意精度,左边示意性能。能够看到,在增加索引之后会导致一些召回率上的损失,nlist 越小,损失越大,所以咱们天然想把 nlist 设置得大一些。然而,Milvus 对二值型向量的反对比拟弱,在构建索引的时候没有充分利用 CPU 资源,构建工夫十分长。比方,nlist 等于 1024 的时候,索引构建工夫曾经达到一个小时左右。咱们就只能斗争地升高 nlist 的大小,给咱们带来了召回率上的一些损失。 此外,构建索引期间集群外面的数据无奈失常写入的,只有期待整个索引构建实现之后后,才可能失常插入申请,这也是为什么咱们须要 Milvus 备级群。咱们把向量的读写分为三个状态:失常状态(对主集群进行读写)、索引构建时的状态(不能写入主集群,应用备集群,而后同时查问主集群及备集群)索引构建完结状态(主集群曾经能够失常读写,须要把备用集群的数据迁徙回主集群,迁徙实现后,这个状态也就从新变成了失常的状态)。通过这样主备切换,咱们解决了索引构建期间无奈失常写数据的问题。 整个集群的样本数据量越来越大,集群的吞吐量会随着工夫的迁徙而变小。为了管制整个集群的吞吐量,咱们抉择通过业务上的一些规定进行了分支。比方,咱们发现两个雷同或者类似的视频,咱们会是依据视频的公布工夫以周为单位去进行分区。在召回的时候,抉择该视频所在分区相近的几个分区进行查问。通过这样一种形式,咱们对整个比对的数量进行了严格控制,从而保障了检索效率。以上就是咱们基于 Milvus 数据库所做的零碎设计和性能优化。 ...

December 27, 2021 · 1 min · jiezi

关于视频:实时音频抗弱网技术揭秘

本文由百度智能云-视频云技术架构师——柯于刚 在百度开发者沙龙线上分享的演讲内容整顿而成。内容从抗弱网技术意义登程,梳理抗弱网的概念与办法,联合百度RTC抗弱网过程中遇到的问题,重点分享抗弱网技术优化的摸索与实际。心愿本次分享可能让开发者反抗弱网技术有一个全面的意识并把握肯定的webRTC优化办法文/ 柯于刚整顿/ 百度开发者核心视频回放:https://developer.baidu.com/l... 本次分享的主题是:实时音频抗弱网技术揭秘,内容次要分为以下三个方面: RTC抗弱网技术的意义RTC抗弱网技术解析百度RTC抗弱网实际与摸索 1.抗弱网技术的意义在开发过程中,直播、点播 CDN 等云服务往往会通过从「能用」、「好用」到「大规模应用」等阶段。相似地,RTC 正处于从「能用」走向「好用」的过程中。咱们须要晋升用户的视频参观体验,实现标准化的服务,而抗弱网技术是一个关键性的步骤。另一方面,不同于RTMP、RTSP 等「尽力而为」的网络协议,它们只解决网络问题;RTC 是一个面向视频交付的协定,联动传输和编解码,造成牢靠的视频交付。因而,抗弱网技术是实现全场景交付的撑持性技术。 2.RTC抗弱网技术解析2.1 抗弱网波及的环节和罕用伎俩2.1.1抗弱网波及的环节最典型的RTC系统结构通常包含两个局部:平台侧和终端。而平台侧通常又分以下两局部: 用户端接入, 包含信令和媒体。服务间流的直达和管制,包含媒体散发、调度。 2.1.2 RTC抗弱网的技术手段抗弱网的技术手段能够演绎为2个层面,蕴含4个办法。「2个层面」即网络层面和音视频层面。「4个办法」包含:(1)自适应办法。自适应地对网络的带宽进行评估、正当应用带宽,并依据带宽自适应地调整码率。(2)纠错办法。针对丢包、丢帧等状况,通过前向纠错,在网络数据包、视频、音频层面上进行纠错。(3)缓存办法。针对网络抖动、设施不稳固、设施性能无限等问题,设置视频、音频的缓存区。(4)调度办法。尽可能地将用户调度到最好的接入点,或在服务器侧进行直达,实现最优的内容散发调度,从而解决低延时和稳定性问题。 2.2 WebRTC抗弱网技术简介WebRTC 提供了蕴含一系列组件的低延时框架,次要环节包含:编码、发送、接管和解码。绝大部分自研零碎的架构也与此相似,但会在具体实现过程中对算法做相应的调整。编码环节:就发送方而言,咱们须要依据其网络状况自适应地采纳适合的码率;就接管方而言,咱们会通过 Simulcast、SVC 等编码伎俩依据网络状况自适应地抉择接管办法。此外,咱们还能够通过动静 Gop 依据场景控制传输压力。发送环节:首先进行带宽预计和调配。如果产生了数据谬误,咱们会进行 RTX 重传,或采取 FEC 等伎俩。此外,咱们还能够采纳 PACING实现网络的平滑发送,并确定数据带宽应用和发送的优先级。承受环节:须要与发送方就带宽的预计、重传等操作进行配合。咱们能够通过 NACK 申请发送方从新发送数据包,或者通过 RTCP 的反馈批示接管方理论的承受状况,也能够通过动静视频、音频缓存适应网络的抖动。解码环节:须要解决谬误暗藏问题,在数据出错之后尽可能晋升用户体验。此外,咱们还须要针对不平衡、不稳固的网络实现稳固的继续输入。之前的流媒体协定次要作用在网络层面,没有实现网络和编解码环节的联动,而WebRTC 能够大大晋升对弱网的适应性。 2.3 抗弱网技术总览进一步演绎,抗弱网技术次要须要解决丢包、延时、乱序抖动、限速、网络品质渐变等状况。咱们会在带宽评估、带宽调配、带宽应用、缓存、解码渲染等环节上解决上述问题。在进行带宽预计时,咱们能够采纳基于丢包、基于时延、基于 ACK 带宽的办法,也能够通透与探测实现带宽预计;在进行带宽调配时,咱们能够通过网络状况动静地调配视频、音频的编码码率,实现 FEC 前向纠错和互相纠错重传的带宽预调配。在带宽应用方面,对于纠错后调配的带宽,咱们须要通过 Nack、Sack、FEC 等数据重传,或通过 Pacing 等技术确定数据的优先级,晋升发送的均衡性;就缓存技术而言,WebRTC 中提供了面向视频的 JitterBuff 和面向音频的 NetEQ,从而适应网络的抖动、修补数据的完好、将网络数据包转换成音频帧或视频帧。 2.4 关键技术解析2.4.1 带宽评估——TCC根本了解TCC 是一种带宽评估技术,其输出为接管情况的反馈,该数据会输出给带宽预计的三个控制点:丢包预计、延时预计、确认带宽预计。丢包预计:依据丢包率的大小,在上次评估的带宽根底上,判断是减少带宽还是升高带宽。延时预计:采纳 Aimd 调节实现「和」式的带宽减少,以及乘法级的带宽升高。具体实现形式:别离计算再发送端和接收端,间断两个包之间的差值之差,拟合线性回归函数,依据斜率断定网络是拥塞、轻载、稳固,再确定如何调节带宽,带宽基值依赖于接受方反馈带宽估值,调节形式按照和增乘减形式。确认带宽预计:基于FeedBack接管统计丢包率,采纳贝叶斯评估接管方到码率,该值作为延时预计的带宽基值。咱们对丢包预计得出的带宽值和由 Aimd 解决后的时延预计后果取最小值,从而失去最终的带宽评估后果。值得一提的是,确认带宽预计提供带宽须要调节的基准值,而丢包预计和时延预计则提供调节动向。 2.4.2 TCC的优缺点TCC技术的设计长处包含: 采纳「丢包+延时」网络拥塞检测办法,实现了边界性的爱护。面向视频利用,思考未充沛应用的带宽、利用已确认的带宽,并探测预计出的带宽是否无效。TCC 技术的不足之处在于:所有预计强烈依赖反馈,接收端会影响发送端。发送方的丢包、延时拥塞预计都基于统计实现,反映灵敏度低。未笼罩高抖动等场景。 2.4.3 带宽调配带宽调配最典型的利用场景是对视频和音频的带宽调配。就音频而言,其带宽次要蕴含音频的原始码率以及为重传、纠错预留的带宽。大部分的带宽将调配给视频,视频的带宽分为三局部:(1)视频原始码率(2)前向纠错的 FEC带宽(3)视频的 Nack 所须要的带宽。须要指出的是,Nack 的带宽不是预调配失去的,而是依据之前的网络状况统计得出。在具体实现中,咱们会采取一些保护措施,例如:要求视频 FEC 的码率加上理论重传的码率小于等于最终调配给视频的带宽的一半。在这种设置下,WebRTC 的抗丢包率约为20-30%,咱们能够依据理论的丢包、延时状况扭转 nack+fec 的带宽分配比例,从而晋升抗丢包率。 ...

October 11, 2021 · 1 min · jiezi

关于视频:云智一体全场景智能视频技术与应用解析白皮书下载申请

云计算和 AI 的倒退为智能视频的到来注入短缺能源。百度智能视频云3.0充沛交融端、边、云、智的能力,提供云智一体、端到端、全场景的智能视频平台解决方案,从技术一体化、服务平台化、利用场景化,全面赋能视频生产、解决、治理、散发、生产等全流程,深刻产业智能化。 "云智一体"全场景智能视频技术与利用解析白皮书是业内为数不多专一于全场景智能视频技术与利用的解读白皮书。该白皮书源于百度智能云重磅打造的“云智技术论坛”系列流动第二期"云智一体的全场景智能视频前沿技术",深度解析了视频进入云计算和人工智能之后面临的挑战,详述了具备“云智一体”独特劣势的百度智能云,如何通过端边云一体化的智能视频云架构3.0,满足内容高清化、体验沉迷化、剖析智能化的视频利用与体验新需要,并介绍了云智一体的视频技术在泛媒体、泛互联网及泛产业等三大行业利用场景中的作用与价值。立刻下载 那么,如何充分利用最前沿的智能视频技术,为用户提供更好的利用、体验和效力的降级? 9月15日-29日,百度开发者核心请到百度智能视频云的几位技术架构师,为大家直播解析百度智能视频云3.0 五大外围能力:智感超清、终端引擎优化、实时音视频通信、低延时直播、视频散发减速 CDN, 以及低延时、编解码、WebRTC等技术的最新动向。 直播预约 | 百度智能视频云3.0全场景音视频技术解析

September 10, 2021 · 1 min · jiezi

关于视频:B站视频下载器推荐亲测有效

你还在为怎么下载B站视频而困扰吗?给你举荐一个简略好用的B站视频下载器-4K Video Downloader,它能够疾速帮你将喜爱的B站视频下载到本地离线观看。 如何用4K Video Downloader下载B站视频? 第一步:首先返回哔哩哔哩网站找到喜爱的视频,而后复制其链接地址  第二步:而后下载安装4K Video Downloader软件,并运行它,接着将B站链接粘贴到程序里解析  第三步:4K Video Downloader软件会主动开始下载B站视频,你能够看到每个视频的进度条  第四步:期待B站视频下载实现,点击旁边的播放按钮即可离线观看。   以上就是怎么下载B站视频的具体操作步骤,学会了吗?连忙下载4K Video Downloader软件试一下吧! 文章分类

August 17, 2021 · 1 min · jiezi

关于视频:唐桥云会议分组讨论新的参会互动方式

课堂教学须要分组讨论,但线上教学时却无从下手?校园招聘转阵线上,但群面分组环节难以落地?唐桥云会议分组讨论性能曾经上线!仅需3步,轻松上手。 一、什么是唐桥云会议分组讨论?主持人在会议中可将参会用户随机或者按需分成若干个小组,进行小组讨论,探讨完结后能够从新回到主会议室持续散会。 每个小组内探讨的任何信息仅小组可见,如聊天、视频内容、录制信息、表情等,任何小组外成员均不可见;主持人能够自在进出每个小组,参加小组讨论。主持人能够插播整体播送,管制探讨进度和内容。规定工夫后或者主持人一键即可完结分组讨论。二、分组讨论适宜用在哪里?场景1.教育培训:老师提出特定问题,学生针对问题进行分组讨论;场景2.招聘面试:多人面试中,面试官出题,将面试者进行分组讨论,而后返场分享各自观点;场景3.我的项目竞标:各竞标团队小组讨论内部结构,并返场陈说本人的观点。场景4.答辩竞猜:针对某一问题/工作进行限时分组答辩竞猜,并返场陈诉观点场景5.线上会展:按需将参会者与赞助商/供应商分组讨论,进一步商务洽谈··· ··· 三、如何开启一场分组讨论第一步. 创立讨论组进入会议后,主持人点击下方【分组讨论】即可创立讨论组。 (2)调配讨论组人员的二种形式依据会议须要,主持人可抉择讨论组个数,通过随机分组、手动分组2种形式调配讨论组。 形式一,点击【随机分组】,参会者将被随机安顿进不同的讨论组;形式二,点击【手动分组】,主持人可依据会议需要安顿参会者进入所需的讨论组; 第二步. 编辑讨论组创立讨论组后,主持人能够依据须要对讨论组进行进一步编辑。 (1)批改名称鼠标移至讨论组名称一栏,点击【重命名】进行编辑即可。(2)新增/删除讨论组• 点击【新增讨论组】即可增加新的讨论组;• 鼠标移至讨论组名称一栏,点击红色【删除】即可删除讨论组。(3)探讨组成员治理• 调配成员:鼠标移至讨论组名称一栏,点击【调配】,即可抉择探讨组成员;• 挪动成员:可抉择对应成员,将其挪动至别的组。• 替换成员:可抉择对应成员,按需与其余讨论组的成员进行替换 第三步. 开始探讨开始探讨后,组内探讨的任何信息仅小组可见,如聊天、视频会议、录制、表情等,任何小组外成员均不可见。(1)主持人退出讨论组 如果有须要邀请主持人退出讨论组,可将鼠标挪动至申请帮忙,点击【邀请主持人】即可 主持人如有须要,可鼠标移至讨论组名称一栏,点击【退出】即可退出该小组。(2)主持人发送整体音讯如需对整体参会成员发送音讯,主持人点击【播放一条群音讯】,键入告诉内容后,点击【启动播送】即可。 (3)参会者可发送申请给主持人参会者如需帮忙,点击【申请帮忙】即可邀请主持人进小组,主持人收到邀请后可进行解决。 参会者视角页面 主持人视角页面 (4)完结讨论组主持人点击【分组讨论完结】,即可完结分组讨论,所有成员将回到主会场。 当初,降级到唐桥云会议v6.2.7版本即可应用分组讨论性能下载传送门:https://meeting.techbridge-in...

August 11, 2021 · 1 min · jiezi

关于视频:使用-VideoToolbox-探索低延迟视频编码-WWDC-演讲实录

本文依据 Peikang 在 WWDC 2021 分享翻译,演讲者 Peikang,来自 Video Coding 和 Processing 团队。译者陶金亮,网易云信资深音视频开发工程师,领有多年端侧音视频工作教训。 反对低提早编码已成为视频利用程序开发过程的一个重要方面,在低提早直播和 RTC 畛域有着宽泛的利用。本分享次要分享了 VideoToolbox(一个低级框架,提供对硬件编码器和解码器的间接拜访, 它提供视频压缩和解压缩服务,以及存储在 CoreVideo 像素缓冲区中的光栅图像格式之间的转换)是如何反对低提早 H.264 硬件编码,以最大限度地缩小端到端提早并实现新的性能程度,最终实现最佳实时通信和高质量视频播放。 分享实录视频:https://developer.apple.com/videos/play/wwdc2021/10158 低提早编码对于许多视频利用十分重要,尤其是实时视频通信利用。在本次演讲中,我将在 VideoToolbox 中介绍一种新的编码模式,以实现低提早编码。这种新模式的指标是针对是实时视频通信利用优化现有的编码器流水线。那么实时视频通信利用须要什么?咱们须要最大限度地缩小通信中的端到端提早。 咱们冀望通过让视频应用程序与更多设施进行通信来加强互操作性。例如:当呼叫中有多个接收者时,编码器管道也应该是高效的,并且,该应用程序须要以最佳视觉品质来出现视频。那么,咱们须要一种牢靠的机制来从网络失落引入的谬误中复原通信。 我明天要讲的低提早视频编码将在这些方面进行优化。应用低提早编码模式,咱们的实时应用程序能够达到新的性能程度。在本次演讲中,我将首先概述低提早视频编码。咱们能够对如何在管道中实现低提早有根本的理解。而后我将展现如何应用 VTCompressionSession API 来构建管道并应用低提早模式进行编码。最初,我将探讨咱们在低提早模式下引入的多个性能。 低提早视频编码 首先让我概述一下低提早视频编码。这是 Apple 平台上视频编码器管道的简图。 VideoToolbox 将 CVImagebuffer 作为输出图像,它要求视频编码器执行 H.264 等压缩算法以缩小原始数据的大小。输入的压缩数据封装在 CMSampleBuffer 中,能够通过网络传输进行视频通信。从上图中咱们能够留神到,端到端提早可能受两个因素影响:解决工夫和网络传输工夫。 为了最大限度地缩小解决工夫,低提早模式打消了帧从新排序,遵循一进一出的编码模式。此外,该低提早编码模式下的速率控制器对网络变动的适应速度也更快,因而也能够最大限度缩小网络拥塞造成的提早。通过这两个优化,咱们曾经能够看到与默认模式相比,曾经有了显著的性能晋升。对于 720p 30fps 的视频,低提早编码能够缩小高达 100 毫秒的提早。这种节俭对于视频会议至关重要。 通过这样的操作实现了缩小提早,咱们能够为视频会议和直播等实时通信实现更高效的编码管道。 此外,低提早模式始终应用硬件加速视频编码器以节俭电量。请留神,此模式反对的视频编解码器类型为 H.264,咱们将在 iOS 和 macOS 上引入此性能。 在 VideoToolbox 中应用低提早模式接下来,我想谈谈如何在 VideoToolbox 中应用低提早模式。我将首先回顾 VTCompressionSession 的应用,而后向您展现启用低提早编码所需的步骤。 VTCompressionSession 的应用当咱们应用 VTCompressionSession 时,首先要应用 VTCompressionSessionCreate API 创立会话。并通过 VTSessionSetProperty API 配置会话,例如指标比特率。如果未提供配置,编码器将以默认行为运行。 ...

June 23, 2021 · 2 min · jiezi

关于视频:在线网页视频下载实用教程

怎么下载网页上的视频?大家都晓得,网页上的视频是不能间接下载的,那咱们看到喜爱的视频想要保留下来怎么办?很多人的第一反馈是录屏,然而录屏不仅会毁坏视频的原始品质,而且十分浪费时间,明天来给大家分享一个简略的网页视频下载办法: 第一步:返回网站下载这款网页视频下载器到你的PC或者Mac电脑上 第二步:关上在线网站,找到你想要下载的视频,而后复制其链接地址 第三步:关上网页视频下载器,将复制的视频链接粘贴到程序里进行解析 第四步:这时软件会主动开始下载网页视频,你能够清晰地看到进度条 第五步:期待网页视频下载实现,点击旁边的按钮即可播放或者分享给好友 以上就是网页视频下载办法和具体操作步骤了,你学会了吗?连忙下载4K Video Downloader (网页视频下载器)试下吧!

June 9, 2021 · 1 min · jiezi

关于视频:油管视频下载-如何下载油管视频到本地

油管视频怎么下载?油管是国外驰名的视频共享网站,相似于国内的B站和西瓜视频,外面有很多乏味精彩的视频,然而只能在线观看,无奈间接缓存,怎么下载油管视频始终是大家比拟关注的话题,明天小编就来分享一下具体的操作的办法,喜爱的同学记得点赞珍藏! 如何下载油管视频到本地第一步: 下载安装这款油管视频下载器到你的电脑上而后运行它。 第二步:返回油管网站,找到你喜爱的视频而后点击复制其链接地址。 第三步:关上油管视频下载器,将视频链接粘贴到程序里进行解析。 第四步:接着从弹出的窗口中抉择你想要的分辨率,而后点击下载按钮。 第五步:这时软件会主动开始下载油管视频,你能够间接看到进度条。 第六步:期待油管视频下载实现,点击视频旁边的播放按钮即可离线观看。 以上就是如何下载油管视频的具体方法和操作步骤,你学会了吗?连忙试一下吧!应用这款油管视频下载器,你不仅能够下载油管视频,还能够下载推特,脸书,INS,哔哩哔哩等其余网站上的视频。

June 1, 2021 · 1 min · jiezi

关于视频:国内外主流网站视频下载教程-建议收藏

目录教程B站视频下载https://www.4kvideodownloader.com/tutorial/download-bilibili-videos/腾讯视频下载https://jingyan.baidu.com/article/3a2f7c2ec1b5fd26afd61100.html爱奇艺视频下载https://jingyan.baidu.com/article/f71d6037d5dfd91ab641d1e2.html西瓜视频下载https://jingyan.baidu.com/article/76a7e40925afb5fc3b6e1503.html优酷视频下载http://www.leawo.cn/space-627-do-thread-id-33076.html油管视频下载https://www.4kvideodownloader.com/tutorial/download-youtube-videos/推特视频下载https://www.4kvideodownloader.com/tutorial/twitter-video-download/脸书视频下载https://www.4kvideodownloader.com/tutorial/download-facebook-videos/INS视频下载https://www.4kvideodownloader.com/tutorial/download-instagram-videos/抖音视频下载https://www.4kvideodownloader.com/tutorial/download-tiktok-videos/

May 11, 2021 · 1 min · jiezi

关于视频:B站视频下载如何下载B站视频到本地

B站视频怎么下载?哔哩哔哩网站上有很多乏味的动画、番剧、国创、音乐、舞蹈、游戏、常识、娱乐、生存、鬼畜视频,然而B站自身不提供视频下载性能,这对于想要将喜爱的视频保留下来离线观看或者分享到其余平台的同学来说十分不不便,因而怎么下载B站视频始终是大家比拟关注的话题。明天在这里,小编来分享一个无效的B站视频下载办法,心愿对大家有所帮忙。 第一步:返回4K Video Downloader网站下载安装这款哔哩哔哩视频下载器。 第二步:返回B站,找到你喜爱的视频,播放它,而后复制地址栏中的URL。 第三步:关上4K Video Downloader软件,将方才复制的链接粘贴到程序里进行解析。 第四步:抉择下载音视频或者将视频转换成MP3, 而后点击下载按钮,软件会主动开始运行。 第五步:期待B站视频下载完,关上已实现界面,点击视频旁边对应的按钮即可播放。 以上就是下载B站视频的五个简要步骤,你学会了吗?连忙下载4K Video Downloader试一下吧!应用这款弱小的视频下载器,你不仅能够下载哔哩哔哩网站上的视频,还能够下载油管,脸书,推特,INS, TED, 抖音等网站的视频。此外,它还反对将B站视频转换成MP3, MP4, MOV, MKV, AVI等格局。 英文请参考:3 Methods to Download Videos from Bilibili

April 30, 2021 · 1 min · jiezi

关于视频:华为云薛浩走进视频新时代

摘要:随着社会倒退,视频产业的倒退也在迅速放慢。视频“新时代”带来了新的时机、也有新的挑战。华为云在面对视频“新时代”的想法、投入及对产业界的认识有哪些?大家上午好,我是来自华为云的薛浩,在华为云负责视频、会议以及IoT等相干产品。明天非常高兴有机会和大家分享华为云在视频畛域的一些想法、投入及对产业界的认识。 1.这是一个“视频优先”的时代首先,表白一个观点,咱们认为将来的世界会进入一个“视频优先”的时代。 1.1. 视频成为古代社会的根底服务咱们看到这些年视频整体业务产生了变动——从单纯的娱乐视频逐步向工业视频倒退,影响着人们的工作、生存等方方面面,目前寰球大略有3亿人通过视频会议进行办公合作。这种状况是如何产生的?实际上从人类的生物学构造上来说,人类对视频信息更敏感,科学研究表明,人类83%的信息输出是靠视觉进行触发和感知的,视频留下的印象和输出冲击会更大。同时,大脑解决视觉信息的速度比文字信息快60000多倍,这也从另一个层面验证为什么大家对视频有更多的依赖。也正是因为这些特点,视频当初逐步变成了一个根底服务。 2020年,视频在IDC数据中心的流量占比曾经达到了73%,预计在2025年将达到95%以上。从中国及华为云的状况来看,大略有80%以上的网络流量承载着视频,同时存储中50%以上是视频的结构化数据。这意味着人类社会对视频的认知曾经从增值翻新服务逐步变成根底服务。 我认为做视频的人不会有35岁景象或45岁景象那种职业焦虑,因为它是终生的行业和事业。援用互联网“点、线、面、体”说法,视频行业是一个大船在后退,所以我感觉十分荣幸,可能和在座各位从事视频相干行业的搭档一起向将来航行。 1.2. 视频正在扭转咱们的世界 视频在扭转咱们的生存。我置信大家手机上都装置了不止一个视频app,很多人1/3的空闲工夫都是在生产视频中度过的,将来兴许还会投入到VR社交、AR社交等等。视频在扭转咱们的工作。我想在座的各位每天均匀要加入一到两场视频会议,我可能每天加入三到四场,以前的本地会议缓缓向近程共享合作方面进行晋升,改良工作效率。视频也在扭转行业。以前是人生产视频,当初是机器生产视频。当初所有的监控、摄像头都阐明视频正在扭转行业,视频赋予了人们感触万物的能力,我置信视频这个空间是足够大的。明天咱们看到有这么大这么广大的空间,那咱们本人又处于一个怎么的地位? 实际上,对于从业者来说,咱们站在了时代的临界点——翻新逐渐地放慢:从过来的2D到3D、从1080P到2K再到4K,人类对体验感知的诉求在逐渐放慢、迭代速度在放慢——以前十年一代的技术,当初可能三年一代。 另一个是视频从标清走向高清,从单向走向双向。由俭入奢易,由奢入俭难,当人们曾经做到更好的视频体验时,就很难再次回到过来。举个例子:应用过85寸电视机之后,就很难再承受35寸的电视机。当初要思考的是,以后行业整个技术体系是否适应将来大家对视频业务的需要?对视频业务投入的翻新和能源是否足够撑持行业的疾速迭代?这个产业将来会倒退到哪些方向?这也是华为面临视频业务问题时所思考的。 1.3. 视频是一个长价值链业务 第二个变动点是,以前的视频都是单点技术的翻新,当初所做的新畛域会有一些明确的翻新焦点。而行情所示,视频的产业链十分长——从根底的实践钻研、到规范和专利、再到芯片、到工业化的利用。在工业化利用过程中,从生产、制作、传输、散发再到最初的生产,产业链十分长,例如RTC、VR、AR这样的技术,光单点的技术创新是很难实现真正的商用。同样视频产业也如此,产业链越长,产业的组合度、筹备度也就越高。人们明天看到的每一个视频场景,新产业的推出都须要各个行业的紧密配合以及整个产业链相互的匹配。 1.4. 端-边-云协同时代,冲破时延极限 将来如AR、VR这种体验的需要出现着翻新快、品质高、密度大的特点,所以咱们在做技术创新时从以前专门在云上或者专门在端侧变成了“端、边、云”的技术创新。 以VR为例,它波及到许多根底钻研的迷信:计算机图形畛域、语音辨认、人工智能、建模压缩传输等。当初视频的场景越来越多样化,智能终端也越来越强,所以做业务时要综合思考算力散布、生产端散布、如何做好品质老本以及延时和体验的均衡。我认为须要产业链突破行业技术的天花板才可能施展全链条的整体优势、冲破单点限度。 华为自身有根底钻研、硬件、操作系统、传输、云的技术劣势,所以对华为来说使命是如何晋升行业天花板。咱们尝试在无线网络下,做到业界最极致的时延。目前行业内大家能广泛实现的时延在200ms左右,根本达到了极限,然而200ms能够做视频会议,却很难做近程和声演唱,也很难做VR、AR直播和互动。那么如何把行业“端到端”的提早做到极致? 举一个例子,上图是华为联结上海交通大学做的技术实际,环境是在上海交通大学无线网络笼罩条件下,通过华为云的边缘及云上,再到华为企业内网的无线媒体实验室,端到端用1080P/30帧为例,尝试如何优化时延。 实际上咱们做了几个协同点:第一个协同点是从终端的感知和编解码登程,应用的是华为终端(P系及Mate系手机——这个手机因为华为的鸿蒙生态、能力及硬件,做了许多优化)。在图像的采集成像和编码封装上根本缩短了一半提早。大家都晓得华为的利用在私有云上而不在运营商的网络里,所以从运营商网络、核心网再到公网上有很多跳,两头可能还有防火墙。咱们在网络空口和媒体传输这个阶段,尤其是针对媒体传输做了很多优化,加了一些公有协定或者标签让它辨认为媒体属性的流,针对媒体属性的流做优化能够升高十分大的提早,同时还有一些上行如WI-FI、无线,咱们多路径地分到上行后再拼装。 最初是在端侧解决时,一些AI的插帧、分帧等。咱们看到通过“云、管、端、芯、媒”的互感联动,其实能够把“端到端”的提早做到100ms以下,极限时能够做到60ms。 昨天和虎牙同学交换时,我也提到心愿业界的利用玩家们可能参加进来。一方面是商业,另一方面投入科技前沿的翻新。是否能够快一点将将来的技术商品化,把产业链的筹备度减少一些,心愿通过和业界单干从而找到更好的解决行业痛点的办法。 2.产业链现状:一边向左、一边向右后面介绍了产业链的现状,接下来再讲一讲华为在中国市场看到的产业问题。看一看中国产业链是否筹备好面向未来视频业务演进。 2.1. 中国视频生产内容极其凋敝 咱们先看一组数据(上图),毫无疑问,中国是视频生产大国。纵观寰球视频类app下载数量,中国占据50%以上,榜首是字节跳动的抖音和TikTok,Top10的利用中中国占到50%,同时依照观影人数和次数统计,中国也是世界电影市场票房的第二大市场,观影人数曾经超过18亿人次。 在寰球的网络流量中,中国的网络流量占20%,其中有80%是视频流量。比照欧美国家,能够看到中国从21点开始网络流量急剧升高、直到凌晨1点,中国的娱乐视频是丰富多彩的。 2.2. 中国有差距、晋升快 与之相匹配的,上面和大家介绍中国在根底钻研投入的状态。 做视频最根底的是编解码,这个畛域其实是利用范畴最广的,方才宋利老师讲了很多规范的状况及倒退演进。整体来看,支流规范长期被国外垄断,比方MPEG、H.26x系列,中国的话语权很弱。在过来,每做一个MPEG设施,要领取很多钱,就像明天咱们做手机要给高通交“高通税”一样,中国每年都要收入百亿级专利许可费。但也有一个十分好的景象,最近五年中国厂商提高很快,特地是华为、字节跳动、联发科、腾讯、阿里巴巴和快手做出了表率,尤其是公布了中国的AVS编码,这其实和以前的WC、CGM一样,中国肯定要有话语权,在这个过程中,中国企业要积极参与。我心愿无论是大厂共事或是初创公司共事都可能关注并且反对中国本人的规范和利用。 2.3. 图形处理专利多却不强 在GPU图像处理畛域,实际上真正的根底专利在日、美、韩三国。尽管中国的GPU专利多,然而不强,尤其是四方认可的根底专利只有14项,排名第七。在根底专利上,中国次要是科研机构在参加,企业参与感很低,表单TOP20中都没有中国企业。 2.4. 计算机视觉畛域,钻研与技术利用脱节 计算机视觉畛域能够被分成很多类,比方生物合成视频、视频感知、静止追踪等。之前可能讲了许多利用场景,从利用场景到根底实际、专利,国内都处于脱节缺失的状态。目前从申请专利来看,把握话语权的是美国企业,中国有些科研院所发表的专利次要聚焦在生物特色辨认,可能与安防监控行业倒退较好无关。但像一些其余的根底钻研方面,咱们还是以利用为主。 2.5. 视频制作生产畛域,效率低下、根底工具受限 接下来是视频内容制作畛域。前段时间,我参观了广电媒资行业,传统的省电视台,心田深受震撼,很多电视台在传统媒资制作和内容生产畛域根本是美国规范、日本设施,广电媒资行业很多企业都被绑架,将美国的软件加日本的硬件设施做成一体机,这既没有做到技术创新、也没方法向将来演进。广电行业是将来视频倒退一个十分重要的畛域,咱们不能只关注互联网视频,要看到在影视制作畛域也有十分大的空间。影视制作中有许多行业痛点和问题,比方内容的上传散发。当初很多是上传之后应用硬盘人工形式去做,我置信有一天,内容制作和生产能够用在云上,不便所有后续视频散发和生产。这也是视频制作畛域的一个问题,根底工具简直为零。 2.6. 虚拟现实技术畛域,美日欧已当先布局 下一部分是大家很关注的VR、AR局部,大家都认为这是将来业务的洼地,华为也有许多VR、AR的利用,包含展台展现了华为云带来的虚构数字人。然而如果从AR、VR向下看根底专利、投入工具,能够看到它们波及到了方方面面,如光学工程、语音成像工程、人工智能、3D等等,这里有十分大的差别。从上图表格中,咱们看到专利申请数量的TOP20中只有一个是中国机构- 一所高校,它正在做仿真模仿,与生产级利用不太一样。咱们发现从根底专利到企业应用的过程十分漫长,后面说到Facebook投入十分大精力去做,但国内没有企业投资在根底钻研上,在此我也呐喊各位,如果你是主管请通知老板投入根底钻研,如果是开发者请做你认为对的事件,这是在虚拟现实技术畛域的状况。 2.7. 路在脚下 —— 扭转行业,从你我做起 综合以上景象,首先中国是当之无愧的视频业务大国,前途是光明的,视频利用或内容生产极其凋敝,可能多于美国和欧洲。但同时,视频根底技术很单薄,所有的利用简直在做同质化竞争。根底专利的有余是漫长的过程,中国的产业话语权非常少,容易被国外规范所左右,所以面向未来的翻新是有余的。 如何做将来的投入和翻新?华为摸索了很长时间,有几个方面能够跟大家分享。 第一,作为视频行业从业者、技术爱好者和要害力量,须要独特改变现状,让公司扭转的前提是开发者的扭转,所以扭转行业,从你我做起。第二,加大根底技术创新。除了做利用外,还要做根底技术投入,尤其是行业根底技术投入,后面也看到了行业的利用,在根底的,尤其和本人公司相干的根底技术专利,大家须要多投入一些.第三是在某些倒退成熟的行业中,中国的技术实力存在肯定差距,并且很难取得显著的冲破,就像中国为什么不投入做燃油车而做电动车一样,燃油车专利及整个产业链曾经被日本、德国所垄断。同样在做视频产业时,后面讲到广电媒资行业根本是美国专利、日本设施,所以咱们要做翻新,抉择的赛道应该是在云上的技术创新和基于云原生服务的翻新。第四是要做好产业生态,要与学术界、高校及研究院所建设单干,将企业遇到的关键技术问题和高校独特进行冲破,实际上这不只是华为,其余许多大企业也在做。3.面对视频行业,华为在做些什么后面介绍了对行业的认知和认识,当初分享华为是如何做的。 从1995年开始,华为就投入ICT基础设施和视频相干行业,最后与广电做IPTV,做一些技术的编解码;2012年,在中国成立了媒体研究院及实验室,有许多人物都是从这个实验室走进去的,这就是行业的提高和倒退。华为的业务倒退也很广,比方终端上的摄像技术、云原生技术,华为投入的团队和资源很大,在这个过程中有许多合作伙伴和开发者与咱们一起。 3.1. 专一视频根底技术、策略投入面对视频行业,根底技术创新阶段应该如何投入? 华为的视频技术布局实际上是“四横八纵”:“四横”是硬件、网络、计算/存储和AI,“八纵”是从采集、生产、音频、编解码、到传输,这也是重点技术单点畛域,它们是犬牙交错的。从1995年到当初,华为在根底音视频技术的投入超过100亿,尤其当初是视频产业的高速发展期,翻新焦点很多,华为每年在视频翻新投入的根底钻研超过20亿美金,所以视频的技术钻研和利用开发须要消耗大量资源。 3.2. 被动拥抱云,构建云原生的视频世界 从将来开发趋势角度以及行业化角度,当初的翻新焦点根本是聚焦于云上,而且是原生于云。因为云上技术创新迭代很快,当初在云上做技术创新和利用有几个特点:第一,原生的视频是Born in cloud,不必思考怎么上云、可靠性等问题,因为它是原生于云的视频。第二,Grow with cloud,大家晓得云的迭代倒退速度是十分快的,云用DevOps的开发方式,咱们的视频利用技术也是这样迭代的。第三,Benefit from cloud,云有许多比拟好的个性,比方随时随地、弹性膨胀、老本管制、业务指标的保障,这些都能够人造的为视频所利用。所以在云上做业务的翻新和利用会有十分好的收益。 3.3. 面向未来,被动布局,继续翻新 最初一点是面向未来。后面讲到了很多技术创新,其实VR、AR根本造成了共识,这两个技术畛域的根底技术钻研上有许多断点,比方3D建模、光栅、渲染全视角6Dof,华为也做了很多技术创新。 华为一贯将技术创新转化为商业,如自在视角、VR、河图AR等等。咱们发现技术畛域从最开始的实验室验证走向商业,这部分的停顿比设想中更快。当然,在和产业链单干的同时,政府主导的力量很要害,尤其在最开始的技术引进孵化阶段,这是高强度的投入,单从企业方面来说,商业化形式是不良好的,和政府单干能够帮忙企业走过技术猎捕期。华为在马栏山视频文创园和江西VR核心也做了产业园,欢送各位开发者入驻。 ...

April 21, 2021 · 1 min · jiezi

关于算法:文字工作者福音四行代码实现翻译支持50种语言开源代码附性能实测

最近(确切地说是昨天),有人公布了应用深度学习技术进行文本翻译的 Python 库,调用起来十分不便,基于 Facebook AI 提出的多语种翻译模型,反对 50 种语言,几乎是文字工作者的福音,我立马下来查看了一下,写了篇文章,来帮忙大家应用。 留神:应用它可能不须要对深度学习有所理解,然而须要理解根底的 Python 常识。 应用形式装置装置它非常简单,只须要执行这行代码: pip install dl-translate然而倡议新建一个环境装置,该库基于最新版的 PyTorch,没有在别的版本上测试。为了不扰乱零碎内的环境(懂的都懂),还是新建一个环境比拟好。 conda create -n torch1.8 python=3.8conda activate torch1.8pip install dl-translate应用官网指南中给出的应用代码,只有四行,就能实现翻译,十分的不便: import dl_translate as dltmt = dlt.TranslationModel() # 定义模型text_hi = " "mt.translate(text_hi, source=dlt.lang.HINDI, target=dlt.lang.ENGLISH)留神第一次应用须要下载模型,可能会比较慢,因为模型反对翻译 50 种语言,所以模型十分大, 有 2.3G 。如果需要的话,我能够帮忙大家下载下来传到百度网盘。 查看模型反对的语言: 对于比拟长的一段话,翻译起来可能十分慢,所以倡议先将它分为句子的模式,而后再一句一句翻译,对于英文,能够应用 nltk 包进行分句,而后将各个句子的翻译后果合并起来。 import nltknltk.download("punkt")text = "Mr. Smith went to his favorite cafe. There, he met his friend Dr. Doe."sents = nltk.tokenize.sent_tokenize(text, "english") # don't use dlt.lang.ENGLISH" ".join(mt.translate(sents, source=dlt.lang.ENGLISH, target=dlt.lang.FRENCH))批量翻译在翻译过程中,咱们能够利用 GPU 并行计算的劣势进行翻译,调整 batch\_size,当然前提是你的 GPU 能放得下这么多句子。 ...

March 19, 2021 · 2 min · jiezi

关于视频:WebRTC-音视频同步原理与实现

所有的基于网络传输的音视频采集播放零碎都会存在音视频同步的问题,作为古代互联网实时音视频通信零碎的代表,WebRTC 也不例外。本文将对音视频同步的原理以及 WebRTC 的实现做深入分析。工夫戳 (timestamp)同步问题就是快慢的问题,就会牵扯到工夫跟音视频流媒体的对应关系,就有了工夫戳的概念。 工夫戳用来定义媒体负载数据的采样时刻,从枯燥线性递增的时钟中获取,时钟的精度由 RTP 负载数据的采样频率决定。音频和视频的采样频率是不一样的,个别音频的采样频率有 16KHz、44.1KHz、48KHz 等,而视频反映在采样帧率上,个别帧率有 25fps、29.97fps、30fps 等。 习惯上音频的工夫戳的增速就是其采样率,比方 16KHz 采样,每 10ms 采集一帧,则下一帧的工夫戳,比上一帧的工夫戳,从数值上多 16 x10=160,即音频工夫戳增速为 16/ms。而视频的采样频率习惯上是依照 90KHz 来计算的,就是每秒 90K 个时钟 tick,之所以用 90K 是因为它正好是下面所说的视频帧率的倍数,所以就采纳了 90K。所以视频帧的工夫戳的增长速率就是 90/ms。 工夫戳的生成音频帧工夫戳的生成WebRTC 的音频帧的工夫戳,从第一个包为 0,开始累加,每一帧减少 = 编码帧长 (ms) x 采样率 / 1000,如果采样率 16KHz,编码帧长 20ms,则每个音频帧的工夫戳递增 20 x 16000/1000 = 320。这里只是说的未打包之前的音频帧的工夫戳,而封装到 RTP 包外面的时候,会将这个音频帧的工夫戳再累加上一个随机偏移量(构造函数里生成),而后作为此 RTP 包的工夫戳,发送进来,如上面代码所示,留神,这个逻辑同样实用于视频包。 视频帧工夫戳的生成WebRTC 的视频帧,生成机制跟音频帧齐全不同。视频帧的工夫戳来源于零碎时钟,采集实现后至编码之前的某个时刻(这个传递链路十分长,不同配置的视频帧,走不同的逻辑,会有不同的获取地位),获取以后零碎的工夫 timestamp_us_ ,而后算出此零碎工夫对应的 ntp_time_ms_ ,再依据此 ntp 工夫算出原始视频帧的工夫戳 timestamp_rtp_ ,参看上面的代码,计算逻辑也在 OnFrame 这个函数中。为什么视频帧采纳了跟音频帧不同的工夫戳计算机制呢?我的了解,个别状况音频的采集设施的采样距离和时钟精度更加精确,10ms 一帧,每秒是 100 帧,个别不会呈现大的抖动,而视频帧的帧间隔时间较大采集精度,每秒 25 帧的话,就是 40ms 一帧。如果还采纳音频的依照采样率来递增的话,可能会呈现跟理论时钟对不齐的状况,所以就间接每取一帧,依照取出时刻的零碎时钟算出一个工夫戳,这样能够再现实在视频帧跟理论工夫的对应关系。 ...

March 8, 2021 · 2 min · jiezi

关于视频:厉害了这群95后正在用三维成像技术让科幻变成现实

摘要:2049年咱们能领有一个“虚构敌人”么? 将来尚不可知,然而当初,咱们曾经领有了地面三维成像技术。《银冀杀手2049》中,虚构女友乔伊取得了大家的青眼,她漂亮、贴心、善解人意,关怀着男主的点滴,总能在适当的时候给予激励与帮忙,陨落前冲上去说我爱你,一个从投影中透射进去的人工智能产品有了灵魂,这兴许是将来科技想要达到的。 2049年咱们能领有这样一个“虚构敌人”么? 将来尚不可知,然而当初,咱们曾经领有了地面三维成像技术。 这意味着,咱们的视觉形式很快就会产生天翻地覆的变动。关上手机,不论是网购、玩游戏还是刷视频,出现在咱们眼前的图像不再只是手机屏幕上的二维扁平图像,而是有空间感的三维立体图。 听他们本人说有一群来自北京邮电大学的年轻人通过6年的工夫,终于实现了无介质地面成像。观众不须要佩戴任何仪器、眼镜,仅通过裸眼就可看到脱离物理屏幕40厘米以上的三维画面,极具悬浮感、立体感,由教育部组织、权威专家组成的业余委员会评估该技术为寰球独创,且外围指标达到国内领先水平。并在第六届中国国内“互联网+”大学生翻新守业大赛中拿到了全国总决赛银奖的好问题。 北京邮电大学的95后团队是如何实现无介质地面成像的?一起来看看他们怎么说吧! 点击查看视频:这群95后,正用三维世界让科幻照进事实! 文可敲代码,武可住工厂这支平均年龄只有26岁的团队,由北京邮电大学信息光子学与光通信国家重点实验室的十余位博士、硕士生组成。在本科期间,第一次接触到三维显示,这些年轻人就被眼前的成像成果吸引了,科幻电影中设想的场景与理论生存有了连贯,那种视觉所带来的震撼感让他们热血磅礴。 “超常幻境——将来全息光场显示的定义者”这个名字继承自往届前辈们。人们习惯把这项技术和“3D”做比照,但其实两者是齐全不同的概念。“全息”在物理上咱们把它叫物体的全副信息,比方给一个苹果拍照,一般照片咱们能看到它的色彩、亮度等信息,而全息影像能够从手机上、平板电脑上“跳”进去,看到一个特地真切的苹果浮现在眼前,前后左右能看到各个维度的平面影像,就是物体的全副信息。全息能够不借助任何VR眼镜、3D眼镜等辅助设施,仅靠技术出现,将图像飞离显示屏幕,裸眼就能看见悬浮在地面的物体。 从2010年开始,导师就率领着学生们钻研裸眼显示畛域。课题在一代代年轻人的热血中连续,他们一路读研、读博,在三维显示畛域花了大量的工夫、精力,每天都在钻研到底如何可能进步视觉效果,哪怕只是一丁点的提高都能让他们欢呼雀跃很久。 但这群痴迷其中的年老人们,并没有意识畛域的将来性,会导致他们无奈找到能够相匹配的硬软件条件,有时只是一个光学元件都能让他们解体许久。 为了可能让成像成果更好,每个光学元件都会通过团队反反复复设计、但因为他们技术的前沿性,导致在市场上找不到相应的硬件反对,辛辛苦苦做的设计,往往并不能如愿生产,厂家看过设计后,要么间接回绝说太难;要么就是加工后,拿到手里发现货不对板。 设施问题不解决,哪怕技术再牛也毫无意义,既然工厂没有方法间接依照设计生产进去,那么他们就与工人一起去打磨,“既然没有人能去做,那咱们就跟那些人去分割,咱们一起去学。” 为了找到适合的厂家,本来在实验室里搞技术、搞研发的人都跑去了工厂,与工人们一起探讨如何加工,间断找了三十多家工厂后才终于找到了深圳一家工厂。 工厂位于深圳市区,周边都没有什么其余设施,这群从小没有吃过什么苦头的年轻人,拖着行李开始跟工人同吃同住,与工人一起探讨、研发,将本人的业余理论知识与工人的实操教训相结合。 工厂条件很艰辛,但每次一有新的计划,团队就立马火急火燎赶过去,一待就是20多天。本来生疏的工厂变成了他们的第二个大本营,已经不相熟的工人们也打成了一片,还经常互开玩笑,他们说工人个个都身怀绝技,工人感叹他们的发量太过浓密。 每一个光学元件都通过了这般打磨,每一件产品也都是这样缓缓拼接加工进去的,每当看到产品一点点成形,这群年轻人早已遗记在工厂里所吃过的苦头。 正是这般一头扎进行业里的执拗,设施能力落地。 ▲设施外观 以后我的项目获得了阶段性胜利,但仍面临一些挑战——成像设施太大,不够笨重便携。但置信靠他们这股死磕劲,这一问题终究会被解决,毕竟,在74年前世界上第一台通用计算机“埃尼亚克”,也曾是占地170平方米、重达30吨的硕大无朋。‘ 万事俱备,巧遇华为用当初定义将来,这个研发过程远比设想中难,除了设施的生产、打磨之外,还有以后软件局限性带来的重重挑战。 全息光场景课题从2010年开始着手钻研,到2016年疾速倒退,之后放弃着每年一次的迭代速度,在分辨率、视角和出屏间隔三个重要参数上失去两到三倍的晋升。2018年,在技术计划引进的过程中与华为结下了不解之缘,缘分始终连续到当初。在产品更新迭代中,华为提供了很大的帮忙。 首先,华为解决了海量数据存储问题。图像要实现三维平面,从采集过程开始,就要比二维图像更加简单。一个三维物体在图片采集阶段,至多须要五六十台相机全方位的拍摄,这些高清图片叠加在一起就是一个不小的储存量,图片在传输、渲染时也会造成十分大的运算量。 将三维成像与一般电影做比照,大略会在一千倍左右。三维显示展示一张8K图片,须要7680×4320的像素,每个像素有3个子像素,每个子像素离开编码,一共有7680×4320×3,大略是1亿个子像素须要计算。在试验阶段,团队往往要消耗大量的工夫来期待程序运行结束,有时只是渲染一帧图像,就须要一天一夜。 而目前正在钻研的3D全息通信技术,须要上传视频或者实时直播,单张图片就有1亿子的运算,而每一秒的视频大略有30帧左右,这样每秒的计算量就是30×1亿,目前团队应用的光线追踪技术,须要发射1亿的光线合成一张图像,速度慢,耗费工夫长。 基于华为的海量存储、海量运算的技术,团队开发了一个平台,将它命名为“海量光场数据集成并行渲染平台”,通过平台将8K图片进行区域的拆分,拆成几百个小区域,每一个区域同步计算,这样一来,整个运算成果失去了显著晋升,而且每一个区域同步的计算量也比之前应用CPU计算的速度快很多,同时升高渲染工夫,达到实拍实时传输,实时显示的状态。相比于自行购买硬件,市面上高性能显卡都极其低廉,如RTX3090价格超过一万元,应用华为云在经济上也更节俭。 分布式光场图像渲染软件平台联合华为云弹性计算的个性,防止了后期的硬件投入,解决高质量光场图像渲染效率低下的难题。通过REST接口对模型数据进行治理和应用,联合华为提供的SQS点对点服务实现了此分布式系统中异步音讯的构建,实现了多渲染工作的并行执行。 另外,华为解决了实时动静的问题。比方空气中浮现了一个苹果的三维影像,咱们用手去触碰,它能展现出触碰后的状态,旋转或者变形,这个就要求三维数据实时发生变化,引入华为技术之后,帮忙团队实现实时数据转化,齐全实现实时的交互。 ▲人体器官全息再现 2018年,团队与华为独特单干钻研全息通信畛域。咱们目前的通信形式都是二维层面的,脸、身材禁锢在屏幕中,尽管解决了大多数通话需要但将来必定不仅局限于此,一位远方的母亲是否想要看见孩子平面的脸庞,并触碰到他呢?除了日常通信,会议也逐步成为人们工作沟通的形式,即便远隔千里,利用技术将对方一颦一笑清晰的出现在眼前,就像科幻电影里的场景一样,听听就很兴奋。 而不论是全息视频还是全息会议都须要两个根本技术来撑持。第一个技术就是通信,2019年世界进入5G商用元年,华为将5G技术推向了全世界,它带来的不仅仅是速度上的晋升,还有万物互联的构建。华为提出了“智能体”概念,以AI为外围,以云为根底,云网边端协同。通过联接、人工智能、云、计算及行业利用的有机协同,构建一个立体感知、全域协同、精准判断、继续进化的凋谢的智能零碎。而5G的倒退正好是实现网络无缝笼罩和万物互联的根底。将来将是一个物理世界和数字世界的交融。另外一个就是显示终端,华为在技术上帮忙团队传输数据再实时转化成空间的实在人物浮现。目前我的项目第一期曾经完结,团队和华为正在为第二期的钻研做筹备。 科幻事实化,还远吗现在,超常幻境我的项目成绩曾经申请国家发明专利21项、受权11项,胜利利用到了国家20多个重要单位和企业中,波及展览、通信、金融等多个畛域,用颠覆三维显示的技术同时也颠覆了其余畛域的传统利用形式。 北京天文馆里,应用全息光场显示技术展现宇宙中八大行星绕着太阳转的场景,不再是依附屏幕中的二维图像或3D动画来展现,而是可能用真正的三维图像让人身临其境。 同时,在教育部举办的寰球首届世界慕课大会中,超常幻境项目组被邀请到现场,寰球直播展现将来互联网+线上教育的可能性。 对于学习几何、空间的孩子来说,不必再害怕不足想象力而感觉学习吃力、艰难。 置信不久的将来,孩子们都可能在学习中间接看到呈现出的几何图像,毋庸设想,就能看到书本中描述的物体全貌,这就意味着,将来对于平面、空间等等须要设想的常识,都能够变成咱们可能看到的三维平面图像。 而这只是超常幻境我的项目将来场景的一个缩影,这群年轻人所做的事件,就是要颠覆公众司空见惯的二维视觉形式,用全新的三维视觉扭转咱们生存的方方面面。目前团队正在与华为联结研发下一代交互式全息视频通信零碎,曾经获得重大进展。 ▲华为将本产品利用到宽带通信业务 这世界究竟是靠有谋求、有酷爱的年轻人在推动,当越来越多的年轻人能把心血都投入到定义将来畛域里,那么这个社会定将会飞速发展。 作为一家领有高端技术和人才的企业,华为始终都在为这样的年轻人提供技术支持、我的项目帮扶。但从去年开始,华为将不再只限于此,与高校联结造就更多可能定义将来的高端人才。 华为联结教育部,在无关高校建设“智能基座”产教交融协同育人基地,现已在北京大学、清华大学、上海复旦大学、上海交通大学、西安交通大学、哈尔滨工业大学等72所高校,把鲲鹏、昇腾系列课程融入计算机专业、软件工程业余、人工智能业余、电子信息业余进行首批试点。 中国的将来看高端技术的倒退,高端技术的倒退看各大高校的年轻人,现如今,华为带着技术走进了各大高校,置信不久的将来会有越来越多有技术、有想法、有激情的年轻人喷涌而出,到那时智能化还会远吗? 点击关注,第一工夫理解华为云陈腐技术~

February 18, 2021 · 1 min · jiezi

关于视频:云上视频业务基于边缘容器的技术实践

视频网关是视频云零碎下的一个边缘容器设施,它起着将视频数据承前启后的性能。 视频云说到边缘视频网关就不得不提到云计算中的视频云,它是各畛域的视频零碎比方安防监控等向着智能化、物联网、上云倒退的产物。 在云平台上通过云服务器和边缘视频设施将采集的视频输入编码后通过网络实时传输给终端,终端进行实时解码后显示输入。终端同时能够进行操作,通过网络将操作控制信息实时传送给云端利用后盾对边缘视频设施进行管制。 一个物联网场景下云边协同的智能视频云零碎,具备实时流、历史录像性能,并反对对视频数据算法剖析与后果联动管制,能够兼容市面上大多数厂商的视频设施比方摄像头和NVR。不仅能够在私有云/公有云部署,甚至提供反对有损服务的本地局域网视频最小零碎。 视频网关视频网关是云计算在视频垂直畛域中的边缘容器设施,能够将其了解连贯视频数据在视频传感器与云上服务之间的桥梁,是视频云零碎中的要害一环,实现视频设施宽泛的兼容性以及云边协同都离不开它的身影。设计一个性能齐备,可扩大,高可用的视频网关是十分值得投入的。 如何实现视频网关须要实现的基本功能包含视频流采集与推送、视频设施接入与治理等,作为一个与底层硬件打交道的设施,又波及到云计算中的接入、平安以及云边协同等方面,堪称麻雀虽小五脏俱全。 视频数据采集视频云零碎中视频数据的采集由位于边缘侧的视频网关实现,视频网关连贯视频采集设施比方IPC/NVR, 通过厂家SDK或者ONVIF协定对视频采集设施进行治理,网关拉取视频采集设施的数据流并推送云端或者边缘侧的视频服务,由视频服务对视频数据进行转码、数据流协定转换等操作以适配不同的播放客户端。 视频设施治理摄像头、NVR等视频设施位于用户局域网内,通过边缘视频网关接入到视频云零碎中。边缘视频网关和视频设施须要在治理平台上通过导入的形式做注销以便明确视频网关与视频设施以及视频网关与业务的绑定关系。视频网关治理视频设施并将设施状态实时同步到云视频零碎中,治理平台实现"设施影子"并提供对视频网关以及视频设施状态信息的增删改查接口。 数据安全视频上云须要平安认证,视频云零碎中边缘容器设施接入云端服务、边缘容器设施之间以及边缘容器设施与云端服务之间的数据流采纳规范国密算法保障其运行的安全性,其中边缘容器设施接入云视频流程中采纳国密sm2非对称秘钥技术保障接入平安,边缘容器设施与云视频之间的数据通道采纳国密sm4对称秘钥技术保障信令与视频数据的平安。 设施接入视频云零碎中视频网关等边缘容器设施通常位于用户局域网内,视频网关在局域网内连贯视频设施比方IPC或者NVR,并作为一个边缘容器设施接入到云视频。视频网关通过注册、登录形式接入云视频保障安全性,整个设施接入流程中视频网关与云视频之间通信采纳国密sm2非对称加密技术进行音讯加密与签名校验,接入云视频后视频网关与云视频之间的信令通道采纳国密sm4对称秘钥形式进行数据加解密。 1)在视频云开放平台为视频网关设施申请sn序列号后即能够失去视频网关的私钥以及接入云视频所需的公钥; 2)视频网关接入云视频的注册阶段,首先网关应用网关私钥对本身信息进行签名,而后应用云视频公钥将签名信息以及设施sn等信息进行加密并发送云视频,这一过程能够保障网关的注册申请只能被云视频解析,并且云视频能够通过签名验签辨认音讯是由视频网关收回。 3)注册云视频胜利后,云视频会将其与视频网关之间的信令通道等相干信息通过云视频私钥加密后返回给视频网关,视频网关通过云视频公钥能够解析。 4)视频网关接入云视频的登录阶段会与云视频协商信令通道对称秘钥,首先网关应用网关私钥对本身信息进行签名,而后应用云视频公钥将签名信息以及设施惟一标识、对称秘钥向量等信息进行加密后发送云视频,这一过程能够保障网关的登录申请只能被云视频解析,并且云视频能够通过签名验签辨认音讯是由视频网关收回。 5)登录云视频胜利后,云视频会将其与视频网关之间信令通道中应用的对称秘钥key、token以及无效工夫等信息通过云视频私钥加密后返回给视频网关,视频网关通过云视频公钥能够解析。 数据通道边缘容器设施与云视频之间的业务数据,比方视频网关与云视频之间的视频流推送、摄像头列表保护等音讯通过数据通道传播,采纳国密sm2对称秘钥技术加密,如果数据通道的token、对称秘钥过期须要视频网关从新登录云视频获取。 以边缘视频网关向云视频推送视频流这一过程为例阐明,视频网关采集到摄像头设施的视频流后对视频帧加密后传输到云端视频后盾服务,其中视频网关与云端视频后盾服务之间推视频流建设握手的token以及推流数据加密应用的国密sm4 key等平安信息是通过视频网关与云视频之间的数据通道下发的,视频链路保障该加密信息的单次应用时效性,也就是说单次推流的信令中所蕴含的加密信息如果在一个工夫阈值内不应用或者握手胜利后就不可再次复用了。 视频云零碎中边缘容器设施接入与数据通道的平安认证机制如下图所示。 云边协同灵便的云边协同和边缘计算能力,集中管理能力云端收拢,局部逻辑下沉边缘,保障疾速响应,即使在云环境网络异样下也能提供根底的本地视频服务实现高可用。 在传统的视频监控畛域,摄像头、算法和监控软件会部署在同一个局域网内,对于用户而言,往往有在公网短时播放的需要。如果将视频放到公网上进行播放,又会带来带宽老本以及平安问题。视频云零碎为解决以上问题,提供云边协同和边缘计算能力,在云端管制边缘节点,能够将已训练好的算法或者事件联动能力下沉到边缘容器设施进行运行,大大降低云端压力。同时领有灵便边缘路由能力,依据云端拉流需要,将局部视频推到云端进行播放,极大升高带宽老本,进步零碎的稳定性。 云边零碎高可用 技术计划跨平台编程视频网关作为一种嵌入式媒体网关设施,次要有两种设施状态,一种是以通用服务器搭载网关服务的模式,这样的零碎比拟重,老本比拟高然而性能强劲,另一种是嵌入式盒子设施比方树莓派,成本低同时性能较低,依照我的项目利用场景正当搭配解决方案。 视频网关作为一个能够跨平台,跨零碎并深度交融云计算视频云畛域的服务,软件咱们采纳了golang语言,借助于其人造的跨平台个性,能够反对网关服务运行在各种芯片平台以及操作系统之上。go tool dist list 能够看到go语言反对的平台和零碎如下。 操作系统主控芯片平台linux386/amd64/arm/arm64/mips/mips64/mips64le/mipsle/ppc64/ppc64le/riscv64/s390xandroid386/amd64/arm/arm64darwin386/amd64/arm/arm64freebsd386/amd64/arm/arm64solarisamd64plan9386/amd64/armopenbsd386/amd64/arm/arm64netbsd386/amd64/arm/arm64aixppc64windows386/amd64/arm从上述列表能够看出,从linux/arm64的嵌入式零碎到linux/s390x的大型机零碎,再到Windows、linux和darwin(mac)这样的支流操作系统、amd64、386这样的支流处理器体系,Go对各种平台和操作系统的反对不堪称不宽泛。 go语言被称作互联网时代的c语言其长处很多,语法简略、原生反对并发、平台可移植性好、运行速度快、有功能丰富并且对立的规范库等等,其中对于跨平台有一种说法go是为了解决c/c++那些简单的依赖而来的,这肯定水平上得益于Go独立实现了runtime,作为技术栈上的选型这里对于runtime多说一些。 runtime是撑持程序运行的根底。libc(C运行时)是目前支流操作系统上利用最广泛的运行时,通常以动态链接库的模式(比方:/lib/x86_64-linux-gnu/libc.so.6)随着零碎一并公布,它的性能大抵有如下几个: 提供根底库函数调用,比方:strncpy;封装syscall(操作系统提供的API口,当用户层进行零碎调用时,代码会trap(陷入)到内核层面执行),并提供同语言的库函数调用,比方:malloc、fread等;提供程序启动入口函数,比方:linux下的__libc_start_main。晚期的零碎的磁盘/内存资源非常缓和,采纳动态链接库的形式能够使得编译的程序/过程磁盘/内存占用小。不过时代变了,当初的服务器配置曾经足够,因为libc等c runtime lib是基于线程模型的并且历史版本简单,对于开发人员来说这里的累赘很重,一些从事c/c++开发多年的同学可能有过这样的经验,链接runtime库时须要抉择链接反对多线程的库还是只反对单线程的库。 go独立实现runtime层,封装了syscall将Go user-level code与OS syscall解耦,把go 移植到一个新平台时,将runtime与新平台的syscall对接即可,根本解脱对libc的依赖,这样动态编译的go程序具备很好的平台适应性。而且穿插编译很简略,只波及两个重要的环境变量:GOOS和GOARCH,别离代表Target Host OS和Target Host ARCH,这里须要留神CGO_ENABLED=0的状况下,即不波及cgo的前提下go采纳纯动态编译。 业务性能视频网关位于视频零碎的边缘侧,次要业务性能是负责拉取视频流并推送到视频后盾服务。在系统管理层面,视频网关须要连贯设施侧的IPC/NVR等,并接入到视频零碎的管制内核,作为边缘容器设施接管云视频零碎内核的信令对视频设施进行治理,执行相应的操作,并将视频设施的反馈后果以及状态上报到云视频零碎内核。 网络接入视频网关不仅可通过固网接入视频云零碎,也可通过蜂窝网,wifi等无线形式接入。视频网关通过驱动搭载WIFI/4G/5G等通信模块实现无线接入能力,其中局域网内能够应用WIFI等协定,连贯互联网能够应用4G/5G通信。视频网关可依据视频零碎组网的理论状况以及现场视频设施的理论能力,将整个视频零碎的有线/无线网络联合。 无线接入框架 设施初始化视频网关在接入层采纳插件化的框架,向下能够兼容ONVIF协定、SDK等多种形式接入视频设施,向上能够兼容mqtt/http等物联网传输协定接入云计算视频平台。 初始化能力集视频网关通过视频设施的设施影子中厂商、流起源等属性判断应用ONVIF协定还是厂商SDK对视频设施进行初始化,获取视频设施的能力列表比方RTSP连贯等。 视频设施初始化流程 初始化音讯通道视频网关和云视频零碎内核之间的音讯通道反对http/mqtt等物联网通信协议,视频网关具体应用某种通信协议由用户抉择相应的配置在系统启动阶段实现初始化。 音讯通道的初始化流程 安全策略视频网关在接入云视频零碎内核过程反对双向鉴权,信令通道以及视频流传输反对数据加密等多种安全策略。 视频网关接入云视频零碎内核分为注册、挑战、登录三步,网关与内核之间采纳tcp公有协定形式通信,接入过程中应用sm2/4国密进行数据加密和签名。其中视频网关的设施私钥、设施公钥以及云视频零碎内核的公钥由视频网关在申请云视频零碎内核放号的过程中获取。 视频网关安全策略 视频流加密内核下发推流音讯命令字告诉视频网关推视频数据流,网关依据音讯中的流起源字段辨别收流设施是IPC还是NVR,网关推送视频流的目标端信息以及视频流加密秘钥由内核下发音讯指定。 ...

January 12, 2021 · 1 min · jiezi

关于视频:前端面试每日-31-第631天

明天的知识点 (2021.01.06) —— 第631天 (我也要出题)[html] HTML5如何播放ts视频流?[css] 在Less中的嵌套作用是什么?[js] 写一个办法将一个数组中的元素,从前到后顺次两两组合,最初一个与第一个组合[软技能] 你心愿通过这份工作取得什么?《论语》,曾子曰:“吾日三省吾身”(我每天屡次检查本人)。前端面试每日3+1题,以面试题来驱动学习,每天提高一点!让致力成为一种习惯,让奋斗成为一种享受!置信 保持 的力量!!!欢送在 Issues 和敌人们一起探讨学习! 我的项目地址:前端面试每日3+1【举荐】欢送跟 jsliang 一起折腾前端,零碎整顿前端常识,目前正在折腾 LeetCode,打算买通算法与数据结构的任督二脉。GitHub 地址 微信公众号欢送大家前来探讨,如果感觉对你的学习有肯定的帮忙,欢送点个Star, 同时欢送微信扫码关注 前端剑解 公众号,并退出 “前端学习每日3+1” 微信群互相交换(点击公众号的菜单:交换)。 学习不打烊,充电加油只为遇到更好的本人,365天无节假日,每天早上5点纯手工公布面试题(死磕本人,愉悦大家)。心愿大家在这虚夸的前端圈里,放弃沉着,保持每天花20分钟来学习与思考。在这变幻无穷,类库层出不穷的前端,倡议大家不要等到找工作时,才狂刷题,提倡每日学习!(不忘初心,html、css、javascript才是基石!)欢送大家到Issues交换,激励PR,感激Star,大家有啥好的倡议能够加我微信一起交换探讨!心愿大家每日去学习与思考,这才达到来这里的目标!!!(不要为了谁而来,要为本人而来!)交换探讨欢送大家前来探讨,如果感觉对你的学习有肯定的帮忙,欢送点个[Star]

January 6, 2021 · 1 min · jiezi

关于视频:支撑抖音跳动数年后火山引擎新一代视频点播服务正式对外开放

依靠抖音、西瓜视频等产品多年音视频技术积攒和根底资源,字节跳动旗下数字服务与智能科技品牌火山引擎于12月28日正式推出一站式视频点播服务,心愿用理论场景中验证过的极致视频技术能力,解决宽广企业在点播业务中存在的体验和老本问题。 火山引擎视频点播服务架构 火山引擎推出的多媒体服务为全新一代的视频点播,除了提供底层资源外,更提供下层通过理论场景验证后的体验,具备服务能力一站式、体验佳双重特点。性能上,火山引擎视频点播提供了包含短视频编辑、视频上传、多媒体解决、视频播放和品质平台等端到端服务,残缺笼罩了音视频采集、编辑、上传、存储、转码解决、散发、内容审核、播放等流程。体验上,火山引擎充分发挥了背靠字节跳动宏大用户规模积淀下来的教训劣势,基于理论业务中海量的A/B试验及用户反馈继续进行优化,提供真正晦涩的视频接入和播放体验。 火山引擎视频点播还提供详尽的服务质量监控、报表服务和专家一对一参谋服务,帮忙企业疾速落地视频能力外,真正的晋升视频体验。 以后,火山引擎视频点播可广泛应用于短视频、长视频、版权视频、直播转点播等场景,具体落地上针对用户体验、稳定性、场景化和品质管控进行了粗疏的打磨: • 用户体验:火山引擎视频点播致力于为用户提供更优越的播放体验,在首屏感、卡登时延、画质、弱网和弱机用户等方面做了精密的技术打磨,并聚焦“快、爽、清”继续晋升服务能力;• 稳定性:通过自有APP的海量机型、播放量的验证,点播的稳定性通过了充沛的打磨,Crash率和用户报障率远优于开源播放器;• 场景化:视频点播立足业务视角,开发了多种实用功能,力求贴合业务场景、合乎特定业务诉求。如谋求老本的增效转码,它能自在适配客户理论业务需要;同时,增效转码也能实现智能动静、实时调整转码解决计划,针对性、定制化的有限趋近客户的最优转码解决配置;• 品质管控:火山引擎视频点播配有齐备的品质平台,可积淀全量用户全链路播放行为数据。大数据能力撑持下,品质平台领有欠缺的指标监控,可疾速定位播放问题源、问题类型,并提供剖析与技术策略倡议。 除了前述优化改良外,火山引擎视频点播还在老本上做了很好的优化。火山引擎智能视频云产品经理王浩然介绍,基于字节跳动独特的智能编码技术、动静实时策略和播放器缓存管制,在等同画质、等同播放量下,能给客户带来20%~40%的老本节俭。 火山引擎视频官网页面 目前,火山引擎视频点播服务了包含懂球帝、天天鉴宝、半次元、图虫、钠镁股票、抖音、头条和皮皮虾在内的数十家内外部客户,帮忙他们在生产流程降本增效,并进步视频服务的品质、晦涩度和稳定性。 据悉,火山引擎提供全新一代视频点播对外服务的背地,是一段字节跳动多媒体技术能力一直迭代的自研史: • 第一代建设了全链路能力:在购买第三方服务的同时,买通了存储、转码、CDN、播放等整条链路;• 第二代做极致的性能优化和质量体系:基于严格的A/B试验和继续的技术迭代,推出性能更优的自研播放器、行业当先的编解码能力,并积淀出品质平台、全链排障数据;• 第三代是深度的场景体验优化:基于海量数据,对不同的网络状况、机器性能、业务场景等输入最佳策略,精细化的优化用户体验,对留存、人均播放时长等产生正向作用,赋能业务增长。 火山引擎智能视频云高级总监赵鹏伟示意,视频作为效率远高于图片和文字的信息传递载体,将来视频和直播能力是任何行业的都应该具备的能力。“在视频通道之上,咱们心愿联合本身业务积淀、数据分析能力提供体验佳、性能强、玩法多样的视频能力,满足业务场景的实在需要,让企业和开发者开箱即用,不再反复造轮子。”

December 30, 2020 · 1 min · jiezi

关于视频:CSS控制video标签的控制栏组件-隐藏video播放器右下角三个点

video标签默认是不显示管制条的,在video标签增加controls可显示视频播放器的管制条,蕴含视频的播放管制按钮、进度条、全屏按钮等。<video controls></video> css暗藏按钮//全屏按钮video::-webkit-media-controls-fullscreen-button { display: none;}//播放按钮video::-webkit-media-controls-play-button { display: none;}//进度条video::-webkit-media-controls-timeline { display: none;}//观看的以后工夫video::-webkit-media-controls-current-time-display{ display: none; }//剩余时间video::-webkit-media-controls-time-remaining-display { display: none; }//音量按钮video::-webkit-media-controls-mute-button { display: none; }video::-webkit-media-controls-toggle-closed-captions-button { display: none; }//音量的管制条video::-webkit-media-controls-volume-slider { display: none; }//所有控件video::-webkit-media-controls-enclosure{ display: none;}controlslist暗藏按钮controlsList属性返回DOMTokenList,帮忙用户在显示其本人的控件集时抉择要在媒体元素上显示的控件,能够设置以下三个可能值中的一个或多个:nodownload,nofullscreen和noremoteplayback nodownload关键字暗示的下载管制应应用用户代理本人的一套媒体元素控件时被暗藏。nofullscreen关键字暗示在应用用户代理本人的媒体元素控件集时,应暗藏全屏模式控件。noremoteplayback关键字暗示当应用用户代理本人的媒体元素控件集时,应暗藏近程播放控件。MDN HTMLMediaElement.controlsList // nodownload: 不要下载// nofullscreen: 不要全屏// noremoteplayback: 不要近程回放// disablePictureInPicture: 不要画中画 <video controls disablePictureInPicture="true" controlslist="nodownload nofullscreen noremoteplayback"</video>暗藏播放器右下角三个点如图 可能须要暗藏右下角的三个点,外面蕴含下载和画中画!须要将下载和画中画暗藏后才回齐全暗藏这三个点。只须要将controlslist="nodownload",而后设置disablePictureInPicture="true"就能够了 或者间接应用js获取dom节点后设置对应属性 const el = document.querySelector('video');el['disablePictureInPicture'] = true; // disablePictureInPicture的属性改为true 禁用画中画el['controlslist'] = 'nodownload noremoteplayback'; // 暗藏下载按钮 去掉右侧三个点后的款式

December 15, 2020 · 1 min · jiezi

关于视频:前端面试每日-31-第602天

明天的知识点 (2020.12.08) —— 第602天 (我也要出题)[html] H5播放的video视频,如何实现对视频截图?[css] 你是如何查看css语法是否正确的?有哪些办法?[js] 为什么js里定义的数组能够不定长且数据类型能够不固定呢?[软技能] 谈下你对裸职的认识《论语》,曾子曰:“吾日三省吾身”(我每天屡次检查本人)。前端面试每日3+1题,以面试题来驱动学习,每天提高一点!让致力成为一种习惯,让奋斗成为一种享受!置信 保持 的力量!!!欢送在 Issues 和敌人们一起探讨学习! 我的项目地址:前端面试每日3+1【举荐】欢送跟 jsliang 一起折腾前端,零碎整顿前端常识,目前正在折腾 LeetCode,打算买通算法与数据结构的任督二脉。GitHub 地址 微信公众号欢送大家前来探讨,如果感觉对你的学习有肯定的帮忙,欢送点个Star, 同时欢送微信扫码关注 前端剑解 公众号,并退出 “前端学习每日3+1” 微信群互相交换(点击公众号的菜单:交换)。 学习不打烊,充电加油只为遇到更好的本人,365天无节假日,每天早上5点纯手工公布面试题(死磕本人,愉悦大家)。心愿大家在这虚夸的前端圈里,放弃沉着,保持每天花20分钟来学习与思考。在这变幻无穷,类库层出不穷的前端,倡议大家不要等到找工作时,才狂刷题,提倡每日学习!(不忘初心,html、css、javascript才是基石!)欢送大家到Issues交换,激励PR,感激Star,大家有啥好的倡议能够加我微信一起交换探讨!心愿大家每日去学习与思考,这才达到来这里的目标!!!(不要为了谁而来,要为本人而来!)交换探讨欢送大家前来探讨,如果感觉对你的学习有肯定的帮忙,欢送点个[Star]

December 8, 2020 · 1 min · jiezi

关于视频:WebAssembly-在-Web-端视频的应用

WebAssembly 从诞生起,赋予了前端更宽敞的利用设想。绘图视频渲染,剪辑,编解码,游戏都有可能基于 WebAssembly 在浏览器端推出相干的产品。 什么是 WebAssemblyWebAssembly(wasm) 是一种二进制代码格局, 具备高效,跨平台性,蕴含这种格局的二进制文件,能够被各个平台的浏览器高效的加载,解析执行。 只有浏览器反对 wasm, 用户便能够应用 wasm 所提供的性能,也就是说 wasm 的跨平台性其实是基于浏览器的跨平台性。下层用户编译 wasm 时,不须要关注底层架构是什么,只有编译进去正确的二进制文件,就能够在各个反对的浏览器运行。 wasm 加强了 js 的能力,js 不善于做的事件,比方绘图,编码,解码,数学计算等,都能够在 wasm 中实现,而后 js 就能够应用wasm所提供的能力。 现阶段曾经有很多 WebAssembly 的利用,比方 ffmpeg 的编解码利用, unity 3d, unreal engine, google earth等都相继反对了 wasm。 如何应用WebAssembly 当初反对从 C/C++, go, rust 编译成 wasm 模块。应用 emscripten sdk, 能够从 C/C++ 源码间接编译成 wasm 文件,而后在网页中 间接加载应用。 参考 https://emscripten.org/docs/g... 入门。参考 https://emscripten.org/docs/c... 编译我的项目。 然而如何从网页调用 wasm 的办法。两种办法: 间接应用 emscripten 提供的底层函数,把wasm 的办法导出到 js 运行环境中。在底层应用 embinding 间接导出 c/c++ 的函数和类,而后在 js 中调用。如果利用在视频剪辑中基于 wasm 提供的能力,ffmpeg 解码, 图片解码, OpenGL, 多线程,视频剪辑利用的结构图如下, 该系列文章,会不定期更新,介绍基于此图的架构和技术原理: ...

November 30, 2020 · 1 min · jiezi

关于视频:前端面试每日-31-第591天

明天的知识点 (2020.11.27) —— 第591天 (我也要出题)[html] 如何给<video>视频增加字幕(WebVTT)?[css] 说说你对screen.width伪响应式的了解[js] 剖析下sum = n * (n - 1) / 2的工夫复杂度是什么?[软技能] 说说你对ASCII码的理解,它有什么用处?《论语》,曾子曰:“吾日三省吾身”(我每天屡次检查本人)。前端面试每日3+1题,以面试题来驱动学习,每天提高一点!让致力成为一种习惯,让奋斗成为一种享受!置信 保持 的力量!!!欢送在 Issues 和敌人们一起探讨学习! 我的项目地址:前端面试每日3+1【举荐】欢送跟 jsliang 一起折腾前端,零碎整顿前端常识,目前正在折腾 LeetCode,打算买通算法与数据结构的任督二脉。GitHub 地址 微信公众号欢送大家前来探讨,如果感觉对你的学习有肯定的帮忙,欢送点个Star, 同时欢送微信扫码关注 前端剑解 公众号,并退出 “前端学习每日3+1” 微信群互相交换(点击公众号的菜单:交换)。 学习不打烊,充电加油只为遇到更好的本人,365天无节假日,每天早上5点纯手工公布面试题(死磕本人,愉悦大家)。心愿大家在这虚夸的前端圈里,放弃沉着,保持每天花20分钟来学习与思考。在这变幻无穷,类库层出不穷的前端,倡议大家不要等到找工作时,才狂刷题,提倡每日学习!(不忘初心,html、css、javascript才是基石!)欢送大家到Issues交换,激励PR,感激Star,大家有啥好的倡议能够加我微信一起交换探讨!心愿大家每日去学习与思考,这才达到来这里的目标!!!(不要为了谁而来,要为本人而来!)交换探讨欢送大家前来探讨,如果感觉对你的学习有肯定的帮忙,欢送点个[Star]

November 27, 2020 · 1 min · jiezi

关于视频:从0到1-构建实时音视频引擎

最近几年,实时音视频畛域越来越热,往年的疫情更是“推波助澜”了一把。网易智企旗下产品网易云信在实时音视频畛域深耕多年,积攒了不少实践经验。在本文里,笔者将以烹饪为比喻,深入浅出地将网易云信如何从0到1构建实时音视频引擎的过程分享给读者。 跟业界很多引擎的实现计划一样,网易云信也是基于WebRTC构建的实时音视频引擎。本文会从介绍WebRTC提供了什么开始,一步步引入工程化/产品化/优化实际等内容,残缺出现引擎的整个构建过程。 首先,WebRTC是什么? WebRTC全称Web Real-Time Communication。本来是用于反对网页浏览器开发实时音视频用的一套API,它提供了对立的交互协定:SDP,同时提供了视频会议的核心技术,包含音频引擎、视频引擎、传输管制三大块,并且还反对跨平台:Windows / Mac / Linux / Android / iOS。 WebRTC原本就是给浏览器用的,没有native代码能够参考。然而,在2011年它被Google开源了,源码被利用于各种native开发,并被业内宽泛借鉴,大有一统天下的趋势。 有了WebRTC,是不是就等于有了实时音视频引擎呢?并不是,以烹饪来做比喻的话,有了WebRTC就好比是有了厨具/原材料,而实时音视频引擎是给客户的那顿大餐。 有了厨具/原材料,第一步是什么呢?“学会厨具应用办法”—WebRTC的源码工程化。 WebRTC官网和其余第三方渠道已有不少材料介绍如何应用Google提供的工具编译出WebRTC的生成物,本文不再具体赘述。 会用厨具之后,是不是就能做出一顿好吃的饭菜了呢? 事实往往是这样的:用着很牛的厨具和资料,做着难以下咽的操持… 所以要以正当的步骤来做一顿饭菜,这饭菜才适宜下咽。在网易云信的实际中,咱们抉择了怎么的步骤呢?因为基于WebRTC建设通话的根底是通过设置SDP来实现的,所以咱们抉择了通过信令传递SDP信息,而后设置SDP信息给PeerConnection来实现建联。整个多人音视频能力中外围的是公布、订阅、响应订阅等媒体性能,其余的性能都是围绕着这些外围性能来做的。而外围性能是采纳如下流程来实现的: 举例: 公布音视频:把本人的SDP信息给媒体服务器(上图中的媒体服务器是SFU服务器),媒体服务器把本人对应的SDP信息返回来。这样就具备了Local SDP 和 Remote SDP,就能够实现一次设置并建联了。 订阅和被订阅也是相似的过程,通过发送本人的SDP给服务器,拿到远端的SDP信息,而后建设/更新联接。 以上是一个根本的建联过程。拿烹饪来说,是不是饭菜做熟了就很好吃了呢?其实还有很多须要晋升的:把饭菜做得更好吃/依据不同人的口味做不同的饭菜。这个晋升的过程,就是各种优化。 网易云信的优化实际有很多,上面介绍其中的几种优化。 优化一:Simulcast 所谓Simulcast,就是在一路视频里提供多个分辨率的视频流,订阅方灵便依据须要订阅想要的视频流。典型的就是在会议场景的利用,如下图: 如果没有Simulcast性能,假设须要720P的视频,在这个场景里,发送方须要发送/压码一路720P视频,接管/解码4路720P视频,带宽和性能压力十分大。如果减少了Simulcast能力,同时可能发送720P/180P的视频。在这个场景里,发送方通常只有发送/压码180P视频,接管/解码1路720P视频,接管/解码3路180P视频。带宽要求和性能要求降到了原先的1/4左右,而成果是齐全一样的。 WebRTC的Simulcast性能,并不是由WebRTC团队实现的,而是一个第三方开发团队开发,并merge到WebRTC里去的。要开启它,须要开启一个实验室接口,而后在Video quality control里更改相应的源码能力失常运行。配合下层的信令,就能做到灵便订阅了。 优化二:__视频硬件编解码 通常,视频硬件编解码会比软件编解码性能开销更低。无论在日常应用还是上高清分辨率(比方1080P)都有很重要的作用。WebRTC的硬件编解码性能不够残缺,为了能用起来,咱们在整条门路中做了不少事件。如下图: Android端次要是硬件的碎片化引起,iOS端次要是偶发的解体引起。碎片化靠下发白名单来解决(只对认证过的硬件启用),偶发解体靠收集线上信息来限度特定版本/特定机型来解决。两个挪动端都有偶发失败的问题,所以设计了一个失败时的回退机制,免得视频卡住的景象产生。最初再补完simulcast逻辑,就实现了这个硬件编解码的反对。 以上的优化,基本上是大部分场景都能够实用的,但也有些优化要看具体场景确定。这就好比不同的人口味不一样,有人喜爱辣,有人喜爱原味,做不到一套办法搞定所有的食客,于是咱们做了定制化的优化来进行适应。 优化三:__Audio profile Audio的优化做了很多,这其中挑了一个Audio profile的优化来讲。语音场景里,须要的编码码率不太高,而娱乐场景里(比方播放伴音歌曲的),对码率要求就高很多了,不然会失落音质。码率要求高了对网络要求也会高,所以为了应答不同的场景,audio的采样数/声道数都是不一样的。音频硬件又是形形色色,能力不对立,如果采集上来的数据不适合,就须要做重采样反对。同时codec的偏向也做了speech和music的辨别,以适应不同的须要。WebRTC原先的设计里,根本只思考了语音,跟娱乐场景相干的局部都须要优化反对。同时,为了可能兼容更多的音频解决/更差性能的机器,咱们在优化过程中,将播放/采集线程进行了拆散,相当于硬件要求升高了一半。 优化四:__传输策略优化 传输策略要关照实时性/清晰度/晦涩度三个维度,现实中的优化当然是三个都做得更好,惋惜这三个维度是互为掣肘的。如下图所示: 这三个点里,一个点增强了,其余点会被影响。举个例子:实时性要求很高,那缓存工夫就得升高,这时候如果呈现网络抖动,很可能会卡顿,流畅性就受影响。所以想要同一个策略满足不同的需要不太事实。在我的项目实际中,咱们依据不同的场景,设置不同的策略,来满足不同偏向的需要。 通信场景个别对实时性要求高。举个例子,你跟他人语音聊天,隔了一秒钟才听见对面的声音,那么两个人的聊天很容易“打架”,相互抢着发言。如果是多人语音聊天,那这个景象就更加重大了。娱乐直播场景对清晰度要求很高,但却能够承受较高的延时。所以咱们在实际过程中给予了不同的策略反对,就好比做不同口味的饭菜来满足不同人的口味。 以上就是网易云信在构建音视频引擎过程中的一些实践经验,在此分享给大家,心愿能给有趣味的同学参考。

November 16, 2020 · 1 min · jiezi

关于视频:谁说AI看不懂视频

摘要:人工智能在视觉畛域倒退趋于成熟,基于人工智能的视频内容分析能从根本上解决传统内容分析方法性能低下的问题,视频剖析开启2.0智能时代。视频数据量激增,数据处理和内容经营老本居高不下云计算、大数据、物联网、人工智能等信息技术飞速发展及传统产业数字化的转型,一方面媒体数据量出现几何级增长,据IDC预测,寰球数据总量预计2020年达到44ZB,我国数据量将达到8060EB,占寰球数据总量的18%;另一方面,媒体的生产、流传和生产模式降级。巨量数据中,70%将会以图片和视频的模式存储和流传。这些数据从生产、流传到用户生产,传统形式经营老本居高不下。人工智能在视觉畛域倒退趋于成熟,基于人工智能的视频内容分析能从根本上解决传统内容分析方法性能低下的问题。AI助力,视频剖析将全面进入智能时代。 视频从生产到生产全流程智能化视频从生产到生产的全流程降级,如图1所示。 图1 视频生产、编辑、散发和生产流程降级 华为云EI助力视频剖析全面进入智能时代。 生产视频采集,从业余设施到挪动终端,视频内容采集大众化。华为云EI在采集阶段可提供美颜、个性化等特效解决技术,助力视频采集即解决。内容审核,用户采集内容上传存储前,华为云EI提供视频内容智能审核能力,包含视频品质评估、黄/暴/恐甄别、反复/类似甄别及版权指纹剖析等,解决反复/疑似不平安内容进入流传流程。 编辑结构化分析,华为云EI针对各种类型的长、短视频,提供智能结构化分析,将视频以镜头、内容片段等结构化模式进行形容,便于后续的内容分析、存储和散发。内容分析,对结构化示意的视频内容,华为云EI从场景辨认、主体辨认、行为/事件检测、语音/文本剖析及内容形容等方面对其进行智能化剖析,反对多保护内容查问和检索。智能编辑,基于智能内容分析,初步提供以下智能视频编辑技术:(1)视频拆条 相比拟长视频,短视频更有利于在互联网流传,对传统媒体的节目进行拆条是不可或缺的。华为云EI基于人物、场景、语音、OCR字幕等多模态信息剖析技术,疾速准确地把长视频宰割成不同主题的片段。面向海量多媒体视频,大幅提高视频辨认、剪辑、检索等解决的效率,升高人工经营的老本。整体效率绝对人工晋升10+倍,新闻类视频拆条准确率超过95%,特定场景准确率超过98%。 (2)视频摘要 动态摘要,基于视频镜头变换、内容了解技术,华为云EI针对不同类型的长、短视频提供视频动态摘要服务,可能将1个小时视频压缩成5分钟的摘要内容,可用于经营管理人员的内容疾速浏览及用户疾速内容播放。 视频稀释,应用背景建模、主体检测、静止轨迹跟踪、前/背景交融技术,华为云EI提供视频稀释服务,将极长的视频中的事件提取进去,稀释到较短的视频片段,便于视频内容中事件的疾速观看。 (3)视频封面 基于视频镜头变换、内容了解和剖析技术,疾速提取内容相干、构图柔美的关键帧作为封面吸引用户进一步观看。相比于人工选取封面,智能封面选取速度进步20+倍,大幅升高经营老本;同时精彩的封面可能吸引用户的留神,大幅提高视频点击率。 (4)视频内容标签 视频OCR,视频物体辨认,视频人物辨认,从多维度对视频内容进行提取,将非结构化的视频文件,转换为结构化的数据,为视频搜寻,视频举荐,视频经营等提供了必不可少的信息。 (5)水印解决 用户上传的内容除了新采集的视频,还有很大一部分为已有视频的从新流传。而反复流传的这部分视频极有可能曾经打上了不同的水印。为了便于企业内容治理,华为云EI提供水印检测和解决技术,可能智能检测水印地位、重构水印并对水印进行解决。 (6)音视频指纹 视频指纹具备极大的应用场景,包含:(1) 对用户上传的内容进行反复检测;(2) 可对内容进行版权追踪;(3) 反对多维度、多粒度内容存储和检索; 华为云基于音频、视频内容分析技术,提供音、视频指纹生成、存储及检索技术。 (7)主动唱词 在新闻媒体、教育等畛域往往只有视频和对应的音频信息,主动唱词技术能够依据视频主动增加字幕,相比人工增加字幕,能够极大进步视频公布的及时性,进步生产效率。 散发,基于前述的视频结构化和智能剖析,视频内容可依照多维度进行存储,联合用户行为日志剖析,反对疾速检索和关联举荐,将内容以最快的速度推送到相应的用户。生产,在用户生产视频的过程中,华为云EI提供主动评论及交互播放技术计划,晋升终端用户体验。人工智能正在进入以标准化、自动化、模块化为特点的工业大生产阶段。AI会将人类社会带入智能时代。本文针对视频从生产、编辑、散发到生产的整个过程如何实现智能化,进行了技术剖析,心愿能为对AI感兴趣的小伙伴们指点迷津,也为始终苦于传统经营模式下的你关上场面。 点击关注,第一工夫理解华为云陈腐技术~

October 22, 2020 · 1 min · jiezi

关于视频:后疫情时代华为云会议如何定义未来会议

摘要:有着超过20年视频会议产品研发教训的华为云会议来说,华为做的视频会议零碎有点不一样。疫情过后,火了什么?视频会议零碎! 不可否认,疫情让很多人晓得了视频会议,并在相当长的一段时间成为了咱们工作生存的必需品。时代的弄潮儿们,怎么可能不乘上这波东风呢? 视频会议零碎如雨后春笋般涌现在公众视线,作为大厂个性化解决方案的对外输入,每个厂商视频会议软件的广告宣传侧重点各有不同,作为有着超过20年视频会议产品研发教训的华为云会议来说,华为做的视频会议零碎有点不一样。 华为云会议更加高清、稳固超过20年的音视频畛域摸索,华为云积攒了业界当先的音视频媒体解决技术,领有更加高清、稳固的语音、视频、数据会议。华为云会议利用业界当先的OPUS音频编解码技术,实现80%音频抗丢包,30%视频抗丢包,实现端到端时延<200ms。H.265 4K视频编解码解决技术,让华为云会议能够在更大的屏幕上出现更精密的图像,从而让近程合作实现精细操作,让近程医疗等成为可能。业界惟一电脑端和手机端1080P的清晰度,让电脑和手机也能成为业余视频会议终端;独特的视频降噪,背景提亮,背景虚化以及虚构背景,人物美颜,提供更佳的视频画面成果。 端云协同,开启智慧办公新时代华为云会议反对电脑、手机、平板、智慧大屏、高清视频会议终端等全系列终端通过互联网接入,实现全场景的沟通合作空间,打造云时代的生产力工具,让人人享有智能化工作形式,开释组织效力,代表着一个新时代的到来。 全场景多屏互动体验,实现会议室与挪动会议完满联合,让内外部会议无缝连接。在公司的会议室或者开放区用华为的企业智慧屏散会,长期有事不能到场的共事,能够通过电脑、手机、平板接入,仍然能够参加到会议中来。无论你在会议室、办公室还是在家里,还是在路上,随时随地都可接入会议,与团队进行互动交换。 丰盛的会议告诉华为云会议的会议告诉做的真的是很贴心了,会议可通过短信、邮件、微信分享,通过扫码、链接、输会议ID等多种形式一键入会。预约会议后,会议发一个会议告诉短信,告诉短信中蕴含入会链接,入会ID,间接点击入会链接或者在华为云会议客户端输出会议ID数字就能够进入会议。除此之外, 扫码邀会议室终端入会,大屏入会更便捷。 华为云会议还能够与Outlook日历联合,日历会议告诉揭示,从日历中一键入会。会议告诉、加入会议都是特地不便的。 疾速邀请内部联系人参会邀请参会时,可灵便增加企业内部邮箱和手机号,不仅邀请参会不便,还能够更好的治理客户和搭档信息。而且华为云会议app未登录状况下,点击会议链接就会弹出主界面并且匿名入会,实现跨企业沟通的需要。 数据共享,多方标注,让合作更高效华为云会议能够抉择分享屏幕上的所有内容或仅分享某一窗口,这使您领有对桌面可见性的齐全管制并保障了您的隐衷。通过共享屏幕,您能够向敌人、共事或客户演示设施上的任何媒体内容,而无需发送任何文件,这包含演示文稿,文档,图像,甚至视频。反对多人在线实时标注,这探讨更加高效。 扫一扫带走白板会议纪要当初越来越多的公司散会都开始应用电子白板,通过华为云会议扫一扫就能够将白板上的会议纪要带走,免去了之前纸质缮写会议纪要、手机照片保留会议的麻烦。 业界最佳投屏华为云会议反对极速传屏,音视频皆可共享。多种无线投屏形式可供选择,通过碰一碰、输出投屏数字、连贯投屏器均可投屏。能够多人同时投屏,大屏上分屏演示,比照查看一屏到位。 在大屏上还能够对小屏进行反向管制,如PPT翻页等,能够间接在大屏上操作;还有特地贴心的反向投屏性能,当你坐在边远的培训教室的前面,无奈看清讲台大屏上的内容时,应用反向投屏,将讲师展现的内容反投到本人的电脑上,发明出本人的小教室,是不是很神奇? 业余会控,让会议居然有序华为云会议反对会议画面灵便布局,让重要的人永居C位;反对整体静音还能够实时定位发言人,实现会前、会中高效治理会议秩序。 华为云会议更加安全可靠华为云会议反对共享水印,避免会议泄露,爱护会议隐衷。华为云会议从牢靠、可用、平安、韧性,隐衷、有害6大个性塑造产品安全可信,可用性SLA>99.95%,端到端实现产品生成过程可信。同时人造具备了华为云的安全可靠能力,从云端防护、管道传输平安、端侧接入等方面都构筑了全方位的安全可靠能力。 华为云会议产品设计始终从爱护企业数据与信息安全角度登程,提供多重平安个性。一企业一租户,租户数据隔离;通讯录、会议录制文件等用户数据加密存储; AES256加密算法,防窃取破解;反对锁定,无关人员无奈入会等。 华为云会议领有更强的云会议保障团队华为作为泛滥大型会议的技术支持单位,提供业余的会议保障服务,有着丰盛的重大会议保障教训,疾速响应,依据会议制订专属接入计划,具备欠缺的应急预案与办法,防止会议呈现问题或者呈现问题后准备应答措施。 在疫情期间,华为云会议屡次撑持了国家商务部、多地省市政府、卫健委、医院与抗疫一线医疗队之间,国家卫健委、税务总局、国家能源团体、国家邮政团体、民航局等企业的视频会议。不仅如此,华为云会议还针对数字政府、智慧教育、数字金融、智慧医疗、交通制作修建等各行业提供了更加欠缺的专属音视频会议解决方案。 华为云会议已上线套餐模式,目前分为免费版、专业版、企业版三个版本,三个版本的性能及免费均有所不同,当你试用免费版的感觉还不错,能够无缝降级到专业版及企业版。如果你正在筛选视频会议产品,不如就试试华为云会议吧! 收费注册即可取得华为云会议永恒(25方并发,及1个及硬件接入)收费会议套餐服务 华为云会议产品体验官炽热征集中,领先体验华为云会议新产品和新性能 点击关注,第一工夫理解华为云陈腐技术~

October 14, 2020 · 1 min · jiezi

关于视频:无差别视频提取工具

背景之前笔者实现了m3u8 视频在线提取工具,可对 m3u8 视频进行提取,合并,下载。实现整个视频下载流程。后续还实现了非定制性的 ASE 解密性能(不提供定制性服务,定制性解密,属于破解,侵权行为,需尊重知识产权)但上述工具仍存在肯定的通用性问题。为彻底解决通用性,实现无差别视频提取,开发了这个工具。特点长处,通用性强,无差别提取,只有应用到 MES 支流媒体播放技术的视频,均可捕捉。长处,足够简略,在视频播放的最初一个步骤进行拦挡,躲避视频加载,加密,解密等简单过程。毛病,被动,无奈被动干涉视频加载,只可被动捕捉视频资源。毛病,有肯定门槛,依赖 chrome 浏览器开发者模式,无奈实现全自动化,有肯定应用门槛。应用示例链接性能阐明 【已捕捉 0 个片段】 显示程序已捕捉的视频片段数。【下载已捕捉片段】 能够强制下载曾经捕捉的片段,无需期待整个视频全副捕捉实现。【十倍速捕捉】 因为视频捕捉是依赖视频加载进度的。点击该按钮,能够十倍速播放,减速视频加载,减速视频捕捉。当视频全副加载实现,将触发主动下载。 若无触发,可手动点击「下载已捕捉片段」按钮,对捕捉到的视频进行下载。应用形式示例试验链接 复制工具代码 能够间接复制本文中的外围源码也能够点开示例试验链接,点击按钮,疾速复制工具代码。关上目前页面的控制台ctrl + f ,输出 <iframe,判断是否存在 iframe 内嵌页面。若存在 iframe,请看完本阐明,再持续查看下一节「iframe 解决方案」。若无,则下一步关上代码调试面板在调试面板中,找到以后页面的代码 留神文件的寻找办法,需依据 URL 中的门路层级寻找。点击下方按钮,对代码进行排版。 搜寻,找到第一个 <script 标签,并设置多个断点 搜寻,如果第一个 <script 标签是一个链接。则找到对应文件,设置断点。刷新页面,呈现如下状态,则证实断点设置胜利 若页面白屏,为失常景象,依照步骤继续执行即可。 在 console 栏,粘贴工具代码,回车 回到 source 栏,点击按钮,复原运行 若页面呈现这几个按钮,则证实注入胜利,工具运行胜利 失常观看视频,期待视频捕捉 可点击「十倍速捕捉」,接口视频播放速度,放慢视频捕捉速度。若页面呈现如下弹窗,即捕捉实现,视频主动下载(也能够点击「下载已捕捉片段」,手动下载) 视频下载实现,失去「音频」文件,「视频」文件 可应用专属播放器,进行播放。也能够应用其余工具,进行合并。iframe 解决方案示例试验链接 找到 iframe 标签,复制 src 中的 url,新建页面关上该 url。 如果该新建页面能失常播放视频,则在该新建页面,应用上述「应用阐明」即可。如果新建页面没有失常播放页面,则回到原页面,换一种形式实现。回到原页面,找到 iframe 内嵌页面的源码。 同样搜寻 <script,但这一次,要找带 src 的 script 标签找到该 src 对应的文件,并打断点刷新页面,并在源文件中,插入代码 留神,打断点和插入代码是在不同的栏,打断点的栏中,有「:format」标识。插入代码的栏,没有该标识。 粘贴代码,ctrl + s 进行保留复原执行(操作形式,查看上一节「应用阐明」)实现代码插入,捕捉视频特地阐明在代码操作过程中,页面白屏是失常的,依照步骤继续执行即可。如果不行,装置应用阐明,多试几遍就能够了。可能是视频广告导致。留神 Chrome 的多文件下载询问,如果回绝过,须要从新关上。视频捕捉,分为「视频」文件与「音频」文件,「视频」文件是纯视频,没声音的。须要搭配「音频」文件播放。点击这里,应用专属播放器。专属播放器因为采集工具是独自对「视频」和「音频」离开采集的。应用一般播放器可能无奈失常播放。可利用本工具同时加载「视频」和「音频」同步播放。本工具还附有倍速播放性能。原理支流视频媒体播放技术,均应用到 MES 技术MES 技术播放流程个别如下: ...

September 30, 2020 · 2 min · jiezi

关于视频:前端面试每日-31-第531天

明天的知识点 (2020.09.28) —— 第531天 (我也要出题)[html] H5的video能够播放哪些类型的文件?能够播放rtsp流吗?[css] 请说说width: auto和width: 100%有什么?区别[js] 写个办法获取给定开始和完结工夫的所有日期和月份[软技能] 你认为沟通和技术哪个更为重要?《论语》,曾子曰:“吾日三省吾身”(我每天屡次检查本人)。前端面试每日3+1题,以面试题来驱动学习,每天提高一点!让致力成为一种习惯,让奋斗成为一种享受!置信 保持 的力量!!!欢送在 Issues 和敌人们一起探讨学习! 我的项目地址:前端面试每日3+1【举荐】欢送跟 jsliang 一起折腾前端,零碎整顿前端常识,目前正在折腾 LeetCode,打算买通算法与数据结构的任督二脉。GitHub 地址 微信公众号欢送大家前来探讨,如果感觉对你的学习有肯定的帮忙,欢送点个Star, 同时欢送微信扫码关注 前端剑解 公众号,并退出 “前端学习每日3+1” 微信群互相交换(点击公众号的菜单:交换)。 学习不打烊,充电加油只为遇到更好的本人,365天无节假日,每天早上5点纯手工公布面试题(死磕本人,愉悦大家)。心愿大家在这虚夸的前端圈里,放弃沉着,保持每天花20分钟来学习与思考。在这变幻无穷,类库层出不穷的前端,倡议大家不要等到找工作时,才狂刷题,提倡每日学习!(不忘初心,html、css、javascript才是基石!)欢送大家到Issues交换,激励PR,感激Star,大家有啥好的倡议能够加我微信一起交换探讨!心愿大家每日去学习与思考,这才达到来这里的目标!!!(不要为了谁而来,要为本人而来!)交换探讨欢送大家前来探讨,如果感觉对你的学习有肯定的帮忙,欢送点个[Star]

September 28, 2020 · 1 min · jiezi

关于视频:超酷-Atlas给黑白视频上色

摘要:随着人工智能技术倒退,AI曾经可能为黑白的老视频 “上色”,重现今日的情景,让黑白图像变得栩栩如生。怎么样,是不是看起来题目跟昨天的博客名称差不多?昨天是图片,明天是视频。从情理上说,将视频中的图像一一抓取,上色,合起来就是视频了。。。(我猜原理就是这样的) 所以,让咱们把18.04的quick-start的demo折腾完吧。这次是依据 https://gitee.com/lovingascend/quick_start/blob/master/Atlas200DK_separate_MD/video_sample.md ,将视频给上色了。 闲话少说,咱们依照阐明来,应用”开发环境穿插编译第三方库,再将第三方库导入运行环境,提供运行调用“的办法。 先在虚拟机环境装presentagent: 而后顺次照做: bash configure make -j8(编译的工夫会有点长。。。) sudo make install 上面编译arm版本的so,为迁徙到开发板做筹备: make distclean ./configure --build=x86_64-linux-gnu --host=aarch64-linux-gnu --with-protoc=protoc make -j8(急躁地等编译完结。。。) sudo make install 上面到运行环境同步方才编译好的第三方库: 留神这里手册有个bug:(scp须要加上一层arm目录),否则会找不到文件:scp $HOME/ascend_ddk/arm/lib/libpresenteragent.so HwHiAiUser@192.168.1.2:/home/HwHiAiUser 而后登录开发板,再拷贝so文件: 咱们再做最初的一步,获取视频我的项目: 回到虚拟机的开发环境: unzip colorization_video.zip 解压 建好目录,下载模型和权重文件:(如同跟上次是一样的) 回到MindStudio.敞开原来的工程并关上新下载的工程: 上面的步骤跟上次图片上色的那个根本是统一的:转换模型,加载模型到我的项目中,编译,运行。。。 个人感觉模型转换能够省略,因为图片上色的时候曾经做过了。这次仅仅抉择了加载。 查看下虚构网卡的地址 192.168.1.223 以及 script/presentserver/display/config/config.conf中的presenter_server_ip 是否对应: 没问题。 再查看 src/colorize_process.cpp 106行地址是否跟后面对应: ...

September 11, 2020 · 1 min · jiezi

关于视频:视频会议专线部署不会别急我教你

业务场景及诉求1、企业心愿部署welink视频会议,然而各分支机构共用一个公网进口,如果通过公网拜访应用云上的welink视频会议,当企业外部视频会议终端海量接入时,每路视频都须要占用肯定的带宽,对企业总部的公网进口总带宽要求十分高。心愿能解决会议业务进口带宽压力过大的问题。 2、如果通过公网拜访,还存在提早高,网络抖动不稳固的因素,无奈保障稳固的高清视频会议。心愿保障和晋升会议业务的品质。 计划背景1、Welink业务部署在华为云上,通过EIP对外提供服务,包含WeLink媒体EIP、利用EIP及会控EIP。装置welink客户端的主机须要和这些EIP进行通信实现视频会议的业务 2、welink业务部署在华为云上,通过在云专线买通IDC和华为云VPC,使视频业务流量通过专线上云,网络传输更稳固,能够防止公网高提早、抖动不稳固的毛病。 计划介绍1、 在IDC进口的物理设施搭建云专线和云上VPC对接。将视频会议的业务流量通过云专线引到云上。 2、 同region的EIP互访,不波及公网链路。在云上配置NAT网关,增加对应的SNAT规定,通过NAT网关的地址转换,使IDC内的机器具备拜访EIP的能力。IDC内的视频业务流量上云后,通过NAT网关和welink服务进行通信。 图1 网络拓扑 阐明: 1、云专线保障IDC进口设施到WeLink服务VPC之间的网络品质 2、倡议优先将专线接入到北京四 3、IDC进口和云专线对接的路由器须要反对BGP协定,且反对至多200条的路由学习 配置步骤1.实现物理连贯接入物理连贯由“专线”与“端口”组成,华为云间接提供专线接入的端口,专线局部须要向运营商洽购和部署,具体操作步骤请参考《物理连贯接入》 2.创立VPC和VPC网段创立VPC请参考《虚构公有云用户指南》。各VPC子网网段请勿抵触。 a.IDC:192.168.3.0/24 b.华为云:192.168.4.0/24 3.配置专线a.虚构网关配置 导航栏抉择“云专线 > 虚构网关 ”,在虚构网关页面,创立虚构网关,在“创立虚构网关”对话框中,输出对应的参数;同时还要为IDC拜访Welink的公网IP增加路由。因而虚构网关的本端子网为192.168.4.0/24,EIPB/32, 如图2所示。具体步骤请参考创立虚构网关。 图2 虚构网关配置 此处只做示范增加了三个须要拜访的Welink公网IP,理论须要增加全副拜访Welink的公网IP,包含WeLink媒体EIP、利用EIP及会控EIP。本端子网最多反对增加50个网段,以“,”隔开。 b.虚构接口配置 导航栏抉择“云专线 > 虚构接口 ”在控制台虚构接口页面,创立虚构接口,在“创立虚构接口”对话框中,输出对应的参数。配置参数请参见表1。 图3 虚构接口配置 单击“提交”,当所创立的虚构接口状态列为“失常”时,实现虚构接口的创立。 阐明:  客户配置本地侧网络,本地侧的本端子网和远端子网要与云上互成镜像。  专线配置好后,须要配置IDC路由,将流量指向云上。 4. 购买弹性公网IP并配置NAT网关a.购买弹性公网IP 具体步骤请参考购买弹性公网IP,这里购买弹性公网IP后,无需绑定云主机。 b.购买NAT网关 在云上购买NAT网关,登录网络控制台,在服务列表中抉择“NAT网关”,点击页面右上方“创立NAT网关”。 图4 Nat网关界面 依据界面提醒,配置NAT网关的根本信息,配置参数请参见表2。 配置实现上述信息,会显示NAT网关配置费用,可通过“理解计费详情”查看计费信息。 c.增加SNAT规定 NAT网关创立胜利后,您能够为NAT网关增加SNAT规定。通过增加SNAT规定,云专线IDC侧的服务器能够通过共享弹性公网IP拜访互联网。 一个网段对应一条SNAT规定,如果云专线IDC侧有多个网段中的服务器须要拜访公网,则能够通过创立多个SNAT规定实现共享一个或多个弹性公网IP资源。 单击须要增加SNAT规定的NAT网关名称,在SNAT规定页签中,单击“增加SNAT规定”。 图5 配置SNAT规定界面 依据界面提醒,配置增加SNAT规定参数,详情请参见表3。 阐明:  依据业务需要,能够为一个NAT网关增加多条SNAT规定 ...

August 7, 2020 · 1 min · jiezi

移动端自动播放视频之TS视频

ts简介TS(Transport Stream,传输流)是一种封装的格式,它的全称为MPEG2-TS。是一种视频格式,一般用于实时流媒体和广播电视领域。 Ts与Mp4优势对比Mp4在IOS下可以自动播放,但是在部分安卓机下无法自动播放产生黑屏。Ts可实现自动播放,IOS8以上和Android4.4以上都支持。基于自动播放的优势,本妹子在本厂的618大促主会场及各个活动需求上就用了Ts技术。 生成ts视频需要下ffmpeg来将Mp4转化成Ts视频。下面下载操作如下所示:mac下可以运行 brew install ffmpegwindows下可以在https://ffmpeg.zeranoe.com/builds/中下载。 然后用ffmpeg 转化 ffmpeg -i in.mp4 -f mpegts -codec:v mpeg1video -codec:a mp2 -b 0 out.ts还可以控制视频大小(-s),帧速率(-r),视频比特率(-b:v),音频比特率(-b:a),音频通道数(-ac),采样率(-ar ) 以及更多。 有关详细信息,请参阅ffmpeg文档。如下所示 ffmpeg -i in.mp4 -f mpegts \ -codec:v mpeg1video -s 960x540 -b:v 1500k -r 30 -bf 0 \ -codec:a mp2 -ar 44100 -ac 1 -b:a 128k \ out.ts注意:尽量用高质量的MP4来转成Ts,如果在手机上显示,采用比特率1500k即可。ffmpeg -i in.mp4 -f mpegts -codec:v mpeg1video -b:v 1500k -codec:a mp2 out.ts播放ts视频推荐用jsmpeg-player,它是基于jsmpeg封装的npm包。最好准备一个封面,将视频盖住,等视频播发再去掉封面,详情如下: import React, { useEffect, useState, useRef } from 'react';import './index.less';import JSMpeg from '@cycjimmy/jsmpeg-player';export default function VideoTs(props) { //封面 const cover ='https://img11.360buyimg.com/imagetools/jfs/t1/105707/30/17596/32160/5e8c8ae6Ee2bfd8db/1ef4084de9ec103f.jpg' const tsSrc='https://storage.360buyimg.com/xingdianzhang/%E6%B5%8B%E8%AF%95ts.ts' const hdVideo = useRef(null); var [isCover, setIsCover] = useState(true);//是否用封面覆盖 useEffect(() => { initTs() }, []) function initTs() { let canvas = hdVideo.current.querySelector('.hdVideo-ts'); canvas.style.width = '0px' new JSMpeg.VideoElement(canvas, tsSrc, { canvas, autoplay: true, loop: true, progressive: false,//是否为chunk control: false, poster: cover, preserveDrawingBuffer: true, decodeFirstFrame: true, disableGl: true, }, { audio: false, //静音 onPlay: () => { canvas.style.width = hdVideo.current.clientWidth + 'px' setIsCover(false) } }) } return ( <div ref={hdVideo} className='hdVideo'> {isCover ? <img className="hdVideo-image" src={cover} /> : null} <canvas className="hdVideo-ts"></canvas> </div> );}<!--index.less-->.hdVideo{ width: 750px; height: 400px; .hdVideo-image{ width: 100%; height: 100%; } .hdVideo-ts{ width: 100%; height: 100%; }}注意的坑兼容性问题Ts存在兼容问题,系统版本 < android7 || 系统版本 < ios 11, Ts不兼容,可以以图片第一帧为兜底图片 ...

June 18, 2020 · 2 min · jiezi

极链科技张奕消费级视频内容识别的算法设计与应用

近几年,视频行业迎来了井喷式爆发,随着人工智能技术的逐渐成熟,用户体验不断升级。 在观看影视剧、综艺等视频时,我们总能在画面中看到跟视频场景相关的广告,比如当出现地标性建筑时,会出现旅游相关广告;当观看明星真人秀节目,会有同款服饰的购物链接。在这背后,是智能视频识别技术发展的成果。 近期,极链科技AI研究院资深研究员张奕在智东西公开课上进行了主题为《消费级视频内容识别的算法设计与应用》的讲解,从视联网产业简介、智能视频技术应用于消费级视频的挑战、数据的重要性与VideoNet视频数据集、视频内容识别的算法设计与应用四大模块进行了分享。 以下为分享实录: 在5G和AI的加持下,互联网演进出三大形态,物联网,视联网和车联网。目前视频占据了全网数据的80%,且仍在不断提高。视频将成为互联网最重要的入口,承担起信息传递介质和互联网功能载体的作用,进而形成以视频作为主要信息传递介质和功能载体的互联网形态,视联网。庞大的消费级视频是视联网的首个落地场景。 作为「AI+视频」行业独角兽企业,全球视联网开源操作系统构建者,极链科技专注于消费级视频AI技术研发和商业应用,聚焦以视频作为信息和功能核心载体的新互联网形态——视联网。以AI技术赋能视频中的信息,链接互联网信息、服务、购物、社交、游戏五大模式,实现基于视频的新互联网经济体。极链科技自主研发的VideoAI是视联网整个生态的底层引擎,VideoOS为视联网底层操作系统,是继PC时代Linux系统和移动互联网时代安卓系统之后的第三大操作系统。以VideoAI、VideoOS为基础,开发出广告、电商等各类视联网应用。 视联网的基础数据即视频,尤其是消费级视频。区别于工业级视频是利用专业设备在固定条件、固定场景下拍摄的视频,如监控视频。消费级视频是指用户用手机等便携式图像采集设备生成的视频。消费级视频有三大特点。一,消费级视频数据体量巨大;二,消费级视频的类别多样,如电影、综艺、体育、短视频等;三,消费级视频场景复杂,如场景内的特效、切换、淡入淡出和字幕,都会对整体或局部产生模糊。以上特点对视频识别算法提出了更高的挑战。 视频识别算法本身有较长的历史,然而受到计算能力的限制,算法各项性能与产品商业化要求间还存在较大的差距。直到2012年,深度学习技术、大数据及GPU算力的结合极大提升了算法准确率和运算效率,拉低了与产品商业化要求的差距。 众所周知,深度学习的成功建立在大规模数据集的基础上。现有视频数据集从规模、维度和标注方式上都与深度学习算法的要求存在很大差距。今年,极链科技与复旦大学联合推出了全新的VideoNet视频数据集,具备规模大、多维度标注、标注细三大特点。 第一,规模大。VideoNet数据集包含逾9万段视频,总时长达4000余小时。 第二,多维度标注。视频中存在着大量的物体、场景等多维度内容信息,这些维度内容之间又存在着广泛的语义联系。近年来涌现出大量针对物体、场景、人脸等维度的识别技术,在各自的目标维度上取得了明显的进步。但各视频识别算法基本针对单一维度来设计的,无法利用各维度之间存在的丰富的语义关联建立模型,提高识别准确度。VideoNet数据集从事件、物体、场景三个维度进行了联合标注,为多维度视频识别算法研提供支持。 第三,标注细。视频标注工作量非常巨大,当前大部分视频仅针对整段视频打标签。而VideoNet数据集对视频进行了事件分类标注,并针对每个镜头的关键帧进行了场景和物体两个维度的共同标注,充分体现了多维度内容之间的语义联系。 那么,VideoNet数据集是如何进行标注的?首先,对视频数据进行预处理,即镜头分割,并根据清晰度对镜头单元进行关键帧提取。之后从三个维度进行视频标注,事件维度上对整个视频标注类别标签,物体维度上对镜头关键帧标注类别和位置框,场景维度上对镜头关键帧标注类别标签。目前,VideoNet数据集包含353类事件,超过200类场景和200类物体,总视频数达到9万。其中60%作为训练集,20%作为验证集,20%作为测试集。 自6月18日「VideoNet视频内容识别挑战赛」公布训练和验证数据集以来,截止到8月12日,注册报名的队伍已超过360支,其中参赛队伍当中有来自中科院、北京大学、中国科学技术大学等顶尖高校队伍以及来自阿里巴巴、京东、华为、腾讯、大华等众多知名企业队伍。预计明年,极链科技将会继续增加VideoNet数据集的规模和标注维度。 消费级视频的数据特点,对算法系统的处理速度、效率和准确率提出了较高的要求。消费级视频算法的总体框架分为五层:1、视频输入层进行视频源的管理;2、视频处理层进行镜头分割、采样、增强和去噪等工作;3、内容提取层主要分析视频中内容、语义等信息,进行目标检测、跟踪和识别等来检测目标在视频中的时间、空间、位置等维度;4、语义融合层进行目标轨迹融合、识别结果融合、特征表示融合、高层语义融合等;5、在数据输出层,进行结构化数据管理,方便后续数据检索与应用。 视频内容识别维度多样,包括场景、物体、人脸、地标、Logo、情绪、动作、声音等。不同维度的算法结构有所区别。人脸识别算法结构为:输入视频后进行镜头分割,在进行人脸检测、跟踪、人脸对齐,根据质量评估过滤,进行特征提取和特征比对识别,最后进行识别结果融合,输入最终识别结果。 在场景识别算法结构中,首先对输入视频进行镜头分割采样,有所不同的是只需进行时间间隔分割的采样,再对视频进行场景类别的初分类,预处理之后进入卷积神经网合阶段,卷积神经网络通过对不同的数据集进行预训练,得到不同的特征和描述,将这些特征进行融合、降维处理得到特征表示后,对不同场景如高频场景、次级场景和新增场景,进行分类处理,最终对识别结果进行融合。 在物体、Logo识别算法结构中,有所不同的是需要多尺度提取特征,跟踪识别物体轨迹,并关注物体类别,对结果进行优化。 在地标识别算法结构中,分为三步,第一,通过基础网络(VGG,ResNet等)获得特征图(一般为最后一层卷积或池化层);第二,从特征图中提取特征(例如R-Mac,SPoC,CroW,GeM等)并用ROI Pooling,PCA 白化,L2-归一化等方式处理,一般最终维度为256,512,1024,或2048;用kNN,MR,DBA,QE,Diffusion等方式将得到的特征对数据库内的特征进行后处理获得最终特征;训练模型一般损失函数采用contrastive loss或triplet loss,最终比对一般采用余弦或欧式距离。 我们自主研发的算法主要做了以下优化:1. 对基础网络进行多层的特征提取(而不局限于全连接的前一层)并融合,降维等。2. 采用CroW算法的核心思想对特征图的不同空间点以及channel增加权重,不同于CroW算法,我们的权重是通过端到端方式学习所获得。在2018、2019年Google地标识别挑战赛中,极链科技AI研究院蝉联了两届全球冠军。 下面,介绍一下视频检索,也就是以图搜视频的流程。以图搜视频可以分为两部分,一部分是通过视频深度图像检索构建视频数据库,另一部分是用户检索时,输入图像到第一部分的视频库中进行检索。 具体来看,首先通过视频下载、视频数据库检索、特征提取、特征排序等生成一个特征表述数据库,当用户需求输入后进行特征提取、比对、排序和结构展示。这是标准的检索流程。在算法结构方面,用户输入后会经过卷积神经网络和索引得出粗检索结果,再通过细检索进行排序、查询,最后输出镜头信息,另外也可以通过剧目信息进行子部检索减少搜索任务的压力,同时提高算法的准确率。 以图搜视频的核心在于我们自研的深度图像检索模型VDIR,由视频任务调度系统派发的视频分片,经过镜头检测分割成片段,片段信息经过VDIR会生成视频信息库、视频特征库以及哈希索引库。用户输入一张或者多张图像,同时可以指定剧目信息,比如古装剧、玄幻剧等,输入的图像经过VDIR算法提取到哈希编码和特征,首先会去历史检索库中查找是否有相似的检索,如果有直接使用特征即进行细匹配,没有就会先通过哈希编码到哈希索引库中检索,然后进行细匹配,根据匹配相似度进行排序后,从视频信息库中查询到视频片段信息,配合截图输出到界面。 深度图像检索模型VDIR会输出两部分内容,分别是用于快速检索的哈希编码以及用来细匹配的特征,一个片段的几个帧特征或者相邻片段的帧特征并不是都需要,因为我们设计关键帧筛选逻辑,只保留关键帧特征。 为了将以上算法实际落地,还需要进行工程化的工作。在工程化工作中,需要解决以下几个问题:1、算法进行并行化加速其运营;2、面对高并发状态解决分布式系统和多任务调度的问题;3、对资源调度进行算法分割与CPU+GPU配比;4、对高优先级任务规划处理策略。 最后,向大家介绍一下三个算法实际产业化应用的案例。 VideoAI视频智能识别和大数据运营系统,实现视频输入、识别、结构化数据管理和多维度检索全流程技术。极链科技独创独创全序列采样识别,对视频内的场景、物体、人脸、品牌、表情、动作、地标、事件8大维度进行数据结构化,32轨迹流同时追踪,通过复合推荐算法将内容元素信息升级为情景信息,直接赋能各种视联网商业化场景。 灵悦AI广告平台,通过VideoAI将全网海量视频进行结构化分析,对消费场景标签化,结合品牌投放需求,提供智能化投放策略和批量化投放,让用户在观看视频时有效获取相关品牌信息及购买,实现广告主精准投放的营销目的和效果。目前通过VideoAI技术的赋能,灵悦AI广告平台已完成2012年至今全网热门视频,实现扫描累计时长达15,600,000+分钟剧目复合双向匹配。开发了965类成熟商业化可投放情景,服务300+百家一线品牌,并与全网头部流量视频平台签订深度投放合作,实现广告创新营销的新动能。 神眼系统,广电级内容安全多模AI审核系统,可实现本地部署的高可用技术解决方案,提供长视频、直播、短视频的敏感、政治、色情、暴恐审核服务。产品核心功能包括:智能鉴黄(识别视频和图片中的色情、裸露、性感等画面);智能鉴暴(识别视频和图片中的血腥、暴力、枪支等画面);政治敏感人物识别(基于政治人物库,识别视频和图片中的国家领导人物或者落马官员等);涉毒/涉政明星识别(基于明星库,结合黑名单,识别视频和图片中的涉毒、涉政等明星)。 最后,想和大家强调一下数据对于人工智能发展的重要性。目前半监督、无监督算法还处于研究阶段,性能差距较大,我们所用AI算法大多基于监督学习,因此数据的体量和质量非常重要。我们要学会思考更多问题,例如采集数据与实际应用间的相关度,常规数据操作有哪些,如何获取“高效”的数据,如何应用数据管理工具让我们更好的管理、应用数据等等。谢谢大家!

October 16, 2019 · 1 min · jiezi

为什么推荐程序员录制课程

程序员的副业有很多种,唯独视频课程当下最为推荐. 从几年前写博客以来,一直主张的是技术分享和思维方式,个人成长始终是核心. 但是"恰饭"和成长并不冲突,两者互成因果,正向循环反馈,也是如写作一样,几乎零成本,意义巨大. 谈趋势 时势造英雄,很多时候成功不过是自己的一点基础恰好命中时代的需要,运气和努力都很关键. 博客时代已经落幕了十几年,现在还在坚持写的少之又少,短文字更加适合快节奏的社会步伐,所以有了微博. 娱乐至死的年代,有人热衷为明星打call,爱好花边新闻,有人想要深度思考,不想被人喂养投食,有人想要一夜暴富,功成名就,于是自媒体大行其道. 当浅薄的资讯已经无法满足人们之后,当整个信息环境已经稳固定型之后,资本需要新的渠道和新的收益的时候,知识付费应运而生. 学习打卡,社群人脉,读书健身,一切看起来自我成长的内驱力都被赋予了各式各样的理由,大部分人交了"智商税",少数人破蛹成蝶. 现如今短视频当道,流量经济全部往视频倾斜,各大巨头纷纷布局,反观公众号等自媒体,早已是明日黄花. 写作从博客到短文字再到自媒体,无非是换了一个又一个形式,本质上好的内容依旧是一切的基础,只是不太适合当下. 视频作为另一种载体,能够搭上知识付费尾巴和短视频顺风车的,对于程序员而言,录制视频课程,无疑是最佳选择. 谈成本 无论是程序员的个人品牌还是开发人员的副业刚需,反复提及的来来回回都是那么几个. 从时间成本和精力成本简单到困难的顺序来看,写作>录课>演讲>开发程序>出书. 近段时期算是尝试了其中一些 在视频平台录制了一些视频在网易云课堂上架了免费课程在google play等发布app在公众号运营自媒体,开始构思出书的整体框架和内容发现和当初一开始就选择个人独立博客一样,打造了一个信息孤岛,一个平台闭环,没什么流量和反馈,甚至键盘侠都没有几个. 比起写作而言,录制视频不会有内容枯竭的现象,很多人写作一开始很多可以写,写着写着就发现能写的都写完了,除非不断的输入大量的内容,不然就没有什么存货了,并且写作最不被推荐的就是写流水文,没有思想的内容是没有灵魂的. 但是视频不一样,视频本就是记录和展现,尤其是编程视频,无论是运行过程中的错误提示,还是解决问题的方法,或者是安装和下载的步骤,都是越还原越好,当然,如何设计课程,剪辑视频,PPT演示都是有很多技巧可言的. 谈规划 又到了程序员中年危机论的时候. 人到中年,程序员就应当考虑转管理或者自行创业了. 技术并不总是去写代码,创业也不止于软件产品. 在程序员职业路径中,有一种特殊的职业,叫做讲师,通俗点说就是培训班. 由于大学并没有设立编程开发相关的课程,K12也几乎是是一片空白,想要转行互联网,培训班是大多数人的选择. 又如同,学音乐的不见得举办演唱会,学画画的不见得办画展,学瑜伽的不见得就要做出点什么. 很多学习类的知识,除了应用于做事以外,有时候的用途就是学了去教,至于别人是继续教还是做什么,就不在考虑范围了. 课程是一个极其垂直类的产品,谈学习谈成长愿意为之付费和主动学习的少之又少,这种道理都懂却依然过不好这一生的事物,也没有人爱看了. 但是技术是一个硬需求,有就是有,少了一个标点符号都不能通过的那种,技术迭代,不断需要新的课程,职业也在一直演变. 从个人成长来讲,录制课程有助于记录自己的实时操作,整理自己的所学所为,以可视化的角度展现和分享给别人. 从职业规划来讲,中年转行讲师,或者将来演讲培训,都需要锻炼自己的口才和思维,录制视频是一个很好的起点. 从副业刚需来看,目前短视频经济,在线教育还没有如同软件一样需要软著和公司资质,把个人限制的全方位无死角,而付费课程恰巧能打通支付渠道,同时和写作一样也是复利的一种,并且更加具备专业性. 如果写作注重沟通的话,那么视频课程表现的更加专业,对提升行业影响力和求职也是不错的选择. 谈坚持试一试又不会错,也不会损失什么. 录制课程的成功或者失败,总会让你进步. 以上的所有内容仅为个人思考,具体的还是要看自己的时间和目标等因素. 自己录制了一些课程,有所付出,也有所收获. 有一门在网易云课堂的课程<<react native 从创建到发布>>就是体会到了热门的流量效果,没有推广也一直有学员,反而一些冷门的课程,再怎么推广也很少有人看. 写作,还是会继续坚持,它促使我不断的思考,输出倒逼输入,不断学习.从内而外成长. 录课,还是会继续尝试,看的到逐渐的进步,更为垂直的专业有助于职业学习和发展.

October 1, 2019 · 1 min · jiezi

前端面试每日-31-第168天

今天的知识点 (2019.10.01) —— 第168天[html] 你知道有哪些常见的视频(音频)编码格式和视频(音频)格式吗?[css] 怎么去掉点击a链接或者图片出现的边框?[js] 如何解决在手机上长时间点击会选中图片?[软技能] 写js代码时你喜欢哪种命名方式?《论语》,曾子曰:“吾日三省吾身”(我每天多次反省自己)。 前端面试每日3+1题,以面试题来驱动学习,每天进步一点! 让努力成为一种习惯,让奋斗成为一种享受!相信 坚持 的力量!!!欢迎在 Issues 和朋友们一同讨论学习! 项目地址:前端面试每日3+1 【推荐】欢迎跟 jsliang 一起折腾前端,系统整理前端知识,目前正在折腾 LeetCode,打算打通算法与数据结构的任督二脉。GitHub 地址 微信公众号欢迎大家前来讨论,如果觉得对你的学习有一定的帮助,欢迎点个Star, 同时欢迎微信扫码关注 前端剑解 公众号,并加入 “前端学习每日3+1” 微信群相互交流(点击公众号的菜单:进群交流)。 学习不打烊,充电加油只为遇到更好的自己,365天无节假日,每天早上5点纯手工发布面试题(死磕自己,愉悦大家)。希望大家在这浮夸的前端圈里,保持冷静,坚持每天花20分钟来学习与思考。在这千变万化,类库层出不穷的前端,建议大家不要等到找工作时,才狂刷题,提倡每日学习!(不忘初心,html、css、javascript才是基石!)欢迎大家到Issues交流,鼓励PR,感谢Star,大家有啥好的建议可以加我微信一起交流讨论!希望大家每日去学习与思考,这才达到来这里的目的!!!(不要为了谁而来,要为自己而来!)交流讨论欢迎大家前来讨论,如果觉得对你的学习有一定的帮助,欢迎点个[Star] https://github.com/haizlin/fe...

October 1, 2019 · 1 min · jiezi

解密七牛云锐智转码技术打造低成本超高清的解决方案

互联网的迅速发展,提高了用户获取多样化信息的能力,根据《 2019 中国网络视听发展研究报告》显示:截至 2018 年底,我国网络视频用户规模达 7.25 亿,占总体网民的 87.5% 。视频已成为触达用户的主流媒介,网络视频行业的壮大已成为必然。如何在最小的带宽消耗下,最大幅度提升用户观看体验,成为了视频应用商首要考虑的问题。 七牛云深耕互联网行业 8 年,针对网络视频行业推出了锐智高清转码服务,融合感知编码、深度学习、图像处理、画质增强等技术,为点播、直播提供更智能的转码服务,也可以为存量视频做二次瘦身。 在体验方面,能够在低带宽条件下为用户提供高质量的视觉效果,画面更细腻、更美观。在成本方面,可以节省超过 40% 的视频码率,极大降低客户的传输带宽和视频存储成本。关键技术解密???? 智能场景分类不同场景可以适配更佳的算法提升压缩和画质效果。针对视频场景和复杂度进行两层分类,场景上包含:影视、教育、交通、体育、秀场等 10 多个类型;在部分场景上,会进一步做复杂度的分级。通过深度学习大量训练,目前CNN网络模型的准确度达到 95% 以上。 场景分类为自适应算法策略奠定基础,对于不同场景,适配的算法类别包括: 编码压缩算法和工具的组合前处理算法类别和参数ROI 感兴趣区域的算法客观质量评价工具 VMAF 的较准Per-Title 参数的选取锐智高清的智能自适应目标是在不同场景下匹配最优的算法,追求最佳的收益效果。以在线教育场景为例,屏幕录制为视频主要内容,针对屏幕内容采用特定算法可取得有效的针对性提升;而在秀场场景上,算法会更倾向于人脸和细节上的优化;再到体育场景,运动目标检测和去运动模糊是主要关注点。锐智高清智能自适应场景视频处理 Per-Title编码技术根据视频内容自适应码率以及自适应分辨率。在 Per-Title 技术出现之前,视频服务提供商通常会使用一个事先确定好的通用的编码配置来处理几乎所有的视频内容。一方面存在浪费,另一方面也不能始终给用户最佳体验。相比于传统的编码方案,Per-Title 编码技术更加注重不同类型视频之间的区分度,为每一个视频或视频片段找出满足清晰度和主观敏感度要求的最低码率点,以达到节省带宽的目的。除了根据内容自适应码率,Per-Title 技术还包括自适应分辨率。图片来源:Netflix 如图所示,对于同一视频源,采用三个分辨率,以及不同的码率编码。在各个分辨率下,编码质量随着码率的增加而单调上升。当码率达到一定阈值后,曲线开始变得平缓,这时需要通过提升分辨率才能进一步提升质量。 通过大量实战,锐智高清转码建立起的智能码控决策模型,对不同类型、相同类型不同片源、相同片源不同片段,应用完全不一样的编码参数,并且可以按帧级智能调优。锐智高清使用时可以让用户设置一个上限码率,码控模型将bits有效分配到最有价值的地方,在保障画质下尽可能输出最低码率。锐智高清秀场场景,画质相当节省码率66% AI视频前处理AI 视频前处理是提升画质的关键所在。由多个算法模块组成,每个模块负责某种画质增强的方向,包括:去编码脏效应、去噪、去毛刺、锐化、对比度增强、饱和度增强、去模糊等,各模块自适应调整强度,协同作用。 AI 视频前处理除了提升主观画质以外,其作用效果并非完全与视频编码解耦。比如在增强人眼易关注纹理的同时,弱化人眼不易察觉的信息,以期达到节省编码码率的目的。值得一提的是,所有的前处理 AI 算法,我们经过大量的调优打磨来平衡计算资源的消耗。锐智高清-AI前处理对画质大幅提升 ROI与码字分配ROI 感兴趣区域识别,以及更合理的码字分配,重点考虑了以下几个方面: 人脸人脸大概率是主观敏感区域。准确定位人脸,做针对性地画质调优以及编码参数调优。智能转码系统支持标准版和超低复杂度版本人脸检测,其中超低复杂度版本处理 1080P 视频在 2ms 每帧以内。 人眼聚焦区域、前景重点区域智能转码系统支持标准版和超低复杂度版人眼聚焦区域检测。标准版聚焦区域检测:采用眼动仪训练样本,有效定位人眼聚集区域。超低复杂度版聚焦区域检测:1080P 视频单核运算时间在 1ms 每帧以内,复杂度基本忽略不计。 各个块的主观敏感度X264 默认的自适应量化(AQ),仅仅依据方差大小作为评判依据,对方差大的块施以更大的量化因子。方差大小的鲁棒性不足,甚至都不能很好地判断平滑程度。如图示例的一维信号,左图的方差比右图更大,事实上左图是比较平滑的。图片来源:Fan Zhang, etc. Limitation and Challenges of Image Quality Measurement. SPIE 2010 以 RaceHorses 为例,第一行宏块,正好绿色草丛背景块的方差比较小,而涵盖了帽子、人脸、人眼的宏块方差比较大,导致主观敏感的人脸/人眼被施加了较大的 delta QP。智能转码系统区分了易被人眼关注的规则纹理,加以保护,在其他编码条件相同的条件下,取得明显改善。 ...

July 4, 2019 · 1 min · jiezi

HDR视频生态圈追踪

截止目前,HDR视频生态圈已经产生了巨大的变化。本文将更新旧有的HDR生态圈范围,并更清晰地描述当前HDR视频生态圈。本文译自The HDR video ecosystem tracker,原作者为 Yoeri Geutskens.由于现在的HDR生态圈更为复杂,如果使用一张图表进行描述会显得过于杂乱,如图2,同时也会引起不必要的误解,因此作者将HDR生态圈从8个不同的方面进行整理,并利用8幅 图表展示当前最新的HDR视频生态圈。 图1:《HDR支持状态》 日本通讯技术标准(CES)2017年发 图2:HDR生态圈追踪-2018年9月 这8个方面分别为: 电视品牌与制造商(TV brands and manufacturers)周边设备(Peripherals)流媒体服务(Streaming services)广播与运营商(Broadcasters / operators)电影制造商(Movie studios)电影制作商:家庭娱乐影院(Movie studios’ Home Entertainment divisions)芯片制造商(Chipset makers)编码供应商(Encoding vendors)本文只关注HDR视频,因为HDR这个概念在静态摄影领域表示的是另外一类技术。静态摄影领域的HDR技术生成的仍旧是在SDR显示设备上显示的SDR图像。这些技术通常基于多曝光度合成,然后利用一些专利技术进行图像增强,典型的代表有Apple Smart HDR以及Google HDR+。注意这里的“HDR+”,其他一些公司也使用“HDR+”这个名称,但表达的却是非常不同的含义。真正意义上的图像HDR技术是Dolby‘s JEPG-HDR以及technology Netflix提出的应用于屏幕选项的HDR图像技术。静态HDR的内容到此为止,接下来将是关于HDR视频的内容。 HDR格式简介后面的大多数图表都基于五种不同的HDR格式: 四种基于Dolby的PQ[1](Perceptual Quantizer)曲线• HDR10[2]• Dolby Vision[3]• Philips/Technicolor HDR[4]• HDR10plus[5]• HLG[6]此外还有第六种这里没有提到的标准,PQ10。这里没有提到的原因是在HDR视频生态圈中,大多数公司并不会考虑PQ10。据作者所知,目前并没有一家电视品牌宣布设备支持PQ10标准。那么,什么是PQ10标准呢?PQ10就是没有元数据的HDR10。PQ10可以正常工作吗?当然。并且PQ10是一种非常实用的标准,特别是在广播领域。HDR10存在的问题是它定义了静态元数据的形式与标准,但是却没有定义如何去操作静态元数据。因此一些电视可能完全忽略HDR10的静态元数据。更多关于这方面的内容请见[7]。在前述的8项指标中,仅有一种指标中单独列出了PQ10,即第8项编码供应商,这也是那幅图表中有6个圈的原因。 图3:HDR格式标准 更多关于HDR标准的介绍请见[8]。同时作者强调,在他看来,HDR视频领域目前并没有标准战争。一个广播台需要选择支持一种标准,但是在整个内容供给链的其他群体中,支持多种HDR格式标准是可行的。消费者并不需要决定支持哪一种标准,因为消费者一侧取决于电视支持哪一种标准,而电视制造厂商应当支持尽可能多的标准-最好是全部支持。电视品牌由于两个原因,生态圈的这一部分需要更多解释。最主要的地方是要解释清楚电视品牌和电视制造商之间的区别。这个图表在一定程度上混合了两者。许多品牌的电视设备不再是由这个品牌的公司制造的。电视制造业的竞争十分残酷,利润微薄,因此很多传统的消费电子公司都将其外包。这种情况下,他们完全退出电视制造业,仅通过品牌许可协议收取版税。使这一情况更加混乱的是,来自不同地区的同一品牌的电视机可能由完全不同的公司制造。 美国的飞利浦电视由P&F USA(Philips & Funai)制造。除了印度由Videocon制造和投影仪由Sagemcom制造之外,欧洲和世界上其余大部分国家的飞利浦电视由TP Vision制造。因此就有了下面这张表: 图4:各大品牌不同地区电视制造商 这里避免使用“OEM”(原始设备制造商)一词,因为它会引起混淆,它可能表示品牌许可人,也可能表示被许可人。品牌的所有权和许可在不断改变。收购日本公司夏普的富士康正在起诉海信,因为在被富士康收购之前,夏普曾向其出售其美国子公司和品牌权。这张图表提到了Vestel,它代表了欧洲的Vestel品牌和东芝品牌。这张图中的“东芝”意味着日本的母公司东芝。您不会在此图表中找到飞利浦,只有P&F USA和TP Vision。夏普在这张图表中的情况给出了他们在美国的现状,在美国,夏普的部分设备支持HDR10和Dolby Vision,电视的制造商是海信,但海信本身也以海信品牌发布产品。在欧洲,夏普在电视市场很少出现。欧洲的Sharps设备(实际上主要在英国)似乎只支持HDR10。在日本,他们的产品支持HDR10和HLG。对于仅在一个地区使用的所有品牌,下面图里使用的是品牌而不是制造商的徽标,例如: Grundig,RCA,Westinghouse,宝丽来,柯达。未来更新的一个更优雅的解决方案是为每个关键市场提供单独版本的电视品牌图表。此图中首次新增的包括Insignia(百思买品牌),Westinghouse,RCA(美国),JVC电视(前身为HDR10和HLG反射投影仪,此处不再包括),夏普,日立,船井(日本),Electriq(英国),康佳(中国),宝丽来,柯达(印度)。注意,例如,当某个电视品牌同时出现在HDR10和Dolby Vision范围内时,并不意味着他们所有的电视机都必须支持这些功能。 图5:世界主要HDR电视制造商与品牌生态图 显然,HDR10是最广泛支持的格式,杜比视界也很受欢迎。相对较少的品牌(声称)支持HLG,更少的品牌支持HDR10plus或Technicolor 'Advanced HDR'。三星从未正式声明支持HLG,但有用户处有足够的证据表明他们确实支持HLG。HDR10plus的椭圆特意被放在HDR10内部,以确定每台支持HDR10plus的电视都必须支持HDR10。此图表还表明支持Dolby Vision的每款产品都支持HDR10。实际上,现在就是这种情况,但早期的Vizio电视机和Vudu流媒体服务仅在Dolby Vision中使用。这里同样值得关注的是,目前还没有支持所有五种格式的电视品牌(飞利浦可能会如此,如果我们将TP Vision和P&F USA结合的话)。LG支持最多的HDR格式,但有人想知道他们是否会支持主要竞争对手三星的HDR10plus。虽然普遍的HDR支持将是一个强大的卖点,但尚未有这样的电视产品公布。也许CES 2019会给我们带来这样的消息。正如后面将会提到的,支持所有格式的芯片组已经存在。据芯片组制造商称,阻碍电视机普及HDR的原因在于等待HDMI 2.1的发布。现在每个电视品牌都出售HDR电视吗?几乎看起来,但仍有些廉价品牌没有,例如Sceptre。 电视周边电视周边设备是指源设备,特别是流媒体播放器,游戏机和超高清蓝光播放器(Oppo,Pioneer,LG,松下)。这里可能还会添加除了Arris之外机顶盒。机顶盒制造商例如Technicolor,Amino和Kaon支持的HDR的格式(HDR10,HLG和Dolby Vision)目前还有待理清。这里一些需要注意的事情有:Roku的平台可以处理Dolby Vision,但由于某种原因,他们没有在任何独立产品(电视盒子和电视流媒体棒)中实现这一点,他们只有基于Roku的TCL,海信,夏普和飞利浦等品牌的电视机,,您可以在电视品牌图表中找到它们。并非所有基于Roku的电视都具有Dolby Vision功能。例如RCA,日立和Insignia仅支持于HDR10。 Insignia的最新电视基于亚马逊的Fire TV平台。根据固件信息的泄漏,Apple TV 4K将兼容HLG,但在Apple公布之前这里并不会讨论具体细节。注意Panasonic在这里的特殊位置:与他们的电视机不同,他们的顶级UHD BD播放器确实支持Dolby Vision。很显然,他们认识到,如果没有DV,你就无法销售可信的高端光盘微调器。虽然Ultra HD蓝光光盘格式没有将HLG作为其支持的格式之一(仅支持HDR10,Dolby Vision,HDR10plus和Philips HDR),但Oppo和Panasonic的设备对来自例如USB传输设备的流媒体信息支持HLG格式。Xbox One X最近添加了Dolby Vision,但在超高清蓝光播放上会有多深入尚不清楚。与HDR不兼容的产品在这里没有包含,也许应该在圈子之外标注。 例如:Nintendo Switch。 ...

July 2, 2019 · 2 min · jiezi

浅析为何使用融合CDN是大趋势

使用传统CDN的用户遇到的新问题随着云计算时代的快速发展,尤其是流媒体大视频时代的到来,用户在是使用过往CDN节点资源调配将面临很多问题:问题1:流媒体时代不局限于静态内容分发,直播点播等视频服务对时延极其敏感,CDN资源的充足已经不足以解决低时延问题。问题2:传统CDN厂商为了控制成本,在四五线城市的边缘节点都会选择相对便宜的机房,这意味着可靠性和可控性的降低。从容量、服务稳定性、成本等各个方面来评估,传统CDN服务一般会采用一主多备,主要的CDN流量消耗在主方,一但主方有故障,则切到备方。这种模式,进一步导致了使用弊端的产生,即调度空间有限、稳定性差、管理成本高。怎么合理的利用多个CDN厂家资源,智能调度以及如何与业务进行更好地结合,在使用和接入上既可以简单易用又可以支撑业务敏捷开发会是难题。问题3: CDN厂商在不断以技术以及资源手段打破限制,但与此同时,因为竞争,单独CDN厂商的资源相对封闭,对行业发展本身造成了限制和瓶颈。 智能融合CDN 选择以及场景使用中国的CDN发展始于2003年,目前市场上厂家众多,传统CDN厂商和云CDN厂商占了大多数,而智能融合CDN是在近几年才发展出来。融合CDN存在的逻辑就在于能够打破单个CDN厂商的节点资源以及调度能力,突破地域时间以及不同运营商的限制。通过技术手段融合多个CDN厂商资源,或者再结合上自有CDN资源,通过强大的智能调度策略来综合利用上述资源来解决实际场景中的问题。其背后包含着CDN基础设施建设、全链路的网络质量监控、精确智能的调度和高效的容灾、极致的性能体验、高性价比的成本等等,当然最重要的是能够解决实际场景中面临的问题,能够为相关的业务提供帮助,这个就因场景和业务而异了。事实上,智能融合CDN概念的内涵也是在不断变化和演进的,现在意味着更加高效智能的资源利用和调度,全链路端到端的立体品控。近期,P2P、边缘计算等技术也不断的应用到CDN技术中,改变着CDN技术的发展,但始终不变的当然还是解决实际问题,万物为我所用,解决用户、场景实际问题。通常来说,融合CDN带来更加大的带宽容量储备,结合精细化的链路控制、智能的调度、实时的分析和精细运营,可以带来更加优质的服务效果、更加稳定鲁棒的质量和相对降低服务成本。智能融合CDN主要应用于大体量的应用或者平台,或解决自己产品在CDN加速方面对容量、灾备、效果、成本等方面的需求,这些需求往往既丰富又一定复杂度,同时又希望灵活易用的使用和接入方式,或是一些新兴的CDN供应商或者说参与者,凭借自己在品质控制、智能调度、精细运营等方面的优势,借助传统CDN厂商的资源优势,提供更加优质和易用的CDN服务。 如何选择融合CDN厂商选择的三大标准:节点质量、技术指标以及服务支撑事实上用户对CDN的要求并不是资源数量,而是最终使用的稳定性和高性能体现。无论是通过智能调度策略进行CDN资源调配使用户使用无感知,亦或者是在极端灾难情况下做到多CDN灾备,快速切换。还有带宽容量的灵活处理、全链路的监控等都会是选择融合CDN厂商的选择标准。尤其是智能调度系统是否可以数据为基础,从可用性,性能,成本等多个维度对节点进行调度。保证每个终端用户在不同区域均获得最佳的性能。目前国内很多销售员都会拿多节点数来忽悠人,而做CDN的公司大大小小上百家,鱼龙混杂,如果不摸清情况再选择,很容易买到既贵又不好用的CDN服务。谈到技术指标数据,在测试时应该集中关注延时、卡顿率、下载速度、打开速度、宽带冗余提升率等数据。根据全球第三方测速的公司Gomez官方数据显示:当页面加载时间超过7秒后, 50%的用户会选择放弃,且每增加1秒的延迟会带来7%转换率的下降。一般情况,100K的网页素材加载总时间低于250ms算优质CDN。服务支撑的选择也同样重要,在价格、技术指标以及服务模式三者综合比较下选择最高性价比模式。等性能得到保障之后,本身平台的监控水平,DNS调度能力,平台的本身系统的灵活性和可扩展能力都应该受到前期调研的关注。 网易云信全球智能融合CDN方案网易云信全球智能融合CDN方案主要是面向视频云平台的场景和需求。视频云服务本身定位于向开发者提供一站式、端到端的音视频PaaS服务,基于云信音视频服务提供的客户端SDK以及开放API可以快速构建出一个直播、点播、实时音视频应用。网易云信通过融合CDN技术,结合全球多个节点资源,不仅将多CDN灾备、带宽容量、链路选择、智能调度、全链路监控等问题完美解决,向客户提供优质的音视频服务体验,而且做到使用和接入的简单易用。用户在使用云信视频云服务的过程中,不仅可以获得了网易云信端上的音视频编解码和推拉流能力、服务端的音视频处理能力,流媒体分发过程中的问题,也可以不用关注,全部细节都交给视频云平台的能力,用户只需享受端到端的优质音视频体验。 想要阅读更多技术干货文章,欢迎关注网易云信博客。了解网易云信,来自网易核心架构的通信与视频云服务。 网易云信(NeteaseYunXin)是集网易18年IM以及音视频技术打造的PaaS服务产品,来自网易核心技术架构的通信与视频云服务,稳定易用且功能全面,致力于提供全球领先的技术能力和场景化解决方案。开发者通过集成客户端SDK和云端OPEN API,即可快速实现包含IM、音视频通话、直播、点播、互动白板、短信等功能。

July 2, 2019 · 1 min · jiezi

BBR在实时音视频领域的应用

小议BBR算法 BBR全称Bottleneck Bandwidth and RTT,它是谷歌在2016年推出的全新的网络拥塞控制算法。要说明BBR算法,就不能不提TCP拥塞算法。 传统的TCP拥塞控制算法,是基于丢包反馈的协议。基于丢包反馈的协议是一种被动式的拥塞控制机制,其依据网络中的丢包事件来做网络拥塞判断。即便网络中的负载很高时,只要没有产生拥塞丢包,协议就不会主动降低自己的发送速度。 TCP在发送端维护一个拥塞窗口cwnd,通过cwnd来控制发送量。采用AIMD,就是加性递增和乘性递减的方式控制cwnd,在拥塞避免阶段加性增窗,发生丢包则乘性减窗。这个拥塞控制算法的假定是丢包都是拥塞造成的。 TCP拥塞控制协议希望最大程度的利用网络剩余带宽,提高吞吐量。然而,由于基于丢包反馈协议在网络近饱和状态下所表现出来的侵略性,一方面大大提高了网络的带宽利用率;但另一方面,对于基于丢包反馈的拥塞控制协议来说,大大提高网络利用率同时意味着下一次拥塞丢包事件为期不远了,所以这些协议在提高网络带宽利用率的同时也间接加大了网络的丢包率,造成整个网络的抖动性加剧。TCP拥塞控制算法的假定是丢包都是拥塞造成的,而事实上,丢包并不总是拥塞导致,丢包可能原因是多方面,比如:路由器策略导致的丢包,WIFI信号干扰导致的错误包,信号的信噪比(SNR)的影响等等。这些丢包并不是网络拥塞造成的,但是却会造成TCP 控制算法的大幅波动,即使在网络带宽很好的情况下,仍然会出现发送速率上不去的情况。比如长肥管道,带宽很高,RTT很大。管道中随机丢包的可能性很大,这就会造成TCP的发送速度起不来。 Google 的BBR出现很好的解决了这个问题。BBR是一种基于带宽和延迟反馈的拥塞控制算法。它是一个典型的封闭反馈系统,发送多少报文和用多快的速度发送这些报文都是每次反馈中不断调节。BBR算法的核心就是找到两个参数,最大带宽和最小延时。最大带宽和最小延时的乘积就是BDP(Bandwidth Delay Product), BDP就是网络链路中可以存放数据的最大容量。知道了BDP就可以解决应该发送多少数据的问题,而网络最大带宽可以解决用多大速度发送的问题。如果网络比作一条高速公路,把数据比作汽车,最大带宽就是每分钟允许通行的汽车数量,最小RTT就是没有拥堵情况下,汽车跑一个来回需要的时间,而BDP就是在这条路上排满汽车的数量。 BBR如何探测最大带宽和最小延时BBR是如何探测最大带宽和最小延时呢?首先有一点就是最大带宽和最小延时是无法同时得到的。 如图所示,横轴是网络链路中的数据量,纵轴分别是RTT和带宽。可以发现在RTT不变的时候,带宽一直在上升,没有达到最大,因为这个时候网络没有拥塞,而带宽停止上涨的时候RTT持续变大,一直到发生丢包。因为这个时候,网络开始拥塞,报文累积在路由器的buffer中,这样延时持续变大,而带宽不会变大。图中BDP的竖线所标识的就是理想情况下最大带宽和最小延时。很明显,要找到BDP, 很难在同一时刻找到最小的RTT和最大带宽。这样最小RTT和最大带宽必须分别探测。探测最大带宽的方法就是尽量多发数据,把网络中的buffer占满,带宽在一段时间内不会增加,这样可以得到此时的最大带宽。探测最小RTT的方法就是尽量把buffer腾空,让数据交付延时尽量低。由此,BBR就引入了基于不同探测阶段的状态机。 状态机分为4个阶段,Startup,Drain,ProbeBW, ProbeRTT。Startup类似于普通拥塞控制里的慢启动,增益系数是 2ln2,每一个来回都以这个系数增大发包速率,估测到带宽满了就进入 Drain状态,连续三个来回,测得的最大瓶颈带宽没有比上一轮增大 25%以上,就算带宽满了。进入 Drain状态,增益系数小于 1,也就降速了。一个包来回,把 Startup状态中产生的拍队排空,怎样才算队列空了?发出去还没有 ACK 的数据包量 inflight,与 BDP 进行比较,inflight < BDP 说明空了,道路不那么满了,如果 inflght > BDP 说明还不能到下一个状态,继续 Drain。ProbeBW是稳定状态,这时已经测出来一个最大瓶颈带宽,而且尽量不会产生排队现象。之后的每个来回,在 ProbeBW状态循环(除非要进入下面提到的 ProbeRTT状态),轮询下面这些增益系数,[5/4, 3/4, 1, 1, 1, 1, 1, 1],如此,最大瓶颈带宽就会在其停止增长的地方上下徘徊。大部分时间都应该处于 ProbeBW状态。前面三种状态,都可能进入 ProbeRTT状态。超过十秒没有估测到更小的 RTT 值,这时进入 ProbeRTT状态,把发包量降低,空出道路来比较准确得测一个 RTT 值,至少 200ms 或一个包的来回之后退出这个状态。检查带宽是否是满的,进入不同的状态:如果不满,进入 Startup状态,如果满,进入 ProbeBW状态。BBR算法不会因为一次或者偶然的丢包就大幅降低吞吐量,这样就比TCP就有较强的抗丢包能力。 如图所示,cubic在丢包率上升的时候,吞吐量下降很快。而BBR在5%以上的丢包才会出现明显的吞吐量下降。BBR与基于丢包反馈的cubic和基于延时反馈的vegas算法的本质区别在于,BBR无视随机丢包,无视时延短暂波动,采用了实时采集并保留时间窗口的策略,保持对可用带宽的准确探知。事实上,丢包并不一定会造成带宽减少,延迟增加也不一定会造成带宽减少,cubic无法判断是否拥塞造成的丢包,vegas对延时增加过于敏感,会导致竞争性不足。BBR可以区分出噪声丢包和拥塞丢包,这样意味着,BBR比传统TCP拥塞控制算法具有更好的抗丢包能力。 BBR在实时音视频领域的应用实时音视频系统要求低延时,流畅性好,而实际网络状态却是复杂多变的,丢包,延时和网络带宽都在时刻变化,这就对网络拥塞控制算法提出了很高的要求。它需要一种带宽估计准确,抗丢包和抖动能力好的拥塞控制算法。目前Google的webrtc提供了GCC控制算法,它是一种发送侧基于延迟和丢包的控制算法,这个算法的原理在很多地方都有详细描述,这里不再赘述。GCC用于实音视频的主要问题还在于在带宽发生变化时,它的带宽跟踪时间比较长,这样就会造成带宽突变的时候无法及时准确探测带宽,可能造成音视频卡顿。既然BBR有良好的抗丢包能力,自然也被想到应用到实时音视频领域。但是,BBR并不是为处理实时音视频设计的,所以需要对一些问题做一些优化。第一,BBR在丢包率达到25%以上,吞吐量会断崖式下降。这是由BBR算法的pacing_gain数组[5/4, 3/4, 1, 1, 1, 1, 1, 1]的固定参数决定的。在pacing_gain数组中,其增益周期的倍数为5/4,增益也就是25%,可以简单理解为,在增益周期,BBR可以多发送25%的数据。在增益期,丢包率是否抵消了增益比25%?也就是说,x是否大于25。假设丢包率固定为25%,那么,在增益周期,25%的增益完全被25%的丢包所抵消,相当于没有收益,接下来到了排空周期,由于丢包率不变,又会减少了25%的发送数据,同时丢包率依然是25%...再接下来的6个RTT,持续保持25%的丢包率,而发送率却仅仅基于反馈,即每次递减25%,我们可以看到,在pacing_gain标识的所有8周期,数据的发送量是只减不增的,并且会一直持续下去,这样就会断崖式下跌。 怎样才能对抗丢包,这就需要在每个周期考虑丢包率,把丢包率补偿进去。比如丢包率达到25%的时候,增益系数就变成50%,这样就可以避免由于丢包带来的反馈减损,然而,你又如何判断这些丢包是噪声丢包还是拥塞丢包呢?答案在于RTT,只要时间窗口内的RTT不增加,那么丢包就不是拥塞导致的。第二,BBR的最小RTT有个10s超时时间,在10s超时后,进入ProbeRTT 状态,并持续最小200ms,此状态下,为了排空拥塞,inflight只允许有4个包,这会导致音视频数据在这段时间内堆积在发送队列中,使得时延增加。可行的解决办法是,不再保留ProbeRTT状态,采用多轮下降的方式排空拥塞,然后采样最小RTT,也就是在infight > bdp的时候,设置pacing gain为0.75,用0.75倍带宽作为发送速率,持续多轮,直到inflight < bdp, 此外,最小RTT的超时时间改成2.5s,也就是说不采用非常激进的探测方式,避免了发送速率的大幅波动,可以改善探测新的带宽过程中发送队列中产生的延时。第三,开始提到pacing gain数组上探周期为1.25倍带宽,随后是0.75倍带宽周期,这两个RTT周期之间会出现发送速率的剧烈下降,这可能会使音视频数据滞留在buffer中发不出去,引入不必要的延时。解决办法可以考虑减小上探周期和排空周期的幅度,比如使用[1.1 0.9 1 1 1 1 1 1]这种pacing gain参数,这样做的优点就是可以保证媒体流的平稳发送,发送速率不会大幅波动,缺点是,网络带宽改善的时候,上探时间会变长。第四,BBR探测新带宽收敛慢的问题原始的BBR算法的收敛性受到pacing gain周期影响,带宽突降的时候,BBR需要多个轮次才会降到实际带宽。这是由于BBR每轮只能降速一次,而pacing gain的6个RTT的保持周期大大加长了这个时间。解决的办法就是随机化pacing gain的6个保持周期,如果是0.75倍周期,就一次降速到位,这样可以极大的减少BBR的收敛时间。最后,BBR算法看似简单,但是应用到实时音视频却没有那么简单,需要大量的实验优化,谷歌也在webrtc中引入BBR,目前仍在测试中。本文提到的改进方法是网易云信在这方面的一些尝试,希望能够抛砖引玉,有更多有兴趣的人能够为BBR应用到实时音视频领域出力。 ...

June 28, 2019 · 1 min · jiezi

视频编解码的理论和实践2Ffmpeg视频编解码

近几年,视频编解码技术在理论及应用方面都取得了重大的进展,越来越多的人想要了解编解码技术。因此,网易云信研发工程师为大家进行了归纳梳理,从理论及实践两个方面简单介绍视频编解码技术。 相关阅读推荐《视频直播关键技术:流畅、拥塞和延时追赶》《视频直播技术详解:直播的推流调度》《音视频通话:小议音频处理与压缩技术》《视频编解码的理论和实践1:基础知识介绍》 1、Ffmpeg介绍《视频编解码的理论和实践1:基础知识介绍》介绍了视频编码的基础知识,本篇文章,我们一起看看实际应用中的视频编码是如何操作的。在实际工程项目中,ffmpeg是应用最多的多媒体处理框架,它提供了音视频采集、编解码、图像处理,格式转换等功能,并且拥有很强的扩展能力,通过ffmpeg可以很容易集成第三方库(例如:x264、openh264等),通过这种能力,它可以实现更强大的功能。Ffmpeg由下面几个部分构成:Libavformat:音视频格式处理Libavcodec:音视频编解码Libavfilter:音视频滤镜Libavdevice:音视频设备采集Libswscale:图像缩放、转换Libswresample:音频重采样Ffmpeg:一个命令行的转码工具Ffplay:一个命令行播放器Ffprobe:简单的媒体格式分析工具 2、Ffmpeg视频编码视频编码是ffmpeg提供的基本功能之一,通过ffmpeg可以很容易实现视频编码操作。使用ffmpeg进行视频编码之前需要把x264、openh264等第三方编解码库集成到ffmpeg中才能使用。编码步骤如下:(1) 注册编码器(2) 根据名字或者ID查找你想使用的编码器(例如x264、x265、openh264等)(3) 创建一个编码器上下文对象(4) 在编码器上下文对象中设置编码器参数(5) 打开编码器(6) 读取一帧图像进行编码,一直重复该过程,直到处理结束(7) 关闭编码器示例代码如下:avcodec_register_all(); // 注册所有可用的编码器codec = avcodec_find_encoder_by_name(“libx264”); // 查找编码器ctx = avcodec_alloc_context3(codec); // 创建编码器上下文ctx->width = 1280; // 设置编码器参数ctx->height = 720;// ….其他的参数设置avcodec_open2(ctx, codec, NULL); // 打开编码器while(read_frame(frame)){ AVPacket pkt; // 存放编码之后的数据int got_output = 0; // 是否成功编码得到一个图像avcodec_encode_video2(ctx, &pkt, frame, &got_output); // 编码if(got_output){ // 得到编码后的数据,进行后续操作}}avcodec_free_context(&ctx); // 关闭编码器 可以看到,ffmpeg隐藏了大部分的编码细节,调用者不需要了解预测、变换、量化、熵编码等细节,这些细节都已经被ffmpeg封装好了,开发者只要把编码参数设置好,然后调用相关的接口函数,即可实现视频编码功能。当然,这知识最基本的编码功能,要想在画面质量和压缩率之间取得平衡,必须了解视频编码的细节,然后设置相应的参数。 3、Ffmpeg视频解码Ffmpeg自带了H264的视频解码器,开发者可选择直接使用ffmpeg自带的H264解码器或者第三方的解码库进行视频解码。和视频编码一样,解码操作的大部分细节都已经被ffmpeg隐藏起来了,开发者只需要设置好相关的解码参数,然后调用接口函数就可以实现解码功了。解码流程如下:(1) 注册解码器(2) 查找解码器(3) 创建解码器上下文对象(4) 设置解码参数(5) 打开解码器 (6) 读取数据进行解码,直到结束(7) 关闭解码器代码示例如下:avcodec_register_all(); //注册解码器codec = avcodec_find_decoder_by_name(“h264”); // 查找解码器ctx = avcodec_alloc_context3(codec); // 创建解码器上下文对象//…设置解码参数avcodec_open2(ctx, codec, NULL); // 打开解码器while(read_packet(pkt)){ ...

June 26, 2019 · 1 min · jiezi

视频编解码的理论和实践1基础知识介绍

近几年,视频编解码技术在理论及应用方面都取得了重大的进展,越来越多的人想要了解编解码技术。因此,网易云信研发工程师为大家进行了归纳梳理,从理论及实践两个方面简单介绍视频编解码技术。 相关阅读推荐《视频直播关键技术:流畅、拥塞和延时追赶》《视频直播技术详解:直播的推流调度》《音视频通话:小议音频处理与压缩技术》 1、视频介绍视频的本质是图像序列,根据视觉暂留的原理,每秒播放20~25张图像,就会形成连续平滑的视觉效果,人眼将无法区分其中单幅的图像,就这样连续的画面叫做视频。每秒播放的图像数量叫作帧率。图像是由像素构成的,在彩色图像中,每个像素由R、G、B三个分量构成,每个分量用一个字节存储。分辨率用于描述图像的尺寸,例如分辨率1280x720就表示图像宽度是1280个像素、高度是720个像素。 2、压缩视频的原因为什么要对视频进行压缩?假如有一段时长为60秒视频,它的分辨率是1280x720,帧率是25,那么这段视频的大小等于:60 x 25 x 1280 x 720 x 3 = 4147200000字节,大约是3955MB,如此庞大的数据,如果不进行压缩,那么磁盘空间将会很快被占满。多媒体数据占了互联网数据量的80%以上,其中大部分都是图像视频数据,未压缩之前的视频非常庞大,不利于存储和传输,因此很有必要对视频进行压缩,视频压缩也叫作视频编码,它利用视频中存在的空间冗余和时间冗余,剔除人眼不敏感的信息,达到数据压缩的目的。3、视频压缩的依据视频能够进行压缩的根本原因是信息冗余,视频中存在两种冗余信息:(1) 空间冗余。对于视频的每一帧图像,在一定尺度范围内,像素的变化是非常平缓的,像素之间非常相似,这就是空间冗余。(2) 时间冗余。视频是由连续变化的图像构成的,在一个很短的时间内,相邻图像之间的变化很小,因此相邻图像很相似,这就是时间冗余。 4、视频编码的原理和细节由于视频中存在大量的信息冗余,想要对视频进行压缩,就必须找到去除冗余信息的方法,标准的视频编码过程包含下面几个步骤:(1) 预测编码。所谓预测就是利用前面像素值来推算当前的像素值。根据前面的知识我们知道,在空间或者时间上相邻的像素是很相似,因此只要预测方法合适,预测值和实际值会很接近,假设当前像素的实际值是X,预测值是P,那么X和P之间的残差A=X-P。如果我们只对残差数据进行编码,那么将会大大压缩数据量。这就是预测编码的原理。预测编码可以分为空间预测(帧内预测)和时间预测(帧间预测)两种。预测编码可以分为下面几个步骤:i. 利用前面已经编码并重构像素块预测当前像素块的值ii. 求当前像素和预测像素的差值iii. 对像素差值进行编码iv. 把编码后的数据传输到解码端,在解码端按照同样的方法对像素值进行预测,再加上残差,就可以重构得到原始图像了。为了得到最佳的预测值,编码器通常需要使用不同预测方法进行预测,然后根据某个评判标准(一般是SAD、STAD、RDO等)得到最优的预测值(注意不是预测值越接近实际值就越优,所谓最优是计算复杂度、失真和码率之间的综合考量),特别对于帧间预测来说,在预测的时候要在参考帧中找到当前块的匹配块,需要大量的计算,因此预测模块一般是编码器中计算量最大的模块,而预测方法的好坏也直接决定了视频的压缩率。(2) 变换编码。变化编码本身不会对数据进行压缩,变换的目的是把空域信息转换为频域信息,去除了信息之间的相关性,在接下来的编码操作中可以得到更高的压缩比,变化编码是为下一步的量化编码做准备的。在视频编码中常见的变换方法是DCT变换和哈达玛变换。(3) 量化编码。量化是视频产生失真的根本原因。经过预测编码、变换编码之后得到的数据被称为变换系数,虽然变换系数相对于原始数据数来说已经很小了,但是系数值的变化范围仍然很大,利用量化把变换系数的连续取值转换成有限的离散值,这样可大大提高压缩率。假设有这样一组数据[16,96,100,600,50],量化参数是25,那么量化之后数据是round([16 / 25, 96 / 25, 100 / 24, 600 / 25, 50 / 25]) = [0,4,4,24,2],可以看到,量化之前的数据范围是16~600,需要大量的比特数才能表示,量化之后的数据范围是0~24,只需要少量比特数就可以表示,实现了压缩数据的目的。编码是一个不可逆的操作,它是失真产生的根本原因。(4) 环路滤波。环路滤波和压缩没有很大关系,却和视频的画面质量有很大关系。视频编码是以块为单位进行的,在经过量化模块时,可能每个块选择的量化系数不同,导致每个块产生的失真不一样,造成像素块的边界不连续,因此人眼观看视频的时会有方块效应(也就是有很多马赛克现象)。为了提高视频质量,有必要对方块效应进行消除,这就是环路滤波模块的功能。经过量化操作之后的数据块,再经过反量化、反变换,然后进行重构,接着进入去方块滤波进行去方块操作,得到的像素块就可以作为参考像素块给预测模块使用。环路滤波是一个可选模块。(5) 熵编码。熵编码的目的是去除统计冗余,实现数据的进一步压缩。这么说可能有点抽象,举个例子,假设有这样一组数据[0,4,4,24,2],如果使用定长编码来进行编码,这段数据可以表示为[00000,00100,00100,11000,00010],每个数据需要5 bit来表示,这段数据的总长度是5 bit x 5=25 bit;如果我们使用哈夫曼来编码,这个数组中每个元素概率值分别如下:数值0的概率是20%,数值4的概率是40%,数值24的概率是20%,数值2的概率是20%,即[20%,40%,20%,20%],根据每个元素的概率构造哈夫曼树(节点中括号内的是数组元素值),如下图所示,因此这段数据可以表示为[0,10,110,111],数据的总长度是11 bit。 由此可见使用哈夫曼编码可以去除统计冗余,实现数据压缩的目的,哈夫曼编码就是一种熵编码方法,但是由于哈夫曼编码对错误非常敏感,不适合实际应用,因此实际应用中通常使用变长编码(CAVLC)和算术编码(CABAC)作为熵编码算法。算术编码利用一个0到1之间的浮点数来描述一个信号序列,然后用这个浮点数来表示这个信号序列,极大的压缩了数据。算术编码可以使用一个简单的例子说明,假设有一个二进制串“10101110”,符号0和1的概率值都是50%,算术编码的过程如下:(1) 设置定一个区间,通常这个区间我们设定为[0,1),然后使用low指向区间的下界,用high指向区间的上界,现在low指向0,rhigh指向1.(2) 输入每一个符号,按照符号的不同对low和high进行调整,调整方法如下面公式所示,最后把low指向的浮点数作为这个符号串的码字,表示这个二进制串,可以看到算术编码的压缩效率比哈夫曼编码高很多,在x264中使用CABAC(上下文自适应的二进制算数编码)作为熵编码算法。 以上就是编解码技术的基础知识介绍,该系列第二篇文章将会介绍视频编解码技术的实践。更多即时通讯、音视频技术的干货文章,请关注网易云信博客。

June 26, 2019 · 1 min · jiezi

关于vue项目中移动端实现用户选择视频上传多个视频兼容安卓和ios功能

项目需求:在公司的教育公众号中,用户有一个需求就是:学生作业为舞蹈或者童模表演,需要上传视频到服务器。 项目技术:使用vue+mniti-ui 遇到的问题:本以为上传视频会很简单,第一个就想到input的type设置为file类型,这样做下来发现在ios中确实是没有问题的,不管是从手机拍摄的视频列表中选择,还是调用摄像头直接拍摄都是没有问题的,但是当用安卓手机的时候,发现可以打开安卓手机的文件系统,也可以进入视频列表,但是视频都无法选择。 解决办法:1、判断手机类型,是ios还是安卓。2、对于不同的手机类型使用不同的input设置,在android中设置capture属性就行 实现效果: 需要源码的可以联系我

June 18, 2019 · 1 min · jiezi

记录一波video.js的使用及问题

最近的项目中需要播放视频,鉴于html5元素<video>的一些坑及不想自己造轮子,于是就找到了web端播放视频使用量最多的插件video.js,video.js是国外开发者开发的,英语本身就不好的我看英文文档简直是折磨,国内又没有中文文档,能搜的到的基本是简单的使用及最基本的api的介绍,想要实现一些自定义功能无从下手,所以我在这里整理一份我所遇到的问题及解决方法1、视频初始化video.js有两种初始化方式,一种是在video的html标签之中,一种是使用js来进行初始化1.1、在video中进行初始化<video id=“my-player” class=“video-js” controls preload=“auto” poster="//vjs.zencdn.net/v/oceans.png" width=“600” height=“400” data-setup=’{}’> <source src="//vjs.zencdn.net/v/oceans.mp4" type=“video/mp4”></source> <source src="//vjs.zencdn.net/v/oceans.webm" type=“video/webm”></source> <source src="//vjs.zencdn.net/v/oceans.ogv" type=“video/ogg”></source> <p class=“vjs-no-js”> To view this video please enable JavaScript, and consider upgrading to a web browser that <a href=“https://videojs.com/html5-video-support/" target="_blank”> supports HTML5 video </a> </p></video>效果1.2、使用js进行初始化<!– vjs-big-play-centered可使大的播放按钮居住,vjs-fluid可使视频占满容器 –><video id=“myVideo” class=“video-js vjs-big-play-centered vjs-fluid”> <p class=“vjs-no-js”> To view this video please enable JavaScript, and consider upgrading to a web browser that <a href=“https://videojs.com/html5-video-support/" target="_blank”> supports HTML5 video </a> </p></video><script>var player = videojs(document.getElementById(‘myVideo’), { controls: true, // 是否显示控制条 poster: ‘xxx’, // 视频封面图地址 preload: ‘auto’, autoplay: false, fluid: true, // 自适应宽高 language: ‘zh-CN’, // 设置语言 muted: false, // 是否静音 inactivityTimeout: false, controlBar: { // 设置控制条组件 /* 设置控制条里面组件的相关属性及显示与否 ‘currentTimeDisplay’:true, ’timeDivider’:true, ‘durationDisplay’:true, ‘remainingTimeDisplay’:false, volumePanel: { inline: false, } / / 使用children的形式可以控制每一个控件的位置,以及显示与否 / children: [ {name: ‘playToggle’}, // 播放按钮 {name: ‘currentTimeDisplay’}, // 当前已播放时间 {name: ‘progressControl’}, // 播放进度条 {name: ‘durationDisplay’}, // 总时间 { // 倍数播放 name: ‘playbackRateMenuButton’, ‘playbackRates’: [0.5, 1, 1.5, 2, 2.5] }, { name: ‘volumePanel’, // 音量控制 inline: false, // 不使用水平方式 }, {name: ‘FullscreenToggle’} // 全屏 ] }, sources:[ // 视频源 { src: ‘//vjs.zencdn.net/v/oceans.mp4’, type: ‘video/mp4’, poster: ‘//vjs.zencdn.net/v/oceans.png’ } ]}, function (){ console.log(‘视频可以播放了’,this);});</script>2、controlBar组件的说明playToggle, //播放暂停按钮volumeMenuButton,//音量控制currentTimeDisplay,//当前播放时间timeDivider, // ‘/’ 分隔符durationDisplay, //总时间progressControl, //点播流时,播放进度条,seek控制liveDisplay, //直播流时,显示LIVEremainingTimeDisplay, //当前播放时间playbackRateMenuButton, //播放速率,当前只有html5模式下才支持设置播放速率fullscreenToggle //全屏控制currentTimeDisplay,timeDivider,durationDisplay是相对于 remainingTimeDisplay的另一套组件,后者只显示当前播放时间,前者还显示总时间。若要显示成前者这种模式,即 ‘当前时间/总时间’,可以在初始化播放器选项中配置:var myPlayer = neplayer(‘my-video’, {controlBar:{ ‘currentTimeDisplay’:true, ’timeDivider’:true, ‘durationDisplay’:true, ‘remainingTimeDisplay’:false}}, function() { console.log(‘播放器初始化完成’);});3、video.js样式修改.video-js{ / 给.video-js设置字体大小以统一各浏览器样式表现,因为video.js采用的是em单位 / font-size: 14px;}.video-js button{ outline: none;}.video-js.vjs-fluid,.video-js.vjs-16-9,.video-js.vjs-4-3{ / 视频占满容器高度 / height: 100%; background-color: #161616;}.vjs-poster{ background-color: #161616;}.video-js .vjs-big-play-button{ / 中间大的播放按钮 / font-size: 2.5em; line-height: 2.3em; height: 2.5em; width: 2.5em; -webkit-border-radius: 2.5em; -moz-border-radius: 2.5em; border-radius: 2.5em; background-color: rgba(115,133,159,.5); border-width: 0.12em; margin-top: -1.25em; margin-left: -1.75em;}.video-js.vjs-paused .vjs-big-play-button{ / 视频暂停时显示播放按钮 / display: block;}.video-js.vjs-error .vjs-big-play-button{ / 视频加载出错时隐藏播放按钮 / display: none;}.vjs-loading-spinner { / 加载圆圈 / font-size: 2.5em; width: 2em; height: 2em; border-radius: 1em; margin-top: -1em; margin-left: -1.5em;}.video-js .vjs-control-bar{ / 控制条默认显示 / display: flex;}.video-js .vjs-time-control{display:block;}.video-js .vjs-remaining-time{display: none;}.vjs-button > .vjs-icon-placeholder:before{ / 控制条所有图标,图标字体大小最好使用px单位,如果使用em,各浏览器表现可能会不大一样 / font-size: 22px; line-height: 1.9;}.video-js .vjs-playback-rate .vjs-playback-rate-value{ line-height: 2.4; font-size: 18px;}/ 进度条背景色 /.video-js .vjs-play-progress{ color: #ffb845; background-color: #ffb845;}.video-js .vjs-progress-control .vjs-mouse-display{ background-color: #ffb845;}.vjs-mouse-display .vjs-time-tooltip{ padding-bottom: 6px; background-color: #ffb845;}.video-js .vjs-play-progress .vjs-time-tooltip{ display: none!important;}4、动态切换视频<script> var data = { src: ‘xxx.mp4’, type: ‘video/mp4’ }; var player = videojs(‘myVideo’, {…}); player.pause(); player.src(data); player.load(data); // 动态切换poster player.posterImage.setSrc(‘xxx.jpg’); player.play(); // 销毁videojs //player.dispose();</script>5、设置语言5.1传统形式开发对于使用<script>标签形式的方式引入video.js,只需要在页面中引入你需要的语言包即可<script src="//example.com/path/to/lang/es.js"></script><script src="//example.com/path/to/lang/zh-CN.js"></script><script src="//example.com/path/to/lang/zh-TW.js"></script><script>var player = videojs(‘myVideo’, { language: ‘zh-CN’ // 初始化时设置语言,立即生效});/ 动态切换语言 使用这种方式进行动态切换不会立即生效,必须有所操作后才会生效。如播放按钮,必须点击一次播放按钮后播放按钮的提示文字才会改变 ///player.language(‘zh-TW’);</script>5.2、vue开发import Video from ‘video.js’/ 不能直接引入js,否则会报错:videojs is not defined import ‘video.js/dist/lang/zh-CN.js’ */import video_zhCN from ‘video.js/dist/lang/zh-CN.json’import video_en from ‘video.js/dist/lang/en.json’import ‘video.js/dist/video-js.css’Video.addLanguage(‘zh-CN’, video_zhCN);Video.addLanguage(’en’, video_en);6、未解决的问题控制条的高级自定义,如图中的进度条及时间在上面,播放按钮、上一个视频、下一个视频,设置及音量在下面这种控件该如何实现?如有知道实现这种高级自定义控制条方式的大神请在评论区留下您的代码7、参考文章视频云web播放器样式和组件自定义Video.js 踩坑简单入门免费视频播放器videojs中文教程 ...

April 18, 2019 · 2 min · jiezi

如何在浏览中在线播放视频

在浏览器中在线播放视频,是一些站点的基本需求。本文对方法进行总结。找插件网上可用的插件有很多,有收费的,也有免费的。笔者实验了两个免费的,都可以正常使用,而且官方的demo写的也不错:videojs与plyr (plyr官方站点如果找不开,可以访问其github地址:https://github.com/sampotts/plyr)。在官方的demo中,都会提供mp4的示例文件,测试时建议就用这个文件(控制台 - 网络 - 找到地址后可以下载),以保障我们的测试成本最低。除此以外,我们还可以由https://sample-videos.com/上下载各种大小的mp4测试文件。转码要想成功的实现被播放,那么我们必须提供.mp4文件,并且该文件的编码方式必须为:h.264不使用h.264则有声音无图像。这也决定了,如果我们使用一些默认的转码工具,必然得不到h.264编码的.mp4文件,也就注定了该文件无法在网页上正常的播放。在此,推荐两款免费软件:handbrake与zencoder。其中,handbrake笔者已在MAC系统下转码成功。MAC系统下,找款免费的转码软件好像真的不容易。由于使用频率太低,收费的感觉又真的没有必要。使用时注意两点:preset 必须选择H.264打头的formart 要选择mp4总结一直只是知道可以找到很多播放MP4文件的JS工具,但却不知道只有h.264编码的才能够被正常播放。纸上得来终觉浅,绝知此事要躬行 —- 《冬夜读书示子聿》 陆游

March 26, 2019 · 1 min · jiezi

vlc+video全浏览器兼容视频播放、倍速播放

一、项目起源公司项目中需要视频播放,并且需要实现倍速播放,最重要的是需要兼容IE8,于是乎HTML5的video显然无法使用,只能另辟蹊径,查找资料最终决定使用vlc视频播放插件兼容IE,再加上video,可以实现全浏览器兼容的视频播放和倍速播放。二、解决思路首先H5video无法兼容低版本IE,考虑使用ActiveX视频播放插件,vlc视频播放软件有自带的ActiveX插件,安装时会自动安装插件,不过要注意的是vlc的版本必须与IE浏览器的版本一致(即如果IE是32位则必须安装32位vlc)。使用vlc解决IE的视频播放和倍速播放,其它浏览器则使用video实现。三、解决办法1、判断浏览器类型// 获取浏览器类型 function getBrowserInfo() { var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串 var isOpera = userAgent.indexOf(“Opera”) > -1; //判断是否Opera浏览器 var isIE = window.ActiveXObject || “ActiveXObject” in window var isEdge = userAgent.indexOf(“Edge”) > -1; //判断是否IE的Edge浏览器 var isFF = userAgent.indexOf(“Firefox”) > -1; //判断是否Firefox浏览器 var isSafari = userAgent.indexOf(“Safari”) > -1 && userAgent.indexOf(“Chrome”) == -1; //判断是否Safari浏览器 var isChrome = userAgent.indexOf(“Chrome”) > -1 && userAgent.indexOf(“Safari”) > -1 && !isEdge; //判断Chrome浏览器 if (isIE) { var reIE = new RegExp(“MSIE (\d+\.\d+);”); reIE.test(userAgent); var fIEVersion = parseFloat(RegExp["$1"]); if (userAgent.indexOf(‘MSIE 6.0’) != -1) { return “IE6”; } else if (fIEVersion == 7) { return “IE7”; } else if (fIEVersion == 8) { return “IE8”; } else if (fIEVersion == 9) { return “IE9”; } else if (fIEVersion == 10) { return “IE10”; } else if (userAgent.toLowerCase().match(/rv:([\d.]+)) like gecko/)) { return “IE11”; } else { return “0” } //IE版本过低 } //isIE end if (isFF) { return “FF”; } if (isOpera) { return “Opera”; } if (isSafari) { return “Safari”; } if (isChrome) { return “Chrome”; } if (isEdge) { return “Edge”; } }2、若是IE则判断是否安装vlc ActiveX插件 function isInsalledIEVLC() { var vlcObj = null; var vlcInstalled = false; try { vlcObj = new ActiveXObject(“VideoLAN.Vlcplugin.2”); if (vlcObj != null) { vlcInstalled = true } } catch (e) { vlcInstalled = false; } return vlcInstalled; }3、若未安装则判断浏览器版本,根据版本下载对应的vlc // 获取浏览器32位还是64位,安装对应的vlc function getPlatform() { var agent = navigator.platform.toLowerCase(); if (agent.indexOf(“win64”) >= 0 || agent.indexOf(“wow64”) >= 0) { return “win64”; } else if(agent.indexOf(“win32”) >= 0 || agent.indexOf(“wow32”) >= 0){ return “win32”; } }4、若是IE浏览器且已安装vlc,HTML标签如下<embed id=“vlcObj” type=“application/x-vlc-plugin” pluginspage=“http://www.videolan.org” width=“100%” height=“480” />5、非IE浏览器使用video <video id=“video” src="" controls width=“100%” height=“480”> 您的浏览器版本太旧,请更新版本或使用其他浏览器 </video>6、播放和暂停 var useVlc = getBrowserInfo().indexOf(‘IE’) != -1; var VIDEO = document.getElementById(“video”); var VLC = document.getElementById(“vlcObj”); // 播放 function playVideo(url) { if(useVlc){ url ? VLC.playlist.add(url) : “”; VLC.playlist.play(); }else{ url ? VIDEO.src = url : “”; VIDEO.networkState != 3 ? VIDEO.play() : “”; } } // 暂停播放 function zanting() { if(useVlc){ VLC.playlist.pause(); }else{ VIDEO.pause(); } }7、倍速播放// 绑定倍速 <select id=“beisu”> <option value=“0.5”>0.5x</option> <option value=“1” selected>1.0x</option> <option value=“1.25”>1.25x</option> <option value=“1.5”>1.5x</option> <option value=“2”>2.0x</option> </select> $("#beisu").on(“change”, function(){ var v = $(this).val(); if (useVlc) { VLC.input.rate = v; } else { VIDEO.playbackRate = v; } });8、快进、快退 // 快进10秒播放 function kuaijin() { if(useVlc){ VLC.input.time += 10000; }else{ VIDEO.currentTime += 10; } } // 快退10秒播放 function kuaitui() { if(useVlc){ VLC.input.time -= 10000; }else{ VIDEO.currentTime -= 10; } } ...

March 5, 2019 · 2 min · jiezi

视频flv转mp4最快的几种方法(就是不用格式工厂)

FFmpeg 是一个非常优秀的视频处理开源工具,假如你想把avi或者flv转成mpp4的时候,你就不必要用格式工厂很繁琐的方式去转换格式,因为比如flv和mp4他的编码(视频编码和音频编码)都是h.264编码其实并没有变,这是封装格式不一样而已,就是壳子不一样而已,格式工厂耗费资源和CPU较为严重,这里就不需要对视频进行重新编码,仅仅需要对文件重新加以MP4壳子即可,所以FFmpeg 就很方便。所以使用的代码为:ffmpeg -i input.flv -vcodec copy -acodec copy output.mp4或者干脆一点。ffmpeg -i input.flv output.mp4input就是你的文件名称,output就是输出名称,速度敲快~下载官网-FFmpeg,或者Github下载—FFmpeg选择对应的版本下载即可,下载完解压吧bin目录随便选择一个目录存放,里面这三个exe文件必须要有,然后把需要处理的视频放在目录下就ok了。更多的更详细的教程自行Google。简单粗暴的用mediacoder,很强大的一款开源软件,直接选择容器MP4用vlc播放器,直接拖拽入软件即可转mp4shotcut—免费开源的软件下载链接 提取码:IcOg

February 25, 2019 · 1 min · jiezi

网页视频流m3u8/ts视频下载

现在很多视频网站播放流视频,都不是采用mp4/flv文件直接播放,而是采用m3u8/ts这种方式播放。简单说就是,网站后台把视频切片成成百上千个xx.ts文件,一般10秒一个,每个都几百kb很小。然后通过xx.m3u8播放列表把这些文件连接起来。通过Chrome DevTool的Network栏,我们可以清楚的看到加载过程:我们直接点击这个playlist.m3u8播放列表文件,在旁边的preview栏中查看内容,可以看到:#EXTM3U#EXT-X-VERSION:3#EXT-X-MEDIA-SEQUENCE:0#EXT-X-ALLOW-CACHE:YES#EXT-X-TARGETDURATION:11#EXTINF:5.250000,out000.ts#EXTINF:9.500000,out001.ts#EXTINF:8.375000,out002.ts#EXTINF:5.375000,out003.ts#EXTINF:9.000000,out004.ts………..那我们怎么下载呢?下载视频所有的ts切片文件一般的思路是,想办法把所有的ts切片文件下载下来,然后合成一个完整的视频。然而,配合xx.m3u8播放列表文件,我们可以直接用ffmpeg在线下载播放列表中所有的视频,然后直接用ffmpeg合并为一个视频。我们就直接执行这一句命令即可:$ ffmpeg -i <m3u8-path> -c copy OUTPUT.mp4$ ffmpeg -i <m3u8-path> -vcodec copy -acodec copy OUTPUT.mp4# 例如:ffmpeg -i https://v6.438vip.com/2018/10/17/3JAHPTdvPhQb9LrE/playlist.m3u8 -c copy OUTPUT.mp4然后就会看到这样的下载过程:为什么下载播放列表就能下载所有的切片文件?因为播放列表里的都是相对路径,既然我们有了播放列表的绝对路径,那么其它所有文件的绝对路径也就不难获取了。好在ffmpeg直接实现了这种播放列表一键下载的方式。

February 15, 2019 · 1 min · jiezi

新闻客户端短视频同一资源重新播放画面概率变模糊的问题定位分析

之前在总结2018年工作的时候,提醒开发者,除了关注需求外,也要关注下使用的api背后的逻辑以原理。很多开发者要关注一下这方面,出问题之后,多少有点概念或想法,知道从哪里开始查找问题。今天遇到一个类似的情况,很简单的一个问题,开发者没有正确的分析思路,盲目的无依据的怀疑框架。问题是这样的“新闻客户端的短视频同一个内容,重新播放退出再播放,画面有时候清晰,有时候模糊”。先看问题描述,以及现场应该可以得出重新开始之后视频质量不一样的结论,至于为什么不一样,是后边调查的事情。再看log,可以肯定重新播放后请求的视频的质量是不一样的,虽然内容一样但是视频质量或文件不同。qos002.png看到这里,再确认下url是否有变化,就很清楚了。最终结论,服务端对一个内容配置了不同质量的资源,重复播放拿url的时候,没有固定拿某个质量url,出现了随机情况(可能没有使用好内容平台的api或没有协调好,比如是不是忽略了jason里的其它key),可以采取固定或根据网络情况来决定,拉取什么质量的资源。作为开发者需求之外多了解些专业业务知识,会让你如鱼得水,拒绝做java的搬运工。

January 15, 2019 · 1 min · jiezi

一场稳定、高清、流畅的大型活动直播是怎么炼成的?

双11猫晚是家喻户晓的综艺晚会,在今年的双11,阿里集团为2500万用户提供了一场在线直播视觉盛宴。网友评价这是一场既稳定流畅又高清的直播,当然在这背后离不开阿里云的技术支持。本次天猫晚会中,视频云首次采用4k和50帧的技术,把整个画质提升到接近肉眼极限,同时为用户提供了如丝般顺滑的直播体验。那么这么一场大型活动的直播究竟是如何炼成的呢?阿里云视频云技术专家裘良科带我们从稳定、画质、流畅、监控四个方面开始解读。如何做到100%稳定?裘良科认为:“最安全的做法就是做好500%的准备,以不便应万变。”下图是双11直播的技术架构,分为几大部分:直播源站、视频直播中心和CDN分发系统和客户端。简单的看这张图,所有的链路都是双备份的。直播源站部分,采用了多线收流、主备转码器、多线专线等策略,直播中心都是多机房接入,再采用多流合并,当任何一个机房出现问题的时候,输出的直播流是不会受任何影响的。在这之后,直播中心会对直播流进行转码、录制、智能处理、切片、时移回放等处理,中间所有模块都是专有资源池供大型活动使用,保证不会受其他活动影响。任何一个模块发生异常,都可以秒级进行切换。产生到的内容在分发之前,会先进行存储,中心主备。到了分发环节,会实时检查源站的质量,并进行切换。在这样的架构之下,任何单点、单机房、单线路、单模块的故障,都不会导致直播服务不可用,几乎做到绝对安全。当然,除了自身稳定之外,安全也十分重要。在安全方面,视频云在推流、播放和拉流等环节,采用多重鉴权、IP黑白名单、播放格式/地区/IP等限制、HTTPS、防劫持等能力,实现全链路安全保障。如何让用户享受到极致的画质?一、实时4K直播视频清晰度作为衡量用户体验的重要指标,也是视频云技术团队十分关注的方向。本次猫晚的视频清晰度再度升级,通过阿里云直播服务提供实时4K直播,将现场4K超高清、高帧率的视频实时处理,进行画质提升。在4K视频的处理上,直播服务大规模使用GPU进行视频处理及转码,大大提升了实时视频处理能力,保证了直播视频最高4K的HEVC实时转码。据悉,4K高清直播已在阿里云的众多游戏直播客户中广泛使用。二、50帧极清阿里云和优酷合力研发的50帧极清技术,可通过人工智能算法预测运动方向和轨迹,将原始的每秒25帧画面普通电视信号变换为每秒50帧画面的高帧率视频内容,给用户提供更加流畅的沉浸式观看体验。50帧极清的效果,就像去电影院看大片,动作效果非常丰富的情况下,也不存在顿挫感。今年夏天的世界杯和本次双11猫晚都采用50 帧技术,视觉上看是非常流畅的。三、码率(比特率)最佳配比除了4K技术,基于内容进行编码优化也是视频云的优势。裘良科表示:“阿里的窄带高清技术精髓就在于使每一个比特分配到最需要它的地方。”这里我们先来看几个概念:分辨率是图像精密度的概念,代表着质量的极限,是不是越大越好呢?是也不是。分辨率大,点就多,需要的码率就高,需要的带宽就会变大,传输成本和对网络的要求都会变大。码率,比就是比特率,它代表单位时间传送的数据位数,视频文件大小就是由码率决定的,而且是成正比。帧率,代表着视觉流畅度,在我国通常帧率在25帧左右。然而帧率达到50-60的时候,我们几乎肉眼察觉不到间隔和差异。那我们如何在帧间和帧内进行合理码率分配,以达到最优的平衡呢?1. 合理分配帧间码率每一帧都需要码率来显示图像,那么我们如何判断哪一帧需要较多的帧率?哪一帧需要较少呢?其实这就需要基于对内容的分析,提前进行预判,你认为这一帧是复杂的画面,比如好莱坞动作大片,就多分配帧率,如果这一阵比较简单,比如新闻联播,就少分配。以此来实现合理的帧间码率分配。2. 合理分配帧内码率在整个图像中,并不是全部都需要非常清楚的。比如说你在看晚会的时候,你看的是中间的人物嘉宾,所以把人物和脸识别出来,就是你眼睛聚焦的地方,多分配一些码率。同时,衣服的褶皱纹理也多分配一些码率,背景作为脱焦区域,就少分配一些码率了。通过帧间、帧内的码率分配,让整个视频的质量更高。在同等码率之下,获得更高的质量。同样质量之下,可以节省更多带宽。那在播放层面,如何保证流畅不卡顿呢?裘良科认为,在确保直播流畅度上,全球覆盖的CDN节点和精准调度系统缺一不可。CDN节点是采用分布式架构,拥有遍布全球的1500个节点和充足的带宽储备,单节点带宽 40Gbps+,全网带宽输出能力120 Tbps。同时采用四层智能调度架构(如下图),来确保整个分发的流畅。如何实现精准调度,确保大型活动突发峰值的流畅但是面对晚会等大型活动,突发峰值非常高,需要更精准的调度策略,来实现调度。打比方有一个装了很多冰块和水的杯子,如果我们要把杯子里面的狭小空间全部用上,我们先要把冰块放进去,再倒液态水。DNS的协议限制类似冰块。其他别的调度形式,比如IP调度,可以做好请求级别的调度,也就是支持任意比例的负载均衡,就像液态水一样。所以,在智能调度的场景里,把“固体”和“液体”结合起来考虑,才能做到所有的节点、水位的精准控制,实现更精准的调度。同时,在码率瞬间激增的情况下,常规的流量预测算法失算了,进而会干扰流控程序, 这个问题阿里云使用了基于AI流量预测进行预调度,在10分钟内的预测的精准度到98%,一小时的精准度95%以上。监控系统保驾护航在确保了稳定、画质和流畅之后,一场大型活动的直播离不开监控系统。我们肯定需要对当前的直播状态做监控,以确保及时调整策略。监控从以下四个方面进行:1、流监控:针对每一路流进行秒级实时监控,及时获得直播流的帧率、码率、时间戳等状态2、播放质量监控:实时获知服务端慢速比,用户端卡顿率3、可用性监控:实时返回视频5XX等播错误数据,及时定位视频失败原因4、业务量监控:实时获取当前在线用户数作为这场猫晚的唯一网络直播平台,优酷平台上直播观看人数近2500万,是去年的两倍。这也是阿里云视频云第四年支持双11猫晚网络直播,从作战室监控的数据上来看,猫晚直播期间各项系统数据指标运转平稳,一场稳定、高清、流畅的大型活动直播就就此实现。经过世界杯、双11猫晚等多次锤炼,视频云直播服务已经具备一整套大型赛事/活动/综艺直播的服务经验,并实现对阿里云各行业客户的赋能,为视频行业创造更多价值。本文作者:樰篱 阅读原文本文为云栖社区原创内容,未经允许不得转载。

January 2, 2019 · 1 min · jiezi

如何快速打造一款高清又极速的短视频APP?

整个短视频的市场规模一直在增长,网络数据显示2018年已经突破100亿大关,在2019年预测将超过200亿。纵观行业,在生活资讯、美食、搞笑、游戏、美妆等领域,短视频流量巨大但竞争激烈,但是在教育、财经、军事、旅游等行业还存在较大的机会。那么在这些垂直行业里,我们如何结合短视频能力,实现业务突破?近期的云栖TechDay音视频技术专场中,阿里云视频云高级技术专家王海华现场分享了《高清极速-全面提升短视频应用体验》议题。他表示,作为短视频SDK服务提供方,视频云一直和客户同样关注如何把短视频的产品和体验做得更极致。本次分享讲从端到云再到端,探讨如何进行思考与优化,实现视频体验的全面提升。短视频的业务特征短视频可以随时随地进行拍摄、分享与浏览,所以它存在着海量的上传和播放用户在移动端消费短视频的机型和网络情况十分复杂用户对短视频体验的追求是清晰和流畅,而作为开发者,也需要考虑到流量与用户体验的平衡关于视频云全链路优化的技术实践阿里云视频云提供一站式短视频解决方案,并从整个链路上进行技术优化。在生产端,短视频SDK支持视频拍摄、导入编辑和视频上传的能力;当视频传到云端,支持媒体转码、存储、视频AI分析处理功能。在分发环节,通过全球节点、智能调度和热门视频预热资源,将视频内容更稳定极速的分发至消费端;最终在播放端,播放器SDK可以实现快速启播、播放缓存、无缝循环播放和多清晰度切换。一、视频生产端-帧率与低端机型体验优化在视频拍摄阶段,用户最关注视频的清晰度和流畅度。这其中的优化包括几个环节:1. 预览帧率的提升摄像头采集到数据直到呈现到屏幕上,采用GPU驱动渲染,保证渲染的实时性,减少延迟和丢帧的情况。同时,针对人脸特效的渲染,采集3buffer的CPU回调方案,减少buffer资源等待造成的帧率下降。2. 录制帧率的提升录制是把视频帧编码的过程。整体采用GPU直接渲染到硬编Surface的方案,同时保留了之前的buffer方案作为软编的适配,在编码的延迟和丢帧缩短到最小。3. 针对低端机型 定义最优适配移动终端机型复杂度极高,硬件能力、性能、屏幕分辨率等等指标千差万别,如果想要最大限度保证低端机上的视频质量,就要在提升清晰度和流畅度的时候,降低分辨率。那么问题又来了,在什么机型上降低?怎么降低?到底降低多少合适?阿里云短视频SDK又多往前走了一步,多做了一点点。经过大量的数据分析和适配测试完成了在不同性能手机的适配。要提升整个视频的清晰度视频编码是永远绕不开的一个话题,在阿里云除了在编码器算法的优化以外,也从更加贴近业务场景的角度进一步优化。在如此多的业务场景,一种编码技术和编码参数是解决不了所有问题,所以针对不同场景,需要完成相应的编码优化。比如以质量优先的场景,会适当牺牲转码速度或者压缩率,以保证清晰度最佳;以转码速度优先的场景,会调整质量,以适实现更高的转码速度。这样更有针对性的编码调优,就可以根据需求实现场景化的平衡。除此之外,还从更加上层的用户体验上做了很多细节的优化。王海华表示:“从相册选择资源进入编辑界面,从点击合成按钮进入发布界面,从点击发布界面回到APP的主界面等这些环节的交互流畅度也直接影响用户体验。这其中的优化点:首先是当从相册选择多个图片或者视频合成视频时,我们底层支持图片视频混编的能力从而缩短loading时间,减少等待时间;其次支持后台合成和后台上传,点击合成按钮和发布按钮的时候我们直接进入后台进行合成和上传,让APP可以更快的进入到下一个界面,从而提升用户体验。”“在视频生产端经过了以上的优化后,看起来我们可以根据对应的场景拿到自己需要的视频,所有的问题都解决了。但是面临着海量上传和播放,以及复杂的网络,我们怎么保证上传速率和上传功率?在播放环节上又怎样去保证播放流畅度?作为开发者(我们的客户)又怎么控制带宽成本呢?”接下来,王海华带我们了解了在上传、云端处理和分发以及播放几个环节中的优化点以及带来的效果。二、视频上传链路优化在视频上传链路,需要核心关注速度和上传成功率两个指标。视频云支持动态加速,选择最优路径来就近上传数据,保证极速上传。同时,采用分片、断点续传技术,针对不同地域和场景决定分片大小,确保上传成功率在99.2%以上。三、云端处理&分发当视频上传到云端,就需要对其进行转码等处理,并进行内容分发。这其中我们针对三个指标进行关注和优化:1. 视频发布速度不同的场景,需要的视频发布速度是不同的。对于聊天场景下的视频发布,直接在端上进行转码,把原视频直接访问,最大限度提升速度。对于对实时性要求并没有那么高的视频社交APP等场景往往在上传的时候会上传一个码率相对较高的高清视频,为了视频快速启播,我们推荐可以先运用低复杂度转码来加快转码速度;在未来,也会将视频端上合成、上传和云端转码并行处理,大幅度缩短处理时间。2. 转码成本 vs. 带宽成本在很多社区里面当一个视频变成热门视频的时候,这时候带宽会带来更大的成本,这个时候建议对热门视频重新转码,提升转码复杂度,将视频文件变小,降低带宽成本。3. 提升播放体验因为用户的终端和网络情况不同,所以需要进行多清晰度转码,并采用推荐视频预热方案,提升启播速度和流畅度四、视频播放优化播放端直接影响着用户体验,这里我们需要关注几个指标:打开速度的快慢影响着用户对产品的第一印象,启播环节用到协议优化、解码渲染优化、视频列表预加载等方案,实现极速启播。短视频通常比较短小,通常会采用循环播放的方式来吸引用户重复观看,避免流失。那无缝地循环播放、同时边播放边缓存就十分必要,可以节省流量。终端网络情况复杂,但播放流畅度依然是用户十分在意的指标。当用户出现网络环境的变更,需要快速切换多种清晰度的视频,保证视频播放的流畅。如何进行产品快速落地一、客户端短视频SDK将最新最流行的功能、交互集成到产品级Demo中,并开放了源码,开发者拿到以后可以直接集成到应用中,或者基于源代码进行业务的适配,快速开发出一款短视频APP。Demo提供了拍摄、编辑、播放等模块,同时提供相册管理、音乐、动图、字体等资源的下载和管理,也提供了异步上传发布功能、AppServer业务服务器的SampleCode。二、服务端在云端,短视频SDK与视频点播服务打通,提供了丰富的媒体管理和媒体处理能力,开发者通过简单的配合和API调用就可以将以下功能集成到业务当中。媒资存储:音频,视频,图片,字幕等丰富的存储能力;媒资管理:提供了分类,打标,搜索,审核能能力等;数据统计:存储,流量/带宽,播放量等数据统计;感兴趣的用户,可以扫描上方二维码体验demo,点击访问阿里云官网短视频解决方案页面,了解详情,或者点击浏览趣视频解决方案文档,更快上手本文作者:樰篱阅读原文本文为云栖社区原创内容,未经允许不得转载。

December 29, 2018 · 1 min · jiezi

短视频宝贝=慢?阿里巴巴工程师这样秒开短视频

前言随着短视频兴起,各大APP中短视频随处可见,feeds流、详情页等等。怎样让用户有一个好的视频观看体验显得越来越重要了。大部分feeds里面滑动观看视频的时候,有明显的等待感,体验不是很好。针对这个问题我们展开了一波优化,目标是:视频播放秒开,视频播放体验良好。无图无真相,上个对比图,左边是优化之前的,右边是优化之后的:问题分析视频格式的选择在正式分析问题之前有必要说明下:我们现在首页的视频,都是320p H.264编码的mp4视频。H.264 & H.265H.264也称作MPEG-4AVC(Advanced Video Codec,高级视频编码),是一种视频压缩标准,同时也是一种被广泛使用的高精度视频的录制、压缩和发布格式。H.264因其是蓝光光盘的一种编解码标准而著名,所有蓝光播放器都必须能解码H.264。H.264相较于以前的编码标准有着一些新特性,如多参考帧的运动补偿、变块尺寸运动补偿、帧内预测编码等,通过利用这些新特性,H.264比其他编码标准有着更高的视频质量和更低的码率.H.265/HEVC的编码架构大致上和H.264/AVC的架构相似,也主要包含:帧内预测(intra prediction)、帧间预测(inter prediction)、转换 (transform)、量化 (quantization)、去区块滤波器(deblocking filter)、熵编码(entropy coding)等模块。但在HEVC编码架构中,整体被分为了三个基本单位,分别是:编码单位(coding unit,CU)、预测单位(predict unit,PU) 和转换单位(transform unit,TU )。总的来说H.265压缩效率更高,传输码率更低,视频画质更优。看起来使用H.265似乎是很明智的选择,但我们这里选择的是H.264。原因是:H.264支持的机型范围更为广泛。 PS:闲鱼H.265视频在宝贝详情页会在近期上线,敬请关注体验!TS & FLV & MP4TS是日本高清摄像机拍摄下进行的封装格式,全称为MPEG2-TS。TS即"Transport Stream"的缩写。MPEG2-TS格式的特点就是要求从视频流的任一片段开始都是可以独立解码的。下述命令可以把mp4转换成ts格式,从结果来看ts文件(4.3MB)比mp4文件(3.9MB)大10%左右。ffmpeg -i input.mp4 -c copy output.tsFLV是FLASH VIDEO的简称,FLV流媒体格式是随着Flash MX的推出发展而来的视频格式。由于它形成的文件极小、加载速度极快,使得网络观看视频文件成为可能,它的出现有效地解决了视频文件导入Flash后,使导出的SWF文件体积庞大,不能在网络上很好的使用等问题。FLV只支持一个音频流、一个视频流,不能在一个文件里包含多路音频流。音频采样率不支持48k,视频编码不支持H.265。相同编码格式下,文件大小和mp4几乎没有区别。 ffmpeg -i input.mp4 -c copy output.flv MP4是为大家所熟知的一种视频封装格式,MP4或称MPEG-4第14部分是一种标准的数字多媒体容器格式。MPEG-4第14部分的扩充名为.mp4,以存储数字音频及数字视频为主,但也可以存储字幕和静止图像。因其可容纳支持比特流的视频流,MP4可以在网络传输时使用流式传输。其兼容性很好,几乎所有的移动设备都支持,而且还能在浏览器、桌面系统进行播放。综合上面几个封装格式的特点,我们的最终选择是MP4.播放流程一个视频在客户端的播放流程是怎么样的?播放首开慢耗时在什么地方?耗时点是否能够快速低成本的解决?了解视频的播放流程有助于找到问题的突破口。视频从加载到播放可以分为三个阶段:读取(IO):“获取” 内容 -> 从 “本地” or “服务器” 上获取解析(Parser):“理解” 内容 -> 参考 “格式&协议” 来 “理解” 内容渲染(Render):“展示” 内容 -> 通过扬声器/屏幕来 “展示” 内容可以看出内容获取从“服务器”改为“本地”,这样会节省很大一部分时间,而且成本很低,是一个很好的切入点。事实也是如此,我们的优化正是围绕此点展开。PS: 我们使用的网络库,播放器都是集团内部的,本身做了很多优化。本文不涉及网络协议,播放器方面的优化讨论。技术方案鉴于上面的分析,我们要做的工作是:把mp4文件提前缓存一部分,到feeds滑动要播放的时候,播放本地的mp4文件。由于用户可能继续观看视频,所以本地的数据播放完后,需要从网络下载数据进行播放。这里需要解决两个问题:应该提前下载多少数据缓存数据播放完成后该怎么切换到网络数据MOOV BOX的位置对于第一个问题,我们不得不分析一下mp4的文件结构,看看我们应该下载多少数据量合适。MP4是由很多Box 组成的,Box里面可以嵌套Box:这里不详细介绍MP4的格式信息。但是可以看出moov box对播放很关键,它提供的信息如:宽高、时长、码率、编码格式、帧列表、关键帧列表等等。播放器没有获取到moov box是没办法进行播放的。所以下载的数据应该要包含moov box再加上几十帧的数据。做了一个简单的计算:闲鱼短视频一般最长是30s,feeds里面的分辨率是320p,码率是1141kb/s,ftyp+moov这个视频的数据量在31kb左右(打开文件可以看出mdat是从31754byte的位置开始的),所以,头部信息+10帧的数据大约是:(31kb + 1141kb/3)/8 = 51KBProxy第二个问题:缓存数据播放完成后该怎么切换到网络数据呢?在本地数据播放完成之后,设置一个网络地址给播放器,告诉播放器下载的offset是多少,然后继续从网络下载数据播放。这样看起来可行,但是需要播放器提供支持:本地数据播放完成的回调;设置网络url并支持offset。另外,服务端需要支持range参数,而且切换到网络播放的时候需要新建立网络连接,很可能会造成卡顿。最终,我们选择了proxy的方式,把proxy作为中间人,负责预加载数据、给播放器提供数据,切换逻辑在proxy里面来完成。未加入proxy之前流程是这样的:加入了proxy之后流程是这样的:这样做的好处很明显,我们可以在proxy里面做很多事情:例如本地文件缓存数据和网络数据的切换工作。甚至是和CDN使用其它的协议进行通信。我们这里假定预加载工作已经完成,看看播放器是怎么和proxy进行交互的。播放的时候会用Proxy提供的一个localhost的url进行播放,这样代理服务器会收到网络请求,把本地预加载的数据返回给播放器。播放器完全感知不到proxy模块、预加载模块的存在。播放器、预加载模块都是Proxy的client,调用逻辑都是一样。图示说明如下:下面逐步解释一下,数据的加载过程:Client发起http请求获取数据,箭头1所示文件缓存如果存在所请求的数据则直接返回数据,箭头2所示若本地文件缓存数据不够,则发起网络请求,向CDN请求数据,箭头3所示获取网络数据,写入文件缓存,箭头4所示返回请求的数据给Client,箭头2所示实现模块预加载模块确定了技术方案后,预加载模块还是有很多工作要做的。在列表网络数据解析完成后会触发视频预加载,首先会根据url生成md5值,然后去查看这个md5值对应的任务是否存在,如果存在则不会重复提交。生成任务后会提交到线程池,在后台线程进行处理。网络从Wifi切换到3G的时候,会把任务取消,防止消耗用户的数据流量。预加载任务在线程池执行的时候,其流程是这样的:首先会获取一个本地代理的url。然后发起http请求。Proxy会收到http请求进行处理,开始做真正的数据预加载工作。预加载模块读取到指定的数据量后终止。到此,预加载的任务就已完成。流程图如下所示:在用户快速滑动的时候,怎么能保证视频还能继续秒开呢?预加载模块对于每一个任务都会维护一个状态机,在Fling的时候会把划过的任务暂停下,把最新要显示的任务优先级提高,让其优先执行。Proxy模块Proxy内部有个local的httpServer负责拦截播放器和预加载模块的http请求。client在请求时会带入CDN的url,在本地缓存数据没有的时候会去CDN获取新鲜数据。因为有多个地方向Proxy请求数据,所以用线程池来处理多个client的连接很有必要,这样多个client可以并行,不会因为前面有client在请求而阻塞。文件缓存使用LruDiskCache,在超过指定文件大小后,老的缓存文件会删除,这是一个在使用文件缓存时很容易忽视的问题。由于我们的场景视频是连续播放的,不存在seek的情况,所以文件缓存相对比较简单,不用考虑文件分段的情况。Proxy内部对于同一个url会映射到一个client,如果预加载和播放同时进行,数据只会有一份,不会去重复下载数据。再来一个Proxy内部构造示意图:遇到的问题在测试中发现,有的视频还是会播放很慢,仔细查看本地的确缓存了期望的数据大小,但是播放的时候还是有较长的等待时间,这种视频有个特点:moov box在尾部。对于moov在尾部的视频,是整个文件都下载完成后才进行播放的,原因是moov box里面存了很多关键信息,前面分析mp4格式的时候有提到。对于这个问题有两个解法:解法一:服务端在进行转码的时候保证moov的头部在前面,发现moov位置不正确的视频服务端进行订正。PS:查看moov在文件中的位置可以用hex文本编辑器打开,按字符搜索moov所在的位置即可,MAC上面还可以使用MediaParser , 另外还可以用ffmpeg命令生成moov在头部或者尾部的mp4文件。例如: 从1.mp4 copy一个文件,使其moov头在尾部ffmpeg -i 1.mp4 -c copy -f mp4 output.mp4 从1.mp4 copy一个文件,使其moov头在头部:ffmpeg -i 1.mp4 -c copy -f mp4 -movflags faststart output2.mp4解法二不用修改moov box的位置,而是在播放端进行处理,播放端需要检测流信息,如果moov前面没有,就去请求文件的尾部信息。具体就是:发起 HTTP MP4 请求,读取响应 body 的开头,如果发现 moov 在开头,就接着往下读mdat。如果发现开头没有,先读到 mdat,马上 RESET 这个连接,然后通过 Range 头读取文件末尾数据,因为前面一个 HTTP 请求已经获取到了 Content-Length ,知道了 MP4 文件的整个大小,通过 Range 头读取部分文件尾部数据也是可以的。示意图如下这个方案的缺点是:对于moov box在尾部的视频会多两次http connection。结语本文介绍了常见的视频编码格式,视频封装格式,介绍了moov头信息对于视频播放的影响。随着对于播放流程的分析,我们找到了问题的切入点。简单说就是围绕着数据预加载展开,把网络请求数据的工作提前完成,播放的时候直接从缓存读取,而且后续的视频回看都是从缓存读取,不仅解决了视频初始化播放慢的问题,还解决了播放缓存问题,可以说是一箭双雕。Proxy是这个方案的核心思想,本地localhost的url是一个关键纽带,视频预加载模块和播放器模块解耦彻底,换了播放器照样可以使用。到此为止,视频feeds秒开优化就已完成。上线后的数据来看视频打开速度在800ms左右。回过头来,或许我们还可以更进一步,可以对预加载收到的数据进行验证,确保缓存了准确的信息,而不是固定的数值。还可以进行更加深度的优化,让用户观看视频的体验更加顺滑。参考文献* AndroidVideoCache* 视频的封装格式和编码格式* 播放器技术分享(1):架构设计* MP4文件格式的解析,以及MP4文件的分割算法* 从天猫某活动视频3次请求说起* [视音频编解码学习工程:FLV封装格式分析器]https://blog.csdn.net/leixiaohua1020/article/details/17934487* https://www.adobe.com/content/dam/acom/en/devnet/flv/video_file_format_spec_v10_1.pdf* https://baike.baidu.com/item/flv* https://standards.iso.org/ittf/PubliclyAvailableStandards/index.html本文作者:闲鱼技术-邻云阅读原文本文为云栖社区原创内容,未经允许不得转载。 ...

December 21, 2018 · 1 min · jiezi

10分钟学会使用YOLO及Opencv实现目标检测(下)|附源码

摘要: 本文介绍使用opencv和yolo完成视频流目标检测,代码解释详细,附源码,上手快。在上一节内容中,介绍了如何将YOLO应用于图像目标检测中,那么在学会检测单张图像后,我们也可以利用YOLO算法实现视频流中的目标检测。将YOLO应用于视频流对象检测首先打开 yolo_video.py文件并插入以下代码:# import the necessary packagesimport numpy as npimport argparseimport imutilsimport timeimport cv2import os# construct the argument parse and parse the argumentsap = argparse.ArgumentParser()ap.add_argument("-i", “–input”, required=True, help=“path to input video”)ap.add_argument("-o", “–output”, required=True, help=“path to output video”)ap.add_argument("-y", “–yolo”, required=True, help=“base path to YOLO directory”)ap.add_argument("-c", “–confidence”, type=float, default=0.5, help=“minimum probability to filter weak detections”)ap.add_argument("-t", “–threshold”, type=float, default=0.3, help=“threshold when applyong non-maxima suppression”)args = vars(ap.parse_args())同样,首先从导入相关数据包和命令行参数开始。与之前不同的是,此脚本没有– image参数,取而代之的是量个视频路径:– input :输入视频文件的路径;– output :输出视频文件的路径;视频的输入可以是手机拍摄的短视频或者是网上搜索到的视频。另外,也可以通过将多张照片合成为一个短视频也可以。本博客使用的是在PyImageSearch上找到来自imutils的VideoStream类的 示例。下面的代码与处理图形时候相同:# load the COCO class labels our YOLO model was trained onlabelsPath = os.path.sep.join([args[“yolo”], “coco.names”])LABELS = open(labelsPath).read().strip().split("\n")# initialize a list of colors to represent each possible class labelnp.random.seed(42)COLORS = np.random.randint(0, 255, size=(len(LABELS), 3), dtype=“uint8”)# derive the paths to the YOLO weights and model configurationweightsPath = os.path.sep.join([args[“yolo”], “yolov3.weights”])configPath = os.path.sep.join([args[“yolo”], “yolov3.cfg”])# load our YOLO object detector trained on COCO dataset (80 classes)# and determine only the output layer names that we need from YOLOprint("[INFO] loading YOLO from disk…")net = cv2.dnn.readNetFromDarknet(configPath, weightsPath)ln = net.getLayerNames()ln = [ln[i[0] - 1] for i in net.getUnconnectedOutLayers()]在这里,加载标签并生成相应的颜色,然后加载YOLO模型并确定输出层名称。接下来,将处理一些特定于视频的任务:# initialize the video stream, pointer to output video file, and# frame dimensionsvs = cv2.VideoCapture(args[“input”])writer = None(W, H) = (None, None)# try to determine the total number of frames in the video filetry: prop = cv2.cv.CV_CAP_PROP_FRAME_COUNT if imutils.is_cv2() \ else cv2.CAP_PROP_FRAME_COUNT total = int(vs.get(prop)) print("[INFO] {} total frames in video".format(total))# an error occurred while trying to determine the total# number of frames in the video fileexcept: print("[INFO] could not determine # of frames in video") print("[INFO] no approx. completion time can be provided") total = -1在上述代码块中:打开一个指向视频文件的文件指针,循环读取帧;初始化视频编写器 (writer)和帧尺寸;尝试确定视频文件中的总帧数(total),以便估计整个视频的处理时间;之后逐个处理帧:# loop over frames from the video file streamwhile True: # read the next frame from the file (grabbed, frame) = vs.read() # if the frame was not grabbed, then we have reached the end # of the stream if not grabbed: break # if the frame dimensions are empty, grab them if W is None or H is None: (H, W) = frame.shape[:2]上述定义了一个 while循环, 然后从第一帧开始进行处理,并且会检查它是否是视频的最后一帧。接下来,如果尚未知道帧的尺寸,就会获取一下对应的尺寸。接下来,使用当前帧作为输入执行YOLO的前向传递 :ect Detection with OpenCVPython # construct a blob from the input frame and then perform a forward # pass of the YOLO object detector, giving us our bounding boxes # and associated probabilities blob = cv2.dnn.blobFromImage(frame, 1 / 255.0, (416, 416), swapRB=True, crop=False) net.setInput(blob) start = time.time() layerOutputs = net.forward(ln) end = time.time() # initialize our lists of detected bounding boxes, confidences, # and class IDs, respectively boxes = [] confidences = [] classIDs = []在这里,构建一个 blob 并将其传递通过网络,从而获得预测。然后继续初始化之前在图像目标检测中使用过的三个列表: boxes 、 confidences、classIDs : # loop over each of the layer outputs for output in layerOutputs: # loop over each of the detections for detection in output: # extract the class ID and confidence (i.e., probability) # of the current object detection scores = detection[5:] classID = np.argmax(scores) confidence = scores[classID] # filter out weak predictions by ensuring the detected # probability is greater than the minimum probability if confidence > args[“confidence”]: # scale the bounding box coordinates back relative to # the size of the image, keeping in mind that YOLO # actually returns the center (x, y)-coordinates of # the bounding box followed by the boxes’ width and # height box = detection[0:4] * np.array([W, H, W, H]) (centerX, centerY, width, height) = box.astype(“int”) # use the center (x, y)-coordinates to derive the top # and and left corner of the bounding box x = int(centerX - (width / 2)) y = int(centerY - (height / 2)) # update our list of bounding box coordinates, # confidences, and class IDs boxes.append([x, y, int(width), int(height)]) confidences.append(float(confidence)) classIDs.append(classID)在上述代码中,与图像目标检测相同的有:循环输出层和检测;提取 classID并过滤掉弱预测;计算边界框坐标;更新各自的列表;接下来,将应用非最大值抑制: # apply non-maxima suppression to suppress weak, overlapping # bounding boxes idxs = cv2.dnn.NMSBoxes(boxes, confidences, args[“confidence”], args[“threshold”]) # ensure at least one detection exists if len(idxs) > 0: # loop over the indexes we are keeping for i in idxs.flatten(): # extract the bounding box coordinates (x, y) = (boxes[i][0], boxes[i][1]) (w, h) = (boxes[i][2], boxes[i][3]) # draw a bounding box rectangle and label on the frame color = [int(c) for c in COLORS[classIDs[i]]] cv2.rectangle(frame, (x, y), (x + w, y + h), color, 2) text = “{}: {:.4f}".format(LABELS[classIDs[i]], confidences[i]) cv2.putText(frame, text, (x, y - 5), cv2.FONT_HERSHEY_SIMPLEX, 0.5, color, 2)同样的,在上述代码中与图像目标检测相同的有:使用cv2.dnn.NMSBoxes函数用于抑制弱的重叠边界框,可以在此处阅读有关非最大值抑制的更多信息;循环遍历由NMS计算的idx,并绘制相应的边界框+标签;最终的部分代码如下: # check if the video writer is None if writer is None: # initialize our video writer fourcc = cv2.VideoWriter_fourcc(*“MJPG”) writer = cv2.VideoWriter(args[“output”], fourcc, 30, (frame.shape[1], frame.shape[0]), True) # some information on processing single frame if total > 0: elap = (end - start) print("[INFO] single frame took {:.4f} seconds”.format(elap)) print("[INFO] estimated total time to finish: {:.4f}".format( elap * total)) # write the output frame to disk writer.write(frame)# release the file pointersprint("[INFO] cleaning up…")writer.release()vs.release()总结一下:初始化视频编写器(writer),一般在循环的第一次迭代被初始化;打印出对处理视频所需时间的估计;将帧(frame)写入输出视频文件;清理和释放指针;现在,打开一个终端并执行以下命令:$ python yolo_video.py –input videos/car_chase_01.mp4 \ –output output/car_chase_01.avi –yolo yolo-coco[INFO] loading YOLO from disk…[INFO] 583 total frames in video[INFO] single frame took 0.3500 seconds[INFO] estimated total time to finish: 204.0238[INFO] cleaning up…在视频/ GIF中,你不仅可以看到被检测到的车辆,还可以检测到人员以及交通信号灯!YOLO目标检测器在该视频中表现相当不错。让现在尝试同一车追逐视频中的不同视频:$ python yolo_video.py –input videos/car_chase_02.mp4 \ –output output/car_chase_02.avi –yolo yolo-coco[INFO] loading YOLO from disk…[INFO] 3132 total frames in video[INFO] single frame took 0.3455 seconds[INFO] estimated total time to finish: 1082.0806[INFO] cleaning up…YOLO再一次能够检测到行人!或者嫌疑人回到他们的车中并继续追逐:$ python yolo_video.py –input videos/car_chase_03.mp4 \ –output output/car_chase_03.avi –yolo yolo-coco[INFO] loading YOLO from disk…[INFO] 749 total frames in video[INFO] single frame took 0.3442 seconds[INFO] estimated total time to finish: 257.8418[INFO] cleaning up…最后一个例子,让我们看看如何使用YOLO作为构建流量计数器:$ python yolo_video.py –input videos/overpass.mp4 \ –output output/overpass.avi –yolo yolo-coco[INFO] loading YOLO from disk…[INFO] 812 total frames in video[INFO] single frame took 0.3534 seconds[INFO] estimated total time to finish: 286.9583[INFO] cleaning up…下面汇总YOLO视频对象检测完整视频:Quaker Oats汽车追逐视频;Vlad Kiraly立交桥视频;“White Crow”音频;YOLO目标检测器的局限和缺点YOLO目标检测器的最大限制和缺点是:它并不总能很好地处理小物体;它尤其不适合处理密集的对象;限制的原因是由于YOLO算法其本身:YOLO对象检测器将输入图像划分为SxS网格,其中网格中的每个单元格仅预测单个对象;如果单个单元格中存在多个小对象,则YOLO将无法检测到它们,最终导致错过对象检测;因此,如果你的数据集是由许多靠近在一起的小对象组成时,那么就不应该使用YOLO算法。就小物体而言,更快的R-CNN往往效果最好,但是其速度也最慢。在这里也可以使用SSD算法, SSD通常在速度和准确性方面也有很好的权衡。值得注意的是,在本教程中,YOLO比SSD运行速度慢,大约慢一个数量级。因此,如果你正在使用预先训练的深度学习对象检测器供OpenCV使用,可能需要考虑使用SSD算法而不是YOLO算法。因此,在针对给定问题选择对象检测器时,我倾向于使用以下准则:如果知道需要检测的是小物体并且速度方面不作求,我倾向于使用faster R-CNN算法;如果速度是最重要的,我倾向于使用YOLO算法;如果需要一个平衡的表现,我倾向于使用SSD算法;想要训练自己的深度学习目标检测器?在本教程中,使用的YOLO模型是在COCO数据集上预先训练的.。但是,如果想在自己的数据集上训练深度学习对象检测器,该如何操作呢?大体思路是自己标注数据集,按照darknet网站上的指示及网上博客自己更改相应的参数训练即可。或者在我的书“ 深度学习计算机视觉与Python”中,详细讲述了如何将faster R-CNN、SSD和RetinaNet应用于:检测图像中的徽标;检测交通标志;检测车辆的前视图和后视图(用于构建自动驾驶汽车应用);检测图像和视频流中武器;书中的所有目标检测章节都包含对算法和代码的详细说明,确保你能够成功训练自己的对象检测器。在这里可以了解有关我的书的更多信息(并获取免费的示例章节和目录)。总结在本教程中,我们学习了如何使用Deep Learning、OpenCV和Python完成YOLO对象检测。然后,我们简要讨论了YOLO架构,并用Python实现:将YOLO对象检测应用于单个图像;将YOLO对象检测应用于视频流;在配备的3GHz Intel Xeon W处理器的机器上,YOLO的单次前向传输耗时约0.3秒; 但是,使用单次检测器(SSD),检测耗时只需0.03秒,速度提升了一个数量级。对于使用OpenCV和Python在CPU上进行基于实时深度学习的对象检测,你可能需要考虑使用SSD算法。本文作者:【方向】阅读原文本文为云栖社区原创内容,未经允许不得转载。 ...

November 22, 2018 · 5 min · jiezi

程序员节送 1500G 架构师视频,够不够

程序员节送 1500G 架构师视频,够不够视频提取码关注微信公众号:「搜云库」后台回复关键字:“1024"加站长微信好友把网盘视频链接发给站长微信(注意是完全匹配,不能有空格),即可获取 “视频提取码"视频目录Activiti 6.0工作流引擎深度解析与实战https://pan.baidu.com/s/1JVSe…Docker Kubernetes 微服务容器化实战https://pan.baidu.com/s/169fA…Docker Jenkins企业实战视频https://pan.baidu.com/s/1Kiuh…Docker 到Kubernetes技术系列视频教程https://pan.baidu.com/s/1iZUZ…Docker 课程https://pan.baidu.com/s/1L13E…Docker 前后端分离https://pan.baidu.com/s/14byo…Docker 实现PaaS平台视频课程https://pan.baidu.com/s/1kRqW…Docker 视频https://pan.baidu.com/s/1m7i5…Docker 系列视频教程https://pan.baidu.com/s/1esAj…Docker 系统学习 践行DevOps理念https://pan.baidu.com/s/1_Vjb…Docker 虚拟化轻量容器技术教程https://pan.baidu.com/s/1DkoQ…ElasticSearch 5 视频教程https://pan.baidu.com/s/1UdhW…ElasticSearch 6 实战教程https://pan.baidu.com/s/1Mj33…Elasticsearch 顶尖高手系列课程https://pan.baidu.com/s/1ob05…Elasticsearch 分布式全文检索入门视频教程https://pan.baidu.com/s/1cEQW…Elasticsearch、Logstash和Kibana ELK Stack深入浅出视频https://pan.baidu.com/s/1gNW9…FTP服务器架设https://pan.baidu.com/s/1M-4r…Golang 北风网Golang 实战https://pan.baidu.com/s/1lzh5…Golang 传智播客2018Golang 语言https://pan.baidu.com/s/1DGuq…Golang 基于Golang协程实现流量统计系统https://pan.baidu.com/s/13jyF…Golang 慕课网Golang 语言https://pan.baidu.com/s/1HqAc…Golang 无闻Go语言视频教程https://pan.baidu.com/s/1u-2j…Golang 语言基础视频https://pan.baidu.com/s/1L6jM…Golang 语言实战开发一个WEB项目博客系统https://pan.baidu.com/s/1tBq-…Golang 资深工程师深度讲解Go语言https://pan.baidu.com/s/1mtEH…Hadoop 传智播客Hadoop7天培训 非吴超版https://pan.baidu.com/s/1Nr1V…Hadoop 大数据 01https://pan.baidu.com/s/1agMt…Hadoop 黑马Hadoop 视频教程全套https://pan.baidu.com/s/1WumO…Hadoop 马士兵hadoop2.7https://pan.baidu.com/s/1gJ2_…Hadoop 尚学堂_肖斌hadoop100集全https://pan.baidu.com/s/1idWV…Hadoop 泰克全套Hadoop视频https://pan.baidu.com/s/1JAZq…Hibernate 56讲视频教程https://pan.baidu.com/s/1oubv…Hibernate 70讲视频教程https://pan.baidu.com/s/1Bk3t…Hibernate 视频https://pan.baidu.com/s/1GPnp…Java 尚学堂 高并发 马士兵Java高并发编程,Java虚拟机调优https://pan.baidu.com/s/1Fafy…Java 尚学堂_高淇_300集视频教程https://pan.baidu.com/s/1ko9U…Jenkins 持续集成实战系列 + 集成端点 + Jenkins可持续集成https://pan.baidu.com/s/1frYF…Kafka 分布式消息系统实战与JavaScalaHadoopStorm集成https://pan.baidu.com/s/1nWjv…Kafka 高性能消息中间件 分布式集群安装架构原理https://pan.baidu.com/s/1wCjA…Kafka 高性能之道教程https://pan.baidu.com/s/1wNOL…Kafka 消息队列中间件技术视频https://pan.baidu.com/s/12-iy…Kafka 原理剖析及实战演练https://pan.baidu.com/s/1-ZYL…Kafka 原理剖析及实战演练视频教程https://pan.baidu.com/s/12wvi…Linux 操作系统教学视频https://pan.baidu.com/s/1-lGB…Linux 韩顺平https://pan.baidu.com/s/1b6W-…Linux 基础https://pan.baidu.com/s/1fJL5…Linux 尚学堂https://pan.baidu.com/s/1vEv7…Linux 视频教程https://pan.baidu.com/s/1svRm…Linux 汪利鹏https://pan.baidu.com/s/1MOHy…Lucence 视频https://pan.baidu.com/s/1_rKA…Lucene Solr ELK Stack及Solr企业级搜索引擎实战https://pan.baidu.com/s/1v4RP…Lucene Solr 垂直化搜索引擎https://pan.baidu.com/s/1JhfR…Lucene Solr 高级进阶版 全文检索https://pan.baidu.com/s/1-15h…Lucene Solr 企业实战视频https://pan.baidu.com/s/12Foe…Lucene Solr 企业搜索引擎实战之Solr 与ELKStackhttps://pan.baidu.com/s/1KXAQ…Lucene 实战视频教程https://pan.baidu.com/s/13RUL…Luncene 2天讲视频https://pan.baidu.com/s/1FK2c…Maven 视频 01https://pan.baidu.com/s/1Vdef…Maven 视频 02https://pan.baidu.com/s/1htEz…Mybatis 视频https://pan.baidu.com/s/1yMkG…MySQL DBA及Linux企业集群实战工程师https://pan.baidu.com/s/1AkNd…MySQL高级https://pan.baidu.com/s/1V6X2…MySQL基础视频https://pan.baidu.com/s/1gM_D…Netty SpringBoot+Netty 仿微信聊天全栈实战 从0开发到上线部署https://pan.baidu.com/s/1gJ6L…Netty 4源码剖析视频教程https://pan.baidu.com/s/1-D1A…Netty Java读源码之Netty深入剖析https://pan.baidu.com/s/1nPLB…Netty Mina、Nio 互联网架构师https://pan.baidu.com/s/1kCLQ…Netty NIO+Netty5视频教程https://pan.baidu.com/s/1N2jq…Netty 实战高性能分布式RPChttps://pan.baidu.com/s/1yORq…Netty 源码剖析&NIO+Netty5各种RPC架构实战演练https://pan.baidu.com/s/1py5Q…Nginx 视频https://pan.baidu.com/s/1-vQf…Node.js 7天学会Node.js微信公众号https://pan.baidu.com/s/1Bqf0…Node.js 基于Node.js的web实时聊天室项目https://pan.baidu.com/s/10dvg…Node.js 开发个性化全网内容抓取平台视频课程 实战教程https://pan.baidu.com/s/1swZQ…Node.js 爬虫应用之资讯助手系统https://pan.baidu.com/s/1mHjx…Node.js 全栈开发https://pan.baidu.com/s/1_ZXV…Node.js 入门和学习指导https://pan.baidu.com/s/1WgWl…Node.js 项目实战-仿cnodejs社区论坛https://pan.baidu.com/s/1w5p8…Node.js 真简单https://pan.baidu.com/s/1oIuS…PowerDesigner 数据库基本原理和数据库设计实战https://pan.baidu.com/s/1XgcQ…Python 6节课掌握Python爬虫视频https://pan.baidu.com/s/1ftLD…Python Python实战全套教学视频https://pan.baidu.com/s/1seVu…Python 操作三大主流库https://pan.baidu.com/s/1ELRq…Python 大数据项目实战之Python金融应用编程https://pan.baidu.com/s/1sgtR…Python 定向爬虫入门https://pan.baidu.com/s/1Sges…Python 基础https://pan.baidu.com/s/1qPcy…Python 零基础入门Python数据分析师到项目实战https://pan.baidu.com/s/1SmeW…Python 中文视频教程(全38集)https://pan.baidu.com/s/1iSRg…Python3 入门与进阶https://pan.baidu.com/s/1Oas0…RabbitMQ ActiveMQ RokcetMQ Kafka实战 视频教程https://pan.baidu.com/s/1JVSe…RabbitMQ 分布式消处理https://pan.baidu.com/s/1ku7b…RabbitMQ 消息队列从入门到精通https://pan.baidu.com/s/1WgGl…RabbitMQ 消息中间件 深入RabbitMQ集群架构https://pan.baidu.com/s/1QK2k…RabbitMQ 消息中间件技术精讲https://pan.baidu.com/s/1CBKV…RabbitMQ 消息中间件视频https://pan.baidu.com/s/1pskM…Redis 持久化、集群、MySQL5.6优化、Tomcat7优化https://pan.baidu.com/s/1gcYR…Redis 从入门到高可用 分布式实践https://pan.baidu.com/s/1UOsG…Redis 从入门到精通、集群与应用https://pan.baidu.com/s/1DD3a…Redis 缓存与性能优化 + Memcached + Redis + Nginxhttps://pan.baidu.com/s/17UiZ…Redis 视频 01https://pan.baidu.com/s/18wq5…Redis 视频 02https://pan.baidu.com/s/1j2Fp…Redis 视频教程https://pan.baidu.com/s/1J0nm…Redis 新特性、主从复制、集群视频教程https://pan.baidu.com/s/1VQXp…Redis 之高性能服务存储应用https://pan.baidu.com/s/14_Zv…Shiro 视频https://pan.baidu.com/s/1lgYa…Spark 1.从0基础到调通第一个wordcount程序 (课程1-12讲)https://pan.baidu.com/s/1L3jt…Spark 2.Spark内核解密(13-43讲)https://pan.baidu.com/s/1Xbw_…Spark 3.Spark性能优化(44-54讲)https://pan.baidu.com/s/1N0PA…Spark 4.Spark SQL从零起步彻底精通彻底实战(55-73讲)https://pan.baidu.com/s/1EtnF…Spark 5.Spark Streaming专家之路(82-113讲)https://pan.baidu.com/s/1cTDU…Spark 6.大型Spark项目性能优化系列(115-124讲)https://pan.baidu.com/s/1uDa-…Spark 7.Spark Streaming疯狂解密系列(125-134)https://pan.baidu.com/s/1ZY9r…Spark 8.Spark面试宝典(数据倾斜、性能调优等)(135-147)https://pan.baidu.com/s/17zGo…Spark 9.Spark Summithttps://pan.baidu.com/s/1XEHM…Spark Streaming+Kafka+Spark SQL+TopN+Mysql 电商广告点击综合案例实战https://pan.baidu.com/s/1Zt1z…Spark 大型项目实战:电商用户行为分析大数据平台https://pan.baidu.com/s/1HunW…Spark 内核源码剖析、Hadoop高端 实战教程https://pan.baidu.com/s/1sXDI…Spark 视频教程 陈博老师https://pan.baidu.com/s/1t5wY…Spring 视频https://pan.baidu.com/s/16E02…Spring 源码深度解析+注解开发全套视频教程https://pan.baidu.com/s/1FdPf…Spring 赵栋5天视频教程https://pan.baidu.com/s/1rfW6…Spring 注解驱动开发https://pan.baidu.com/s/1Xtmv…SpringBoot 技术栈博客企业前后端https://pan.baidu.com/s/1gSHn…SpringData 视频https://pan.baidu.com/s/16Jm5…SpringMVC 视频https://pan.baidu.com/s/1PV_h…SpringMVC+Spring+MyBatis+Maven整合视频https://pan.baidu.com/s/1YrfH…SpringMVC从入门到上手工作https://pan.baidu.com/s/1mXAa…SpringMVC框架https://pan.baidu.com/s/1BFTG…SpringSecurity 开发企业级认证与授权全套视频教程https://pan.baidu.com/s/1_Xec…Vue.js 2.5开发去哪儿网App 从零基础入门到实战项目https://pan.baidu.com/s/1hX77…Vue.js MUI 仿豆瓣电影 APP跨平台混编框架https://pan.baidu.com/s/1G4cX…Vue.js WebApp 书城整站开发https://pan.baidu.com/s/1v7c9…Vue.js 高仿饿了么APPhttps://pan.baidu.com/s/1QJJO…Vue.js 开发微信全家桶项目Vue,Node,MongoDB高级技术栈全覆盖https://pan.baidu.com/s/191mM…Vue.js 前端面试项目冲刺,京东金融Vue组件化实战https://pan.baidu.com/s/19F1D…Vue.js 全网首发mpvue课程小程序https://pan.baidu.com/s/1UeBX…Vue.js 全栈技能点 Vue2.0,Node.js,MongoDB 打造商城系统https://pan.baidu.com/s/1X_Yo…Vue.js 向军老师Vue开发宝典https://pan.baidu.com/s/1XZ2q…Vue.js 源码全方位深入解析【前7章】https://pan.baidu.com/s/17Usv…ZooKeeper 11讲实战课程https://pan.baidu.com/s/1fot9…ZooKeeper Spring跨机房容灾系统以及灰度发布https://pan.baidu.com/s/1ehcU…ZooKeeper 分布式系统开发实战https://pan.baidu.com/s/1yt8q…ZooKeeper 分布式专题与Dubbo微服务入门https://pan.baidu.com/s/1OmEN…ZooKeeper 基于ZooKeeper的分布式锁实现https://pan.baidu.com/s/1qSHa…ZooKeeper 尚硅谷大数据之ZooKeeper视频https://pan.baidu.com/s/1E0_i…ZooKeeper 实战教程https://pan.baidu.com/s/1xPVR…测试:JMete r接口测试https://pan.baidu.com/s/15a1B…测试:JMeter 深入进阶性能测试体系 各领域企业实战https://pan.baidu.com/s/1Ph-c…测试:Kali Linux渗透测试https://pan.baidu.com/s/1YfGr…机器学习:2018北风网人工智能https://pan.baidu.com/s/1tVIy…机器学习:2018北风网人工智能(完结)https://pan.baidu.com/s/1RnOL…机器学习:Python3 入门机器学习 经典算法与应用https://pan.baidu.com/s/1Obk4…机器学习:Python3 入门机器学习经典算法与应用https://pan.baidu.com/s/1JgXy…机器学习:Python视频教程量化投资与机器学习实战课程高频交易组合投资源码https://pan.baidu.com/s/1Jnxe…机器学习:Python数据分析与机器学习实战https://pan.baidu.com/s/1PQXP…机器学习:Python小象学院机器学习https://pan.baidu.com/s/18BNb…架构:Apache Strom+Zookeeper集群技术实战 Strom理论实战结合视频教程https://pan.baidu.com/s/1waSJ…架构:Java并发编程与高并发解决方案https://pan.baidu.com/s/1KS-F…架构:Java从零到企业级电商项目实战https://pan.baidu.com/s/1FANE…架构:Java秒杀系统方案优化 高性能高并发实战https://pan.baidu.com/s/1mstv…架构:SpringBoot互联网架构平台实战与运维架构https://pan.baidu.com/s/1JMfg…架构:SpringBoot金融项目实战https://pan.baidu.com/s/1kHDF…架构:从零开始学架构https://pan.baidu.com/s/1kKa6…架构:从无到有搭建中小型互联网公司后台服务架构与运维架构https://pan.baidu.com/s/1jNYm…架构:大数据技术推荐系统算法案例实战视频教程(mahout,spark)附完整资料数据软件环境 84课https://pan.baidu.com/s/1YSMO…架构:大数据实时流统计实战https://pan.baidu.com/s/1_h0i…架构:大型分布式架构课程https://pan.baidu.com/s/18H1D…架构:单点登陆基础到实战(jkxy)https://pan.baidu.com/s/1d5-t…架构:分布式事务实践 解决数据一致性https://pan.baidu.com/s/1TpW4…架构:分布式消息系统与Flume整合kafka集成https://pan.baidu.com/s/1RMWg…架构:高级系统架构设计师视频https://pan.baidu.com/s/184o9…架构:基于Dubbo分布式系统架构https://pan.baidu.com/s/1fA55…架构:基于Storm+Kafka+Zookeeper锁+Memcached+mysql架构全方位系统Storm项目案例实战https://pan.baidu.com/s/1dD1e…架构:架构技术之keepalived高可用和Nginx负载均衡实战案例视频https://pan.baidu.com/s/1whwY…架构:秒杀系统企业级实战应用https://pan.baidu.com/s/1cU2v…架构:企业级大型监控系统zabbix深入介绍 分集 53课https://pan.baidu.com/s/1yBTl…架构:手把手从零打造企业级电商平台-前端https://pan.baidu.com/s/1OBrD…架构:徐老师大数据培训Hadoop+HBase+ZooKeeper+Spark+Kafka+Scala+Ambarihttps://pan.baidu.com/s/1Dr5K…架构:亿级流量电商详情页系统的大型高并发与高可用缓存架构实战 二https://pan.baidu.com/s/1C2qo…架构:亿级流量电商详情页系统的大型高并发与高可用缓存架构实战 一https://pan.baidu.com/s/1WlR7…架构:亿级流量电商详情页系统实战(第二版):缓存架构+高可用服务架构+微服务架构https://pan.baidu.com/s/1hDVt…架构:最新大型分步式项目实战redis+solr+linux+springmvc+mybatishttps://pan.baidu.com/s/1j4b-…算法:初级班第4期课程https://pan.baidu.com/s/1DjgY…算法:进阶班第4期课程https://pan.baidu.com/s/1Zl9o…算法:看得见的算法 7个经典应用诠释算法精髓https://pan.baidu.com/s/11eYh…算法:玩转数据结构 从入门到进阶https://pan.baidu.com/s/1Crqh…算法:玩转算法面试 从真题到思维全面提升算法思维https://pan.baidu.com/s/1HwkU…算法:学习算法思想,修炼编程内功https://pan.baidu.com/s/1g3r-…微服务:Java深入微服务原理改造房产销售平台https://pan.baidu.com/s/1pQN_…微服务:Spring Cloud 微服务实战https://pan.baidu.com/s/1XUzX…微服务:SpringCloud +SpringBoot+docker全套视频教程https://pan.baidu.com/s/1BA9_…微服务:SpringCloud 零基础入门与微服务教程2018年4月https://pan.baidu.com/s/10vlw…微服务:SpringCloud 尚硅谷视频https://pan.baidu.com/s/1-mcj…微服务:SpringCloud 微服务大型电商架构亿级流量电商详情页系统实战-缓存架构+高可用服务架构+微服务架构https://pan.baidu.com/s/1dESM…微服务:从天气看SpringCloud 微服务项目https://pan.baidu.com/s/1aG9n…微服务:面向服务体系架构 + JAX + Dubbo + Zookeeperhttps://pan.baidu.com/s/18kVw…微服务:微服务架构的分布式事务解决方案https://pan.baidu.com/s/1u-rs…视频提取码关注微信公众号:「搜云库」后台回复关键字:“1024"加站长微信好友把网盘视频链接发给站长微信(注意是完全匹配,不能有空格),即可获取 “视频提取码"免责声明网站所有作品均由网上搜集共同更新,仅供读者预览及学习交流使用,下载后请24小时内删除,如果喜欢请购买正版资源!原作者如果认为本站侵犯了您的版权,请QQ:75997533 告知,我们会立即删除! ...

October 26, 2018 · 2 min · jiezi