历史上的今天
返回首页

历史上的今天

今天是:2024年09月30日(星期一)

正在发生

2021年09月30日 | 视频智能分析之Web视频播放通用解决方案

2021-09-30 来源:eefocus

通常,摄像机H265视频编码在传输快、存储小、画质高等方面的优势使得其备受企业青睐,但是由于主流浏览器不能够支持这种格式,因此在浏览器下播放和解析视频都受到一定的约束。那么,如何实现 Web 视频播放的通用就成为了我们必须研究的课题。本期技术的真相将带你了解旷视盘古系统是如何解决 Web 视频播放通用方案这一难题的。

 

一、背景

在视频智能分析领域,绝大部分摄像机视频码流均支持 H264 和 H265 两种编码格式,H265 视频编码相比 H264 有着诸多优点:视频数据传输带宽减半、存储减半、画质提升等。因此,在大部分智慧安全管理项目中, H265 视频编码使用较为广泛,能够直接减少用户项目成本。


但当下主流浏览器对 H265 视频编码格式仍然未能够支持,主要还是支持 H264 视频编码格式,随着 Flash 插件退出市场后,在 Chrome 浏览器下支持视频播放难度雪上加霜,所以大部分智慧安全管理厂家依然是在 IE 浏览器插件机制下支持着摄像机视频播放。


旷视在浏览器端视频播放也有诸多实践,旷视的盘古系统深耕智慧园区领域,在业内各项指标均遥遥领先,系统功能繁多,其中视频播放就是其必不可少的一部分,面向 ToB 市场,盘古平台系统自然需要适配用户各种使用场景,能够在不同浏览器中进行视频播放是基本要求。因此,在视频播放方面,我们需要研究一套通用的 Web 视频播放解决方案,来适配不同使用场景:高性能多路视频播放、强实时性视频播放等,并能够兼容不同的浏览器(IE / 360 / Chrome)。

 

 

二、当前解决方案

 

 

 

盘古系统中视频数据来源


如上图所示,盘古系统中,视频数据来源各异、数据内容各异、甚至视频编码也各不相同,怎么样实现 PC 端跨浏览器进行 Web 视频播放,当前也有诸多方案,下面简易介绍下各个方案的实现关键点。


2.1 Web 前端封装 FMP4 + H5 video 播放显示

 

 

 


方案说明:


Web 前端收取到视频流后,进行 FMP4 封包,并使用 MSE 扩展 video 标签进行视频播放,对于智能帧( Intelligence Frame 即结构化信息)采取透传方式,前端 Canvas 绘制。


MSE 即 Media Source Extensions,是一个 W3C 草案,MSE 扩展了 HTML5 的 Video 和 Audio 标签能力,目前支持的视频封装格式是 MP4,支持的视频编码是 H.264 和 MPEG4 ,支持的音频编码是 AAC 和 MP3,FMP4 即 Fragment mp4,前端将封装好的 FMP4 数据直接送进 MediaSource 即可实现浏览器视频播放,当前主流浏览器支持情况:

 

 

当前浏览器对MSE支持情况


2.2  Web 前端 WebAssembly 解码 + Canvas 显示

 

 


方案说明:


前端收取到视频流后直接使用 ffmpeg 生成的 WebAssembly 进行软解码,输出 YUV、PCM,前端通过 WebGL 在 Canvas 上绘制视频画面,同时通过 Web Audio API 播放音频。


WebAssembly 是一种新的编码方式,可以在现代的网络浏览器中运行,它是一种低级的类汇编语言,具有紧凑的二进制格式,并为其他语言提供一个编译目标,以便它们可以在 Web 上运行。它也被设计为可以与 JavaScript 共存,允许两者一起工作。近几年已经被各主流浏览器所广泛支持,支持情况:

 

 


2.3 后端解转码 + H5 video 播放显示

 

 


方案说明:


前两方案基本是依靠 Web 前端实现视频播放,压力基本都在前端,播放路数受限,而此方案是需要部署一台服务器,进行视频码流的解码、编码、封装等动作,前端 Web 拿到 FMP4 视频数据后,依靠 MSE 扩展 video 标签的方式进行视频播放。 上述方案各有优缺点,如下:

 

 


那么我们依然面对以下问题:

 

 

  • 如何面对服务器端资源紧张的情况下播放多路视频?如何面对跨浏览器播放各种音视频编码视频数据?如何面对端到端实时性要求高的使用场景?

 

三、Web 视频通用解决方案


我们经过大量分析讨论及预研,发现要解决这些问题的依然可行,在没有服务端资源情况下,我们只能将视频播放资源消耗前置,但考虑到浏览器对密集型数据计算并不擅长,我们决定在视频播放端使用后台程序,来实现视频封装、解码等动作。

 

 


在这个架构基础下,我们能够支持各种音视频编码格式,如 H264、H265、MJPEG、SVAC 等,同时,我们增加了多种模式来应对不同的使用场景。


