CN114268796A - 视频流处理的方法及装置 - Google Patents
视频流处理的方法及装置 Download PDFInfo
- Publication number
- CN114268796A CN114268796A CN202111583246.2A CN202111583246A CN114268796A CN 114268796 A CN114268796 A CN 114268796A CN 202111583246 A CN202111583246 A CN 202111583246A CN 114268796 A CN114268796 A CN 114268796A
- Authority
- CN
- China
- Prior art keywords
- video
- video stream
- decoding
- gpu
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000012545 processing Methods 0.000 title claims abstract description 93
- 238000000034 method Methods 0.000 title claims abstract description 55
- 238000009877 rendering Methods 0.000 claims abstract description 43
- 238000004590 computer program Methods 0.000 claims description 18
- VYZAMTAEIAYCRO-UHFFFAOYSA-N Chromium Chemical group [Cr] VYZAMTAEIAYCRO-UHFFFAOYSA-N 0.000 claims description 9
- 230000001133 acceleration Effects 0.000 claims description 7
- 230000005540 biological transmission Effects 0.000 claims description 6
- 238000006243 chemical reaction Methods 0.000 abstract description 8
- 230000008569 process Effects 0.000 abstract description 7
- 238000005516 engineering process Methods 0.000 description 16
- 238000004891 communication Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 230000003993 interaction Effects 0.000 description 4
- 239000008186 active pharmaceutical agent Substances 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 210000000349 chromosome Anatomy 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000005236 sound signal Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 229910052804 chromium Inorganic materials 0.000 description 1
- 239000011651 chromium Substances 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本申请提供一种视频流处理的方法及装置,涉及计算机技术领域,本申请中,将客户端对应的待处理H265视频流传输给GPU;在GPU中,基于接收到的操作指令,执行:基于操作系统平台对应的视频流解码方式,对获取到的待处理H265视频流进行解码处理,获得视频解码数据,其中视频流解码方式是写在客户端内核媒体模块中的;将视频解码数据转换成OpenGL纹理,并基于OpenGL纹理进行渲染绘制处理,获得相应的视频。本申请中,视频流解码、格式转化以及渲染绘制处理的过程均在显存中处理,降低解码输出从显存拷贝到内存、格式转换以及从内存拷贝到显存的性能消耗,保证视频播放的流畅度。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种视频流处理的方法及装置。
背景技术
随着科技的发展,各种支持视频播放的客户端应运而生,以丰富业余生活。
越来越多的视频源采用H265编码协议进行编码处理,生成称为H265视频流的视频流。为了保证客户端对H265视频流进行顺利解码并播放视频,要求客户端支持对H265视频流进行解码处理。
目前,为支持客户端对H265视频流进行解码处理,以播放H265视频流对应的视频,大多采用Webassembly技术,将用于对H265视频流进行解码处理的解码器,编译成经过实例化后可被客户端JS引擎调用的.wasm格式。然后,在图形处理器(Graphic ProcessingUnit,GPU)内基于实例化后的解码器,将H265视频流解码成YUV数据,并存储在显存中,将YUV数据从显存拷贝到内存,在中央处理器(Central Processing Unit,CPU)中将YUV数据转换成RGB数据后,将RGB数据的视频流拷贝到显存中,并在GPU中进行渲染绘制处理。
显然,现有技术中,在对H265视频流进行处理时,需要拷贝解码器输出的YUV数据、将其转换成RGB数据,并将才RGB数据拷贝到显存中才能渲染到canvas画布,性能比较低,内存消耗较大,无法保证视频播放的流畅度。
发明内容
本申请提供一种视频流处理的方法及装置,用以降低解码输出从显存拷贝到内存、格式转换以及从内存拷贝到显存的性能消耗,保证视频播放的流畅度。
第一方面,本申请实施例提供一种视频流处理的方法,该方法包括:
将客户端对应的待处理H265视频流传输给GPU;
在GPU中,执行以下操作:
基于操作系统平台对应的视频流解码方式,对获取到的待处理H265视频流进行解码处理,获得视频解码数据,其中视频流解码方式是写在客户端内核媒体模块中的;
将视频解码数据转换成开放图形库(Open Computing Language,OpenGL)纹理,并基于OpenGL纹理进行渲染绘制处理,获得相应的视频。
第二方面,本申请实施例提供一种视频流处理的装置,该装置包括:
传输单元,用于将接收到的待处理H265视频流传输给GPU;
执行单元,用于在GPU中,执行:基于操作系统平台对应的视频流解码方式,对获取到的待处理H265视频流进行解码处理,获得视频解码数据;将视频解码数据转换成OpenGL纹理,并基于OpenGL纹理进行渲染绘制处理,获得相应的视频;其中视频流解码方式是写在客户端内核媒体模块中的。
第三方面,本申请实施例提供一种视频流处理的设备,包括:存储器、CPU以及GPU,其中;
存储器,用于存储计算机程序;
CPU用于调用存储器中存储的计算机程序,按照获得的程序执行如第一方面中的CPU侧的视频流处理的方法;
GPU,用于调用存储器中存储的计算机程序,按照获得的程序执行如第一方面中的GPU侧的视频流处理的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,计算机可读存储介质存储有计算机指令,计算机指令被处理器执行时实现本申请实施例提供的视频流处理的方法的步骤。
第五方面,本申请实施例提供一种计算机程序产品,其包括计算机指令,计算机指令存储在计算机可读存储介质中;当电子设备的处理器从计算机可读存储介质读取计算机指令时,处理器执行计算机指令,使得电子设备执行本申请实施例提供的视频流处理的方法的步骤。
本申请的有益效果如下:
本申请实施例提供一种视频流处理的方法及装置,将客户端的对应的待处理H265视频流传输给GPU,在GPU中基于客户端内核媒体模块中写入的各个操作系统平台对应的视频流解码方式,确定当前操作系统平台对应的视频流解码方式,并基于操作系统平台对应的视频流解码方式,对获取到的待处理H265视频流进行解码处理,获得视频解码数据,然后将视频解码数据转换成OpenGL纹理,并基于OpenGL纹理进行渲染绘制处理,获得相应的视频。可见,本申请中不需要编译第三方H265解码器的库,即可对H265视频流进行解码处理,减小了不必要的开发工作量,且视频流处理的各个过程均在GPU中执行,也就是说视频流处理过程中生成的所有数据都保存在GPU对应的显存中,不需要传输可直接进行下一流程的处理,对H265视频流的解码处理和渲染绘制处理进行了优化,极大地降低了解码输出从显存拷贝到内存、格式转换和从内存拷贝到显存的性能消耗,减少内存和CPU开销,能够在性能较差的终端设备上流畅播放4K及以上分辨率的H265视频。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为相关技术中一种视频流处理的原理图;
图2为本申请实施例提供的一种视频流处理的原理图;
图3为本申请实施例提供的一种应用场景示意图;
图4为本申请实施例提供的一种视频流处理的方法流程图;
图5为本申请实施例提供的一种视频流处理的具体实施方法流程图;
图6为本申请实施例提供一种视频流处理的装置结构图;
图7为本申请实施例提供的一种视频流处理的设备结构图;
图8为本申请实施例提供的另一种视频流处理的设备结构图。
具体实施方式
为了使本申请的目的、技术方案及有益效果更加清楚明白,以下将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请部分实施例,并不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
下文中所用的词语“示例性”的意思为“用作例子、实施例或说明性”。作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
文中的术语“第一”、“第二”仅用于描述目的,而不能理解为明示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个特征,在本申请实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
下面对本申请实施例的设计思想进行简要介绍:
本申请实施例涉及信息技术(Information Technology,IT)、计算机技术以及软件开发,主要涉及视频监控、视频播放领域中客户端对视频流处理的方法。
在视频监控和视频播放领域,越来越多的视频源采用H265进行视频编码。当需要部署这类视频应用时,基于web技术的客户端解码就成为很大的问题。特别是随着web技术的发展和普及,更多的企业应用更愿意将应用部署在web平台,客户端使用浏览器或者基于浏览器开发的应用播放视频流或视频文件。
以Chromium浏览器为例,Chromium浏览器是Google主导开发的一款网页浏览器,基于KHTML的Webkit渲染引擎,支持Vp8、Vp9和H264等格式视频的解码和渲染。但是,Chromium浏览器对H265的支持一直是众多用户使用的一个痛点。
目前,为支持Chromium浏览器播放H265格式的视频,大多采用Webassembly技术,将H265视频的解码器用该技术编译成经过实例化后可被浏览器JS引擎调用的.wasm格式,如图1所示。在GPU内基于实例化后的解码器,将H265视频流解码成YUV数据,并存储在显存中,将YUV数据从显存拷贝到内存,在CPU中将YUV数据转换成RGB数据后,将RGB数据的视频流拷贝到显存中,并在GPU中进行渲染绘制处理。
显然,该方案需要拷贝解码输出的YUV数据、将其转换成RGB数据才能渲染到画布(canvas),性能比较低,内存消耗较大,无法支持在CPU较弱的终端设备上流畅播放分辨率4K及以上的视频。
有鉴于此,本申请实施例提供一种视频流处理的方法及装置,即一种视频硬件加速的方法及装置,用以降低解码输出从显存拷贝到内存、格式转换以及从内存拷贝到显存的性能消耗,能够在性能较差的终端设备上流畅播放4K及以上分辨率的H265视频。
其中,硬件加速为终端设备中通过显卡的GPU对H265视频流进行解码处理,不占用CPU,硬件加速就是让显卡分担了CPU的解码工作。
在本申请实施例中,在客户端内核媒体模块中的写入操作系统平台对应的H265视频流的硬件解码器,也可以称为视频流解码方式;比如,windows平台的D3D,mac平台的VideoToolBox,linux平台的VAAPI。其中,硬件解码器可以称为视频流解码方式,客户端内核可称为客户端渲染引擎。
在一种可能的实现方式中,将客户端对应的待处理H265视频流传输给GPU;在GPU中,执行:基于操作系统平台对应的视频流解码方式,对获取到的待处理H265视频流进行解码处理,获得视频解码数据,将视频解码数据转换成OpenGL纹理,并基于OpenGL纹理进行渲染绘制处理,获得相应的视频。
以客户端为Chromium浏览器为例,请参考图2,图2示例性提供本申请实施例中一种视频处理的原理图;接收服务器传输的Chromium浏览器对应的H265视频流,并通过调用浏览器JS引擎将H265视频流传输给浏览器渲染引擎,GPU通过调用浏览器渲染引擎,获得视频流解码方式以及渲染绘制处理方式,并在接收到H265视频流和解码指令时,采用视频解码方式,对H265视频流进行解码处理,得到相应的视频解码数据,并将视频解码数据转换为OpenGL纹理,以在接收到渲染指令指,采用渲染绘制处理方式,基于OpenGL纹理进行渲染绘制处理,获取相应的视频。从H265视频流解码到渲染绘制,获得相应视频的整个过程都是在GPU中进行操作的,减少CPU占用,和内存消耗,能够在性能较差的终端设备上流畅播放4K及以上分辨的H265视频。
以下结合说明书附图对本申请的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本申请,并不用于限定本申请,并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
请参考图3,图3为本申请实施例的应用场景示意图。该应用场景中包括终端设备110和服务器120,终端设备110与服务器120之间可以通过通信网络进行通信。
在一种可选的实施方式中,通信网络可以是有线网络或无线网络。因此,终端设备110和服务器120可以通过有线或无线通信方式进行直接或间接地连接。比如,终端设备110可以通过无线接入点与服务器120间接地连接,或发终端设备110通过因特网与服务器120直接地连接,本申请在此不做限制。
在本申请实施例中,终端设备110包括但不限于手机、平板电脑、笔记本电脑、台式电脑、电子书阅读器、智能语音交互设备、智能家电、车载终端等设备;终端设备上可以安装有各种客户端,该客户端可以是网页浏览器;
服务器120则是与客户端相对应的后台服务器。服务器120可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。
本申请实施例中,终端设备110从服务器120中获取视频数据,并对视频数据进行解码,将解码后的视频数据显示在终端设备110的显示界面中。
需要说明的是,图3所示只是举例说明,实际上终端设备110和服务器120的数量不受限制,在本申请实施例中不做具体限定。
本申请实施例中,当服务器120的数量为多个时,多个服务器120可组成为一区块链,而服务器120为区块链上的节点;如本申请实施例所公开的查看应用数据方法,其中所涉及的应用数据可保存于区块链上。
基于上述应用场景,下面结合上述描述的应用场景,根据附图来描述本申请示例性实施方式提供的视频流处理的方法,需要注意的是,上述应用场景仅是为了便于理解本申请的精神和原理而示出,本申请的实施方式在此方面不受任何限制。并且,本申请实施例可应用于各种场景,不仅包括视频流处理的场景,还包括但不限于云技术、人工智能、智慧交通、辅助驾驶等各种场景。
请参考图4,图4示例性提供本申请实施例中一种视频流处理的方法流程图,该方法中包括:
步骤S400,将客户端对应的待处理H265视频流传输给GPU。
在一种可能的实现方式中,客户端接收到服务器发送的原始视频流后,将H265视频流存储在文件系统中。此时,CPU从文件系统中读取原始视频流,并分离出H265视频流,然后将客户端对应的待处理H265视频流传输给GPU,即将待处理H265视频流由系统内存拷贝到GPU对应的显存中。
由GPU对H265视频流进行硬件解码处理,并将解码处理获得的视频解码数据存储在显存中,由于解码后的数据并不能直接显示,还需要进行渲染处理等过程,因此由GPU将显存中存储的视频解码数据转换为OpenGL纹理,并基于OpenGL纹理进行渲染绘制处理,获得相应的视频,以便后续显示,参见步骤S401的实现方式。
步骤S401,在GPU中,执行:基于操作系统平台对应的视频流解码方式,对获取到的待处理H265视频流进行解码处理,获得视频解码数据;将视频解码数据转换成OpenGL纹理,并基于OpenGL纹理进行渲染绘制处理,获得相应的视频;其中视频流解码方式是写在客户端内核媒体模块中的。
在一种可能的实现方式中,预先在客户端的内核媒体(media)模块增加个操作系统平台H265视频流的解码方式;并重新编译打包出客户端,使客户端可以在各个操作系统平台,支持对H265视频流的解码处理,保证各个操作系统平台均能流畅播放视频,且降低CPU和内存的消耗。
需要说明的是,本领域技术人员还会将内核媒体模块称为内核代码媒体模块,解码方式称为硬件解码代码、硬件解码器。
对于不同的操作系统平台,使用不同的解码方式;比如,windows平台采用D3D,mac平台采用VideoToolBox,linux平台采用视频加速规范(VideoAccelerationAPI,VAAPI)。
在将上述操作系统平台的解码方式写在客户端的内核媒体模块时,在windows平台、mac平台、linux平台均能流畅播放视频。
由于客户端的内核媒体中包含有多种操作系统平台对应的视频流解码方式,因此GPU在接收到待处理H265视频流以及相应的解码指令时:
首先,查找当前操作系统平台对应的视频流解码方式,并基于视频流解码方式,对获取到的待处理H265视频流进行解码处理,获得相应的视频解码数据;
其次,采用操作系统平台支持的GPU资源共享技术,将视频流解码获得的视频解码数据,转换成OpenGL纹理;
最后,在接收到渲染指令时,调用OpenGL,基于OpenGL纹理进行渲染绘制处理,获得相应的视频。
下面,采用具体实施方式,对GPU在不同操作系统平台的情况,进行H265视频流解码,以及渲染绘制处理进行详细说明。
具体实施方式一:操作系统平台为windows平台。
在当前操作系统平台为windows平台时,确定使用支持H265格式D3D作为解码器,对H265视频流进行解码处理,获得相应的D3D纹理,并将D3D纹理存储相应的显存中。
然后,基于GPU资源共享技术,将显存中存储的D3D纹理转换为OpenGL纹理;
一般的,D3D的视频硬件解码解输出结果为D3D纹理,输出格式为NV12。
在一种可能的实现方式中,通过调用windows平台支持的数据共享接口EGL扩展,借助其中的EGLStream扩展,首先需要创建EGLStream对象,然后创建纹理对象,并在创建一个共享的D3D纹理后,再从此纹理创建一个EGLSurface,该EGLSurface可绑定至OpenGL纹理;因此,需将解码出的纹理拷贝至共享的D3D纹理上,拷贝方法是借助D3D11的VideoProcessor接口将YUV转换成RGB。此方法相当于直接将D3D纹理作为OpenGL纹理使用。
最后,GPU在接收到CPU传输的渲染指令后,调用OpenGL,从GPU对应的显存中读取所述OpenGL纹理,并基于OpenGL纹理,进行纹理的渲染绘制处理,获得相应的视频。
在本实施例中,“D3D”全称为“Direct3D”,是微软公司在Microsoft Windows操作系统上所开发的一套基于微软的通用对象模式(Common Object Mode,COM)的3D图形编程接口,EGL是由Khronos Group提供的一组平台无关的API。
具体实施方式二:操作系统平台为mac平台。
在当前操作系统平台为Mac平台,则使用支持H265格式的VideoToolBox作为解码器,对H265视频流进行解码处理,获得相应的CVPixelBufferRef。
然后,基于GPU资源共享技术,将显存中存储的CVPixelBufferRef转换为OpenGL纹理;
一般的,VideoToolBox的视频硬件解码解输出结果为CVPixelBufferRef,输出格式存在多种,如YUV420P、NV12、RGB、UYVY422等。
在一种可实现的方式中,通过调用mac平台支持的数据共享接口API,将CVPixelBufferRef转换为OpenGL纹理。
最后,GPU在接收到CPU传输的渲染指令后,调用OpenGL,从GPU对应的显存中读取所述OpenGL纹理,并基于OpenGL纹理,进行纹理的渲染绘制处理,获得相应的视频。
具体实施方式三:操作系统平台为linux平台。
若操作系统平台为linux平台,则基于VAAPI,创建支持H265格式的视频加速解码器VADecoder,并调用VADecoder对H265视频流进行解码处理,获得相应的视频解码数据,并存储在GPU对应的显存中,其中“VAAPI”是一个统一的编解码规范。
然后,基于GPU资源共享技术,将显存中存储的VADecoder输出的视频解码数据转换为OpenGL纹理;
一般的,通过调用Linux平台支持的数据共享接口EGL扩展,将显存中存储的VADecoder输出的视频解码数据转换为OpenGL纹理。
最后,GPU在接收到CPU传输的渲染指令后,调用OpenGL,从GPU对应的显存中读取所述OpenGL纹理,并基于OpenGL纹理,进行纹理的渲染绘制处理,获得相应的视频。
本申请,通过各个操作系统平台支持的数据共享接口,实现GPU资源共享,即实现各个操作系统平台支持的解码器与OpenCL之间的直接数据交互,使得OpenCL可以直接从GPU的显存中读取OpenCL纹理,无需在显存、内存、OpenCL等之间反复拷贝数据,也不需要CPU将视频解码数据进行格式转换,进一步显著降低了对CPU资源的占用。
在本申请实施例中,在获得相应的视频后,将视频显示在客户端的界面中,以客户端为Chromium浏览器的网页浏览器为例,将获得的视频显示在Chromium浏览器的界面中。
下面,请参考图5,以客户端为Chromium浏览器为例,对本申请实施例提供的一种视频流处理的具体实施方法进行说明。
图5示例性提供本申请实施例中一种视频流处理的具体实施方法流程图,包括如下步骤:
步骤S500,将Chromium浏览器对应的待处理H265视频流传输给GPU;
步骤S501,通过GPU,在接收到视频解码指令后,基于Chromium浏览器内核媒体模块中写入的,且与操作系统平台对应的视频流解码方式,对待处理H265视频流进行解码处理,获得视频解码数据;
步骤S502,利用GPU资源共享技术,通过GPU将视频解码数据转换成OpenGL纹理;
步骤S503,通过GPU,在接收到渲染指令后,调用OpenGL,基于OpenGL纹理进行渲染绘制处理,获得相应的视频;
步骤S504,将视频显示在Chromium浏览器的界面中。
在本申请实施例中,深度定制的客户端,在客户端内核代码里增加各平台H265视频的硬件解码代码,即解码方式,无需编译第三方H265解码器的库,减小了不必要的开发工作量。同时在H265硬件解码和渲染绘制方面进行了优化,极大地降低了解码输出从显存拷贝到内存、格式转换和从内存拷贝到显存的性能消耗,能够流畅播放4K及以上分辨率的H265视频。
与本申请上述方法实施例基于同一发明构思,本申请实施例中还提供了一种视频流处理的装置,装置解决问题的原理与上述实施例的方法相似,因此装置的实施可以参见上述方法的实施,重复之处不再赘述。
请参考图6,图6示例性提供本申请实施例提供一种视频流处理的装置600,该视频流处理的装置600,包括:
传输单元601,用于将接收到的待处理H265视频流传输给GPU;
执行单元602,用于在GPU中,执行:基于操作系统平台对应的视频流解码方式,对获取到的待处理H265视频流进行解码处理,获得视频解码数据;将视频解码数据转换成OpenGL纹理,并基于OpenGL纹理进行渲染绘制处理,获得相应的视频;其中视频流解码方式是写在客户端内核媒体模块中的。
在一种可能的实现方式中,执行单元602,具体用于:
若操作系统平台为Windows平台,则使用支持H265格式的D3D作为解码器,对H265视频流进行解码处理,获得D3D纹理,并存储在GPU对应的显存中。
在一种可能的实现方式中,执行单元602,具体用于:
若操作系统平台为Mac平台,则使用支持H265格式的VideoToolBox作为解码器,对H265视频流进行解码处理,获得CVPixelBufferRef,并存储在GPU对应的显存中。
在一种可能的实现方式中,执行单元602,具体用于:
若操作系统平台为linux平台,则基于VAAPI,创建支持H265格式的VADecoder,并调用VADecoder对H265视频流进行解码处理,获得相应的视频解码数据,并存储在GPU对应的显存中。
在一种可能的实现方式中,执行单元602,具体用于:
若操作系统平台为windows平台,则GPU调用windows平台支持的数据共享接口EGL扩展,将D3D纹理转换为OpenGL纹理;
若操作系统平台为Linux平台,则GPU调用Linux平台支持的数据共享接口EGL扩展,将VADecoder输出的视频解码数据转换为OpenGL纹理;
若操作系统平台为mac平台,则GPU调用mac平台支持的数据共享接口API,将CVPixelBufferRef转换为OpenGL纹理。
在一种可能的实现方式中,执行单元602,具体用于:
在接收到渲染指令后,调用OpenGL,从GPU对应的显存中读取OpenGL纹理,并基于OpenGL纹理进行渲染绘制处理,获得相应的视频。
在一种可能的实现方式中,执行单元602,还用于:
获得相应的视频后,将视频显示在网页浏览器的界面中,其中网页浏览器为Chromium浏览器。
为了描述的方便,以上各部分按照功能划分为各模块(或单元)分别描述。当然,在实施本申请时可以把各模块(或单元)的功能在同一个或多个软件或硬件中实现。
所属技术领域的技术人员能够理解,本申请的各个方面可以实现为系统、方法或程序产品。因此,本申请的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
在介绍了本申请示例性实施方式的视频流处理的方法和装置之后,接下来,介绍本申请的一示例性实施方式的视频流处理的设备。
与本申请上述方法实施例基于同一发明构思,本申请实施例中还提供了一种视频流处理的设备,在一种实施例中,视频流处理的设备的结构可以参考7所示,包括通讯模块701、存储器702、一个或多个中央处理器703,以及一个或多个图形处理器704。
通讯模块701,用于接收服务器发送的H265视频流,与其他终端设备进行通信;
存储器702,用于存储可执行的计算机程序。存储器702可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统,以及运行即时通讯功能所需的程序等;存储数据区可存储各种即时通讯信息和操作指令集等。
存储器702可以是易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM);存储器702也可以是非易失性存储器(non-volatilememory),例如只读存储器,快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);或者存储器702是能够用于携带或存储具有指令或数据结构形式的期望的计算机程序并能够由计算机存取的任何其他介质,但不限于此。存储器702可以是上述存储器的组合。
中央处理器703,可以包括一个或多个中央处理单元(central processing unit,CPU)或者为数字处理单元等等。中央处理器703,用于调用存储器702中存储的计算机程序时实现上述视频流处理的方法。
图形处理器704,用于调用存储器702中存储的计算机程序时,与中央处理器703配合,实现上述视频流处理的方法。
本申请实施例中不限定上述通讯模块701、存储器702、一个或多个中央处理器703,以及一个或多个图形处理器704之间的具体连接介质。本申请实施例在图7中以通讯模块701、存储器702、一个或多个中央处理器703,以及一个或多个图形处理器704之间通过总线705连接,总线705在图7中以粗线描述,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线705可以分为地址总线、数据总线、控制总线等。为便于描述,图7中仅用一条粗线描述,但并不描述仅有一根总线或一种类型的总线。
在另一种实施例中,视频流处理的设备也可以是其他设备,可以参考图8所示,包括:通信组件810、存储器820、显示单元830、摄像头840、传感器850、音频电路860、蓝牙模块870、处理器880等部件。
通信组件810用于与服务器进行通信。在一些实施例中,可以包括电路无线保真(Wireless Fidelity,WiFi)模块,WiFi模块属于短距离无线传输技术,电子设备通过WiFi模块可以帮助用户收发信息。
存储器820可用于存储软件程序及数据。处理器880通过运行存储在存储器820的软件程序或数据,从而执行各种功能以及数据处理。存储器820可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。存储器820存储有使得终端设备110能运行的操作系统。本申请中存储器820可以存储操作系统及各种应用程序,还可以存储执行本申请实施例视频流处理的方法的代码。
显示单元830还可用于显示由用户输入的信息或提供给用户的信息以及终端设备110的各种菜单的图形用户界面(graphical user interface,GUI)。具体地,显示单元830可以包括设置在终端设备110正面的显示屏832。其中,显示屏832可以采用液晶显示器、发光二极管等形式来配置。显示单元830可以用于显示本申请实施例中的待发布评论编辑界面等。
显示单元830还可用于接收输入的数字或字符信息,产生与终端设备110的用户设置以及功能控制有关的信号输入,具体地,显示单元2030可以包括设置在终端设备110正面的触摸屏831,可收集用户在其上或附近的触摸操作,例如点击按钮,拖动滚动框等。
其中,触摸屏831可以覆盖在显示屏832之上,也可以将触摸屏831与显示屏832集成而实现终端设备110的输入和输出功能,集成后可以简称触摸显示屏。本申请中显示单元830可以显示视频流处理后的视频。
摄像头840可用于捕获静态图像,用户可以将摄像头840拍摄的图像通过应用发布评论。摄像头840可以是一个,也可以是多个。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给处理器880转换成数字图像信号。
终端设备还可以包括至少一种传感器850,比如加速度传感器851、距离传感器852、指纹传感器853、温度传感器854。终端设备还可配置有陀螺仪、气压计、湿度计、温度计、红外线传感器、光传感器、运动传感器等其他传感器。
音频电路860、扬声器861、传声器862可提供用户与终端设备110之间的音频接口。音频电路860可将接收到的音频数据转换后的电信号,传输到扬声器861,由扬声器861转换为声音信号输出。终端设备110还可配置音量按钮,用于调节声音信号的音量。另一方面,传声器862将收集的声音信号转换为电信号,由音频电路860接收后转换为音频数据,再将音频数据输出至通信组件810以发送给比如另一终端设备110,或者将音频数据输出至存储器820以便进一步处理。
蓝牙模块870用于通过蓝牙协议来与其他具有蓝牙模块的蓝牙设备进行信息交互。例如,终端设备可以通过蓝牙模块870与同样具备蓝牙模块的可穿戴电子设备(例如智能手表)建立蓝牙连接,从而进行数据交互。
处理器880是终端设备的控制中心,利用各种接口和线路连接整个终端的各个部分,通过运行或执行存储在存储器820内的软件程序,以及调用存储在存储器820内的数据,执行终端设备的各种功能和处理数据。在一些实施例中,处理器880可包括一个或多个处理单元;处理器880还可以集成应用处理器和基带处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,基带处理器主要处理无线通信。可以理解的是,上述基带处理器也可以不集成到处理器880中。本申请中处理器880可以运行操作系统、应用程序、用户界面显示及触控响应,以及本申请实施例的视频流处理的方法。另外,处理器880与显示单元830耦接。其中,处理器880中包括有中央处理器881和图形处理器882。
在一些可能的实施方式中,本申请提供的视频流处理的方法的各个方面还可以实现为一种程序产品的形式,其包括计算机程序,当程序产品在电子设备上运行时,计算机程序用于使电子设备执行本说明书上述描述的根据本申请各种示例性实施方式的视频流处理的方法中的步骤,例如,电子设备可以执行如图4中所示的步骤。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
本申请的实施方式的程序产品可以采用便携式紧凑盘只读存储器(CD-ROM)并包括计算机程序,并可以在计算装置上运行。然而,本申请的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被命令执行系统、装置或者器件使用或者与其结合使用。
可读信号介质可以包括在基带中或者转换为载波一部分传播的数据信号,其中承载了可读计算机程序。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由命令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的计算机程序可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
应当注意,尽管在上文详细描述中提及了装置的若干单元或子单元,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多单元的特征和功能可以在一个单元中具体化。反之,上文描述的一个单元的特征和功能可以进一步划分为由多个单元来具体化。
此外,尽管在附图中以特定顺序描述了本申请方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
本领域内的技术人员应明白,本申请实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用计算机程序的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种视频流处理的方法,其特征在于,所述方法包括:
将客户端对应的待处理H265视频流传输给图形处理器GPU;
在GPU中,执行以下操作:
基于操作系统平台对应的视频流解码方式,对获取到的所述待处理H265视频流进行解码处理,获得视频解码数据,其中所述视频流解码方式是写在所述客户端内核媒体模块中的;
将所述视频解码数据转换成开放图形库OpenGL纹理,并基于所述OpenGL纹理进行渲染绘制处理,获得相应的视频。
2.如权利要求1所述的方法,其特征在于,所述基于操作系统平台对应的视频流解码方式,对所述H265视频流进行解码处理,获得视频解码数据,包括:
若所述操作系统平台为Windows平台,则使用支持H265格式的D3D作为解码器,对所述H265视频流进行解码处理,获得D3D纹理,并存储在所述GPU对应的显存中。
3.如权利要求1所述的方法,其特征在于,所述基于操作系统平台对应的视频流解码方式,对所述H265视频流进行解码处理,获得视频解码数据,包括:
若所述操作系统平台为Mac平台,则使用支持H265格式的VideoToolBox作为解码器,对所述H265视频流进行解码处理,获得CVPixelBufferRef,并存储在所述GPU对应的显存中。
4.如权利要求1所述的方法,其特征在于,所述基于操作系统平台对应的视频流解码方式,对所述H265视频流进行解码处理,获得视频解码数据,包括:
若所述操作系统平台为linux平台,则基于视频加速规范VAAPI,创建支持H265格式的视频加速解码器VADecoder,并调用所述VADecoder对所述H265视频流进行解码处理,获得相应的视频解码数据,并存储在所述GPU对应的显存中。
5.如权利要求1~4任一所述的方法,其特征在于,所述将所述视频解码数据转换成OpenGL纹理,包括:
若所述操作系统平台为windows平台,则所述GPU调用所述windows平台支持的数据共享接口EGL扩展,将所述D3D纹理转换为所述OpenGL纹理;
若所述操作系统平台为Linux平台,则所述GPU调用所述Linux平台支持的数据共享接口EGL扩展,将所述VADecoder输出的视频解码数据转换为所述OpenGL纹理;
若所述操作系统平台为mac平台,则所述GPU调用所述mac平台支持的数据共享接口API,将所述CVPixelBufferRef转换为所述OpenGL纹理。
6.如权利要求5所述的方法,其特征在于,所述基于所述OpenGL纹理进行渲染绘制处理,获得相应的视频,包括:
在接收到渲染指令后,调用OpenGL,从所述GPU对应的显存中读取所述OpenGL纹理,并基于所述OpenGL纹理进行渲染绘制处理,获得相应的视频。
7.如权利要求1所述的方法,其特征在于,所述获得相应的视频后,还包括:
将所述视频显示在网页浏览器的界面中,其中所述网页浏览器为Chromium浏览器。
8.一种视频流处理的装置,其特征在于,所述装置包括:
传输单元,用于将接收到的待处理H265视频流传输给GPU;
执行单元,用于在GPU中,基于接收到的操作指令,执行:基于操作系统平台对应的视频流解码方式,对获取到的所述待处理H265视频流进行解码处理,获得视频解码数据;将所述视频解码数据转换成开放图形库OpenGL纹理,并基于所述OpenGL纹理进行渲染绘制处理,获得相应的视频;其中所述视频流解码方式是写在所述客户端内核媒体模块中的。
9.一种视频流处理的设备,其特征在于,所述设备包括:存储器、中央处理器CPU以及图形处理器GPU,其中;
所述存储器,用于存储计算机程序;
所述CPU,用于调用所述存储器中存储的计算机程序,按照获得的程序执行如权利要求1~7任一项中CPU侧的方法;
所述GPU,用于调用所述存储器中存储的计算机程序,按照获得的程序执行如权利要求1~7任一项中GPU侧的方法。
10.一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机可执行指令,所述计算机可执行指令用于使所述计算机执行权利要求1~7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111583246.2A CN114268796A (zh) | 2021-12-22 | 2021-12-22 | 视频流处理的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111583246.2A CN114268796A (zh) | 2021-12-22 | 2021-12-22 | 视频流处理的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114268796A true CN114268796A (zh) | 2022-04-01 |
Family
ID=80829647
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111583246.2A Pending CN114268796A (zh) | 2021-12-22 | 2021-12-22 | 视频流处理的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114268796A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115278301A (zh) * | 2022-07-27 | 2022-11-01 | 超聚变数字技术有限公司 | 视频处理方法、系统及设备 |
CN115695857A (zh) * | 2022-12-29 | 2023-02-03 | 北京海誉动想科技股份有限公司 | 云应用的视频编码方法及装置 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103617191A (zh) * | 2013-11-07 | 2014-03-05 | 北京奇虎科技有限公司 | 使用硬件加速实现浏览器渲染的方法和浏览器 |
CN108733356A (zh) * | 2018-05-14 | 2018-11-02 | 武汉斗鱼网络科技有限公司 | 一种纹理共享方法、计算机设备和存储介质 |
CN108965814A (zh) * | 2018-07-27 | 2018-12-07 | 高新兴科技集团股份有限公司 | 一种基于cuda加速技术的视频混合解码渲染方法 |
CN109656637A (zh) * | 2018-12-13 | 2019-04-19 | 高新兴科技集团股份有限公司 | 跨平台调用OpenGL ES的渲染方法、装置及计算机存储介质 |
CN109963191A (zh) * | 2017-12-14 | 2019-07-02 | 中兴通讯股份有限公司 | 一种视频信息的处理方法、装置及存储介质 |
CN110381322A (zh) * | 2019-07-15 | 2019-10-25 | 腾讯科技(深圳)有限公司 | 视频流解码方法、装置、终端设备及存储介质 |
CN110446114A (zh) * | 2019-08-19 | 2019-11-12 | 广州视源电子科技股份有限公司 | 多媒体数据的处理装置、方法、电子设备及存储介质 |
CN111899322A (zh) * | 2020-06-29 | 2020-11-06 | 腾讯科技(深圳)有限公司 | 视频处理方法、动画渲染sdk和设备及计算机存储介质 |
CN113778604A (zh) * | 2021-09-15 | 2021-12-10 | 腾讯数码(深圳)有限公司 | 一种操作界面的展示方法、装置、电子设备和存储介质 |
-
2021
- 2021-12-22 CN CN202111583246.2A patent/CN114268796A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103617191A (zh) * | 2013-11-07 | 2014-03-05 | 北京奇虎科技有限公司 | 使用硬件加速实现浏览器渲染的方法和浏览器 |
CN109963191A (zh) * | 2017-12-14 | 2019-07-02 | 中兴通讯股份有限公司 | 一种视频信息的处理方法、装置及存储介质 |
CN108733356A (zh) * | 2018-05-14 | 2018-11-02 | 武汉斗鱼网络科技有限公司 | 一种纹理共享方法、计算机设备和存储介质 |
CN108965814A (zh) * | 2018-07-27 | 2018-12-07 | 高新兴科技集团股份有限公司 | 一种基于cuda加速技术的视频混合解码渲染方法 |
CN109656637A (zh) * | 2018-12-13 | 2019-04-19 | 高新兴科技集团股份有限公司 | 跨平台调用OpenGL ES的渲染方法、装置及计算机存储介质 |
CN110381322A (zh) * | 2019-07-15 | 2019-10-25 | 腾讯科技(深圳)有限公司 | 视频流解码方法、装置、终端设备及存储介质 |
CN110446114A (zh) * | 2019-08-19 | 2019-11-12 | 广州视源电子科技股份有限公司 | 多媒体数据的处理装置、方法、电子设备及存储介质 |
CN111899322A (zh) * | 2020-06-29 | 2020-11-06 | 腾讯科技(深圳)有限公司 | 视频处理方法、动画渲染sdk和设备及计算机存储介质 |
CN113778604A (zh) * | 2021-09-15 | 2021-12-10 | 腾讯数码(深圳)有限公司 | 一种操作界面的展示方法、装置、电子设备和存储介质 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115278301A (zh) * | 2022-07-27 | 2022-11-01 | 超聚变数字技术有限公司 | 视频处理方法、系统及设备 |
CN115278301B (zh) * | 2022-07-27 | 2023-12-22 | 河南昆仑技术有限公司 | 视频处理方法、系统及设备 |
CN115695857A (zh) * | 2022-12-29 | 2023-02-03 | 北京海誉动想科技股份有限公司 | 云应用的视频编码方法及装置 |
CN115695857B (zh) * | 2022-12-29 | 2023-03-21 | 北京海誉动想科技股份有限公司 | 云应用的视频编码方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8768078B2 (en) | Intelligent media decoding | |
CN113244614B (zh) | 图像画面展示方法、装置、设备及存储介质 | |
BR112021009629A2 (pt) | método de processamento do conteúdo da interface de usuário, sistema, e, mídia legível por computador não transitória | |
CN114268796A (zh) | 视频流处理的方法及装置 | |
CN112843676B (zh) | 数据处理方法、装置、终端、服务器及存储介质 | |
CN113542757A (zh) | 云应用的图像传输方法、装置、服务器及存储介质 | |
CN110990075A (zh) | 快应用的启动方法、装置、设备及存储介质 | |
KR102657674B1 (ko) | 3차원 비디오의 처리 방법, 장치, 판독 가능 저장매체 및 전자기기 | |
WO2021227953A1 (zh) | 图像特效配置方法、图像识别方法、装置及电子设备 | |
CN113411660B (zh) | 视频数据的处理方法、装置和电子设备 | |
CN111104183B (zh) | 应用程序运行方法、装置、电子设备及存储介质 | |
CN111199569A (zh) | 数据处理的方法、装置、电子设备及计算机可读介质 | |
US11599252B1 (en) | Method, apparatus, device, medium and program product for replying questions | |
KR20160131827A (ko) | 클라우드 스트리밍 서비스 시스템, 알파 레벨을 이용한 이미지 클라우드 스트리밍 서비스 방법 및 이를 위한 장치 | |
CN113837918B (zh) | 多进程实现渲染隔离的方法及装置 | |
CN115393490A (zh) | 图像渲染方法、装置、存储介质及电子设备 | |
CN113893525A (zh) | 云游戏运行方法、装置、电子设备及计算机可读介质 | |
CN115175002B (zh) | 一种视频播放方法及设备 | |
WO2023169157A1 (zh) | 子应用程序的运行方法、装置、电子设备、程序产品及存储介质 | |
CN118276987A (zh) | 虚拟人集成中的驱动方法、装置及可读存储介质 | |
CN117742548A (zh) | 一种ktv显示设备控制方法、装置、电子设备和可读介质 | |
CN118037524A (zh) | 图像处理方法及装置、存储介质及电子设备 | |
CN118612493A (zh) | 全景视频生成、播放方法、装置、设备、介质和程序产品 | |
CN117762545A (zh) | 一种壁纸处理方法、装置、存储介质及电子设备 | |
CN118138787A (zh) | 一种直播多开方法、装置、终端设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20220401 |
|
RJ01 | Rejection of invention patent application after publication |