3.1 适配兼容性好,实时性优先的视频播放需求:解码成 YUV + Web 前端 WebGL 显示


具体流程:

 

 

  • 组件获取音视频码流,CPU 软解成视频帧 YUV 、音频帧 PCM ;电脑环回地址 Websocket 数据传输,不受网络带宽限制; 前端视频帧 WebGL 渲染,音频帧 Audio 标签音频播放,支持各种浏览器;通用性较强,支持各种音视频编码格式;支持 4 路 1080P 或者 9 路 4CIF ,端到端播放延迟 300ms 左右


3.2 适配视频码流自适应、性能优先的视频播放需求


具体流程:

 

 

  • 组件获取音视频码流,若视频码流是 H264 ,封装成 FMP4 ,音频码流解码成 PCM ;Web 前端 H5 播放显示,利用浏览器硬解码能力,性能消耗较少;若视频码流非 H264 格式,解码成 YUV ,前端 WebGL 渲染;通过判断视频码流格式,自适应输出不同视频数据给前端,来达到综合性能消耗最低,支持路数更多的效果,支持各种浏览器。

 

3.3  适配高分辨率、多路数的视频播放需求


具体流程:

 

 

  • 在 IE 引擎下,Web 前端可以加载组件中 OCX 控件,控件获取音视频码流;控件支持 H264 、H265 视频编码的 GPU 解码及显示;GPU 解码显示能力较好,使端到端播放延迟能够在 200ms 以内;支持 16 路 1080P , 支持 400万 、 800万 等更高分辨率。

 

YUV输出Web视频播放

 

四、总结

总结:当然每个视频播放方案各有实际的使用场景及约束条件,在浏览器尚未支持 H265 等视频编码格式前,每个方案实现起来都有其对应的代价,怎么样实现 Web 视频播放并满足各自项目需求应该是百花齐放,各有略同。

推荐阅读

史海拾趣

Alpha & Omega Semiconductor(万国半导体)公司的发展小趣事

Alpha & Omega Semiconductor(简称AOS)是一家全球领先的半导体公司,致力于设计、制造和销售高性能、高可靠性的功率半导体产品。以下是Alpha & Omega Semiconductor公司发展的相关故事:

  1. 公司成立和早期发展: Alpha & Omega Semiconductor公司于2000年成立于美国加利福尼亚州的Santa Clara市。公司成立之初,专注于研发和生产功率半导体器件,包括功率MOSFET、IGBT、功率IC和电源管理器件等。通过不断创新和技术突破,公司迅速在市场上建立了良好的声誉,并吸引了投资者的关注。

  2. 技术创新和产品发展: Alpha & Omega Semiconductor公司在功率半导体领域不断进行技术创新和产品研发。他们不断推出新的产品系列,包括低压、中压和高压功率MOSFET、IGBT和功率集成电路等,以满足不同应用领域的需求。公司还专注于提高产品性能、降低功耗,并不断优化产品结构和工艺流程。

  3. 全球化布局和生产基地: 随着业务的不断扩张,Alpha & Omega Semiconductor公司逐步建立了全球化的运营和生产体系。除了总部位于美国的研发中心外,公司还在亚洲地区建立了多个生产基地和销售办事处,包括中国、台湾、韩国和菲律宾等地。这些生产基地不仅提高了产品供应的灵活性和效率,还加强了与当地客户和合作伙伴的合作关系。

  4. 持续投入研发和创新: Alpha & Omega Semiconductor公司持续投入大量资源用于研发和创新,致力于提供行业领先的功率半导体解决方案。公司与全球顶尖的研究机构和合作伙伴合作,共同探索新的材料、工艺和器件结构,以应对不断变化的市场需求和技术挑战。通过持续的技术创新,公司不断拓展产品线,拓展业务领域,并保持了在市场上的竞争优势。

  5. 持续发展和业务拓展: Alpha & Omega Semiconductor公司持续保持业务的稳健增长和发展态势,不断拓展业务范围和市场份额。公司在汽车电子、工业控制、通信设备、消费电子和电源供应等领域取得了广泛的应用,成为了全球领先的功率半导体供应商之一。同时,公司还通过并购和合资等方式,加速业务拓展,拓展了在新兴领域的市场地位。

以上是Alpha & Omega Semiconductor公司发展的相关故事,展示了他们在功率半导体领域的持续创新和不断发展的势头。

乐鑫(espressif)公司的发展小趣事

乐鑫科技在发展过程中,与百度、亚马逊等全球知名企业建立了紧密的合作关系。通过与这些合作伙伴的共同努力,乐鑫科技成功开发了一系列具有市场影响力的语音框架和物联网解决方案,进一步提升了其品牌影响力和市场竞争力。

Anderson Power Products公司的发展小趣事

乐鑫科技在发展过程中,与百度、亚马逊等全球知名企业建立了紧密的合作关系。通过与这些合作伙伴的共同努力,乐鑫科技成功开发了一系列具有市场影响力的语音框架和物联网解决方案,进一步提升了其品牌影响力和市场竞争力。

深圳杜因特(DOINGTER)公司的发展小趣事

作为一家快速发展的电子企业,杜因特深知人才是公司最宝贵的财富。因此,公司始终将团队建设和人才培养放在重要位置。通过引进优秀人才、加强内部培训等方式,杜因特打造了一支高效协作、专业精湛的团队。同时,公司还为员工提供了良好的工作环境和福利待遇,让员工能够在一个如家般的团队中做具有革新性的工作。

以上五个故事仅是基于已知信息对深圳杜因特公司发展起来的相关事实的概括性描述,具体细节可能因实际情况而有所不同。

长江连接器(CJT)公司的发展小趣事

随着技术的不断积累和市场的不断扩大,长江连接器开始积极拓展国内外市场。公司通过与国内外知名企业的合作,将产品广泛应用于消费类电子、电气电子、薄膜开关、LED显示器屏/灯饰、家用电器、电脑及电脑周边、通讯设备等领域。同时,长江连接器注重品牌形象的塑造和推广,通过参加各类行业展会、举办技术交流会等方式提升品牌知名度和美誉度。

Diplohmatic A/S公司的发展小趣事

随着技术创新的成功,Diplohmatic A/S公司开始寻求国际市场的拓展。公司派遣了一支由经验丰富的销售和技术人员组成的团队,前往欧洲和亚洲的主要市场进行考察和洽谈。通过深入了解当地市场需求和竞争态势,公司制定了一系列有针对性的市场策略,并与多家国际知名企业建立了合作关系。这些合作不仅为公司带来了更多的订单,也提升了其品牌在国际市场的知名度。

问答坊 | AI 解惑

RS-485接口芯片介绍及应用中的有关问题

1引言    RS-485接口芯片已广泛应用于工业控制、仪器、仪表、多媒体网络、机电一体化产品等诸多领域。可用于RS-485接口的芯片种类也越来越多。如何在种类繁多的接口芯片中找到最合适的芯片,是摆在每一个使用者面前的一个问题。RS-4 ...…

查看全部问答>

关于Quartus中仿真的问题

是这样的,写了verilog的一个小程序,编译成功了,然后创建bdf文件以后,再编译,就出错。 报错是:    Error: Can\'t compile duplicate declarations of entity \"sig\" into library \"work\" Error: Instance could be entity \" ...…

查看全部问答>

如何将驱动程序打包

我现有一个驱动的.sys文件和.inf 文件 以及一个用VC编写的应用程序(.exe)的文件,我想把它打包成一个安装文件,请高手指点一个! 由于本人是新会员,没有什么积分!不过请不吝赐教!!!…

查看全部问答>

专业提供驱动开发外包服务和支持

欢迎访问:http://www.drivercoding.com.cn MSN或者QQ,Mail都可以,基本在线…

查看全部问答>

S3c2410上电时,关于SDRAM的默认初始值与手册上的不一样是怎么回事?

S3c2410上电时,关于SDRAM的默认初始值与手册上的不一样是怎么回事? 我没有将BOOTLOADER下载进去,也没有从外部初始化SDRAM,因此正常的话应该是手册上的初始值,但是我的全是0,不知是怎么回事? 然后 我又手工通过Multi-ICE对SDRAM进行 ...…

查看全部问答>

台达VFD-P 11KW的"CFF"故障,还是没搞定!

请教台达VFD-P系列11KW的\"CFF\"故障    一台达VFD-P系列11KW变频器,驱动一惯量较大的负载(外接有BRAKE单元),以前正常,现在出现\"CFF\"故障.    \"CFF\"的意义是:“变频器有异常输出现象.输出接地(接地电流大于额定电流的50%以上时),功率模组 ...…

查看全部问答>

为什么STR710的PLL1有输入限制?如果超过了有什么影响吗?

                                 我的有源晶振是16MHz的,2分频后,输入PLL1,然后倍频16倍,再2分频,输出64MHz给MCLK,相关实验都做过了,没有什 ...…

查看全部问答>

急聘兼职PCB设计工程师

公司致力于基于计算机的高端虚拟仪器研发与销售,目标成为高端虚拟仪器第一名!欢迎有电子类从业有志者问询和加盟! 兼职PCB工程师 要求: 1. 高速PCB设计 2. 8层以上PCB设计 3. 精通并熟练使用Candence Allergo等画图软件 请将简历发至hr.xing@que ...…

查看全部问答>

编程风格

关于C语言编程,括号必须与括号内的内容紧挨着吗?我总是喜欢把括号与括号里的内容用空格隔开空格,如:( void )。这样有什么弊端,…

查看全部问答>

djyos的可移植性(二)

1.     数据位宽与对齐     嵌入式开发中,对于移植性来说,数据类型的长度和对齐,是一个很容易出错的问题。1.1.   对齐     关于什么是对齐,有很多资料,不明白的,可以google,这里不占用篇 ...…

查看全部问答>