CN117130749A - 一种基于WebGPU提升Web播放器硬件解码能力的方法 - Google Patents
一种基于WebGPU提升Web播放器硬件解码能力的方法 Download PDFInfo
- Publication number
- CN117130749A CN117130749A CN202311106703.8A CN202311106703A CN117130749A CN 117130749 A CN117130749 A CN 117130749A CN 202311106703 A CN202311106703 A CN 202311106703A CN 117130749 A CN117130749 A CN 117130749A
- Authority
- CN
- China
- Prior art keywords
- webgpu
- decoding
- decoder
- data
- code stream
- 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
- 238000000034 method Methods 0.000 title claims abstract description 53
- 238000004364 calculation method Methods 0.000 claims abstract description 20
- 238000009877 rendering Methods 0.000 claims description 47
- 238000012545 processing Methods 0.000 claims description 16
- 230000005540 biological transmission Effects 0.000 claims description 13
- 238000005516 engineering process Methods 0.000 claims description 13
- 238000004891 communication Methods 0.000 claims description 11
- 238000005070 sampling Methods 0.000 claims description 8
- 238000006243 chemical reaction Methods 0.000 claims description 7
- 230000005856 abnormality Effects 0.000 claims description 6
- 238000004458 analytical method Methods 0.000 claims description 6
- 238000012544 monitoring process Methods 0.000 claims description 5
- 230000002159 abnormal effect Effects 0.000 claims description 3
- 238000001914 filtration Methods 0.000 claims description 3
- 238000004321 preservation Methods 0.000 claims description 3
- 238000011084 recovery Methods 0.000 claims description 3
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明公开了一种基于WebGPU提升Web播放器硬件解码能力的方法,包括以下步骤:在Web平台上搭建WebGPU技术框架,开发WebGPU解码器,所述WebGPU解码器中设置H.265码流解码模块;通过对WebGPU解码器的H.265码流解码模块进行解析重构,所述H.265码流解码模块分解为帧数据单元、NAL单元、解码单元和计算单元,将H.265码流解码模块的帧数据、NAL单元和解码单元与WebGPU解码器的计算模块分离;所述WebGPU解码器的H.265码流解码模块通过GPU进行H.265码流解码时,WebGPU解码器通过WebGPU AP I获取GPU的负载情况。通过进行解码的部分和计算模块分离后,计算模块可以利用GPU多核处理器的并行计算能力,同时处理多个计算任务;解码任务不再受到计算任务的干扰,可以专注于解码数据。
Description
技术领域
本发明涉及码流解码技术领域,具体涉及一种基于WebGPU提升Web播放器硬件解码能力的方法。
背景技术
H.265视频已发展了十年,近5年芯片硬件厂家也基本推出了该标准下的方案。硬件厂商可以直接输出H.264/H.265二种视频格式,H.265相比H264可以保证视频质量的前提下节省一半传输带宽及存储空间。但是基于Web浏览器开发的相关应用软件未能快速适配H.265视频流的播放,是由于市面上大多数应用采用播放器进行软解码完成H.265视频流的播放。Web播放器使用软解码H.265视频时,无论是手机端还是桌面端的Web浏览器都会造成浏览器性能不够,从而出现视频流黑屏、浏览器崩溃等现象。另外随着网络视频、实时直播、智慧安防的普及,越来越多的用户开始使用在线视频服务。然而,由于网络带宽和硬件性能的限制,许多视频无法流畅播放。其中,H.265编码格式的视频如果参与软解码方式占用的带宽较大,需要更高的计算能力和更先进的硬件支持才能实现流畅播放和节约带宽。
目前基于WebAssembly的播放器对H265的视频解码技术还不够稳定,无法充分利用硬件资源处理计算任务和解码任务,而且性能相对较低,无法满足高质量视频播放的要求;H265的视频解码需要较高的计算资源,而WebAssembly技术的运行环境有一定的限制,无法充分利用硬件资源,导致解码速度较慢。
发明内容
本发明的目的在于提供一种基于WebGPU提升Web播放器硬件解码能力的方法,解决以下技术问题:
现有的码流解码技术,对H265的视频解码技术性能相对较低,无法充分利用硬件资源处理计算任务和解码任务,导致解码速度较慢。
本发明的目的可以通过以下技术方案实现:
一种基于WebGPU提升Web播放器硬件解码能力的方法,包括以下步骤:
S1:在Web平台上搭建WebGPU技术框架,开发WebGPU解码器,所述WebGPU解码器中设置H.265码流解码模块;
S2:通过对WebGPU解码器的H.265码流解码模块进行解析重构,所述H.265码流解码模块分解为帧数据单元、NAL单元、解码单元和计算单元,将H.265码流解码模块的帧数据、NAL单元和解码单元与WebGPU解码器的计算模块分离;
S3:所述WebGPU解码器的H.265码流解码模块通过GPU进行H.265码流解码时,WebGPU解码器通过WebGPU API获取GPU的负载情况,根据GPU的负载情况,动态调整计算任务和解码任务的分配方式。
作为本发明进一步的方案:所述步骤S1中,在Web平台上搭建WebGPU技术框架,开发WebGPU解码器,包括以下步骤:
在Web平台上搭建WebGPU技术框架,在WebGPU技术框架上构建WebGPU解码器,WebGPU解码器具有进度保存功能,同时,在渲染故障时,进行快速重启。
作为本发明进一步的方案:所述步骤S1中,在WebGPU技术框架上构建WebGPU解码器,WebGPU解码器具有进度保存功能,同时,在渲染故障时,进行快速重启,包括以下步骤:
构建WebGPU解码器时,将WebGPU解码器的解码过程划分为初始化阶段、数据解码阶段和渲染阶段,每个阶段都设置相应的状态变量保存进度;
渲染阶段设置为逐帧渲染,数据解码阶段每解码一帧数据后,渲染阶段立即渲染解码后的一帧数据,并在渲染阶段加入异常捕获机制;
若异常捕获机制检测到渲染故障时,立即捕获异常,保存当前数据解码阶段的解码进度,以及渲染阶段已完成的帧数据,并通过调用重启函数,将WebGPU解码器重置到初始状态,重新执行解码过程;
WebGPU解码器重启后,根据保存的解码进度,将解码器设置为恢复状态,继续解码未处理的数据。
作为本发明进一步的方案:所述步骤S2中,帧数据单元、NAL单元、解码单元和计算单元,包括:
计算单元:用于对来自数据传输单元的H.265码流进行解析,并提取出解析得到的H.265码流中的帧数据;
解码单元:用于将提取的帧数据进行解码,将帧数据还原为原始的视频的帧图像;
NAL单元:用于对解码后的帧图像进行块解析,将其细分为更小的帧块;
帧数据单元:在块解析后,对于每个处理的帧块,进行优化帧处理操作;其中,优化帧处理操作包括:滤波、去噪和增强。
作为本发明进一步的方案:所述步骤S2,将H.265码流解码模块的帧数据、NAL单元和解码单元与WebGPU解码器的计算模块分离,包括以下步骤:
对码流解码模块进行分析,将帧数据单元、NAL单元、解码单元分配到解码部分,并将计算单元分配到计算部分;
将码流解码模块的解码部分和计算部分进行拆分,并在解码部分和计算部分之间定义合适的接口和数据结构;其中,接口定义包括:输入输出参数、函数调用和返回值,数据结构包括:帧数据的格式、帧数据的存储方式和帧数据相关的元数据信息;
将H.265码流解码模块的解码部分分离出WebGPU解码器中的计算模块,H.265码流解码模块的计算部分保留在WebGPU解码器的计算模块中。
作为本发明进一步的方案:所述码流解码模块的计算单元在对输入的H.265码流进行解析的同时,将已解析并提取后的帧数据通过异步通信机制传输到WebGPU解码器的计算模块中的计算单元进行处理。
作为本发明进一步的方案:所述码流解码模块将已解析并提取后的帧数据通过异步通信机制传输到WebGPU解码器的计算模块中的计算单元进行处理,包括以下步骤:
将已解析并提取后的帧数据,根据WebGPU解码器计算模块的输入要求进行格式转换,将格式转换后的数据进行分割,并将分割后的数据打包成多个数据包存储在缓冲区对象中;
所述码流解码模块通过异步通信机制,将打包完成的多个数据包传输到WebGPU解码器的计算模块中的计算单元;
WebGPU解码器的计算模块中的计算单元对接收到的数据进行解包操作,还原成原始的帧数据。
作为本发明进一步的方案:所述WebGPU解码器通过数据传输单元从CPU获取H.265码流数据。
作为本发明进一步的方案:所述WebGPU解码器通过数据传输单元从CPU获取H.265码流数据,包括以下步骤:
在GPU端创建一个纹理对象,用于存储需要传输的H.265码流数据,并确保所述纹理对象与CPU端需要传输的H.265码流数据格式和大小匹配;
通过WebGPU API将CPU端的数据绑定到GPU端的纹理对象上;
通过纹理采样Sampling API在GPU端对纹理对象进行采样操作,获取所需数据。
作为本发明进一步的方案:所述步骤S3中,动态调整计算任务和解码任务的分配方式,包括以下步骤:
通过WebGPU API获取GPU的计算任务、解码任务、使用率和渲染队列中的绘制命令数量,实时监测GPU的负载情况;
若GPU的负载利用率大于60%,通过限制解码任务的实时渲染帧率为预设渲染帧率的70%,否则,按照预设的渲染帧率进行渲染;
若GPU的负载利用率大于80%,通过WebWorker技术,将WebGPU解码器的计算模块中的计算密集型的计算任务转移至后台线程中执行,否则,继续在WebGPU解码器的计算模块中执行。
本发明的有益效果:
本发明通过WebGPU技术,提升H.265码流解码能力,实现高效、快速的视频发布;同时将进行解码的部分和计算模块分离,在解码效率和解码支持度方面进行技术升级;进行解码的部分和计算模块分离,可以独立进行处理,避免了互相干扰和竞争资源的情况;这样可以提高系统的整体性能,使解码和计算能够同时进行,充分利用硬件资源。同时,将进行解码的部分和计算模块分离后,计算模块可以利用GPU多核处理器的并行计算能力,同时处理多个计算任务;解码任务不再受到计算任务的干扰,可以专注于解码数据。通过将H.265码流解码模块的计算单元保留在WebGPU解码器的计算模块中,便于通过GPU多核处理器的并行计算能力,快速且高效地进行复杂的计算任务,提升系统的响应速度和计算性能。
附图说明
下面结合附图对本发明作进一步的说明。
图1是本发明方法的流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
请参阅图1所示,本发明为一种基于WebGPU提升Web播放器硬件解码能力的方法,包括以下步骤:
S1:在Web平台上搭建WebGPU技术框架,开发WebGPU解码器,WebGPU解码器中设置H.265码流解码模块;
S2:通过对WebGPU解码器的H.265码流解码模块进行解析重构,H.265码流解码模块分解为帧数据单元、NAL单元、解码单元和计算单元,将H.265码流解码模块的帧数据、NAL单元和解码单元与WebGPU解码器的计算模块分离;
S3:WebGPU解码器的H.265码流解码模块通过GPU进行H.265码流解码时,WebGPU解码器通过WebGPU API获取GPU的负载情况,根据GPU的负载情况,动态调整计算任务和解码任务的分配方式。
具体的,通过WebGPU技术,提升H.265码流解码能力,实现高效、快速的视频发布;同时将进行解码的部分和计算模块分离,在解码效率和解码支持度方面进行技术升级;进行解码的部分和计算模块分离,可以独立进行处理,避免了互相干扰和竞争资源的情况;这样可以提高系统的整体性能,使解码和计算能够同时进行,充分利用硬件资源。同时,将进行解码的部分和计算模块分离后,计算模块可以利用GPU多核处理器的并行计算能力,同时处理多个计算任务;解码任务不再受到计算任务的干扰,可以专注于解码数据。通过将H.265码流解码模块的计算单元保留在WebGPU解码器的计算模块中,便于通过GPU多核处理器的并行计算能力,快速且高效地进行复杂的计算任务,提升系统的响应速度和计算性能。
通过WebGPU解码器通过WebGPU API获取GPU的负载情况,根据GPU的负载情况,动态调整计算任务和解码任务的分配方式,实现GPU资源合理管理、细节操作优化,加快H265视频解码速度,使得Web播放器更加流畅。
在本发明其中一个实施例中,步骤S1中,在Web平台上搭建WebGPU技术框架,开发WebGPU解码器,包括以下步骤:
在Web平台上搭建WebGPU技术框架,在WebGPU技术框架上构建WebGPU解码器,WebGPU解码器具有进度保存功能,同时,在渲染故障时,进行快速重启。
具体的,通过将解码器设计为可重启的方式,并在渲染阶段实时监控渲染故障,可以快速地恢复解码器并继续解码过程,避免整个解码过程因为渲染故障而停止。这种方法可以保证解码器的鲁棒性和稳定性,并提高解码过程的可靠性和效率。
在本发明其中一个实施例中,步骤S1中,在WebGPU技术框架上构建WebGPU解码器,WebGPU解码器具有进度保存功能,同时,在渲染故障时,进行快速重启,包括以下步骤:
构建WebGPU解码器时,将WebGPU解码器的解码过程划分为初始化阶段、数据解码阶段和渲染阶段,每个阶段都设置相应的状态变量保存进度;
渲染阶段设置为逐帧渲染,数据解码阶段每解码一帧数据后,渲染阶段立即渲染解码后的一帧数据,并在渲染阶段加入异常捕获机制;
若异常捕获机制检测到渲染故障时,立即捕获异常,保存当前数据解码阶段的解码进度,以及渲染阶段已完成的帧数据,并通过调用重启函数,将WebGPU解码器重置到初始状态,重新执行解码过程;
WebGPU解码器重启后,根据保存的解码进度,将解码器设置为恢复状态,继续解码未处理的数据。
具体的,通过将WebGPU解码器设计为可重启的方式,并在渲染阶段实时监控渲染故障,可以快速地恢复WebGPU解码器并继续解码过程,避免整个解码过程因为渲染故障而停止。这种方法可以保证WebGPU解码器的鲁棒性和稳定性,并提高解码过程的可靠性和效率。
在本发明其中一个实施例中,步骤S2中,帧数据单元、NAL单元、解码单元和计算单元,包括:
计算单元:用于对来自数据传输单元的H.265码流进行解析,并提取出解析得到的H.265码流中的帧数据;
解码单元:用于将提取的帧数据进行解码,将帧数据还原为原始的视频的帧图像;
NAL单元:用于对解码后的帧图像进行块解析,将其细分为更小的帧块;
帧数据单元:在块解析后,对于每个处理的帧块,进行优化帧处理操作;其中,优化帧处理操作包括:滤波、去噪和增强。
具体的,H.265码流数据进行解码时,帧数据单元、NAL单元、解码单元完成解码任务,通过计算单元完成计算任务,
在本发明其中一个实施例中,步骤S2,将H.265码流解码模块的帧数据、NAL单元和解码单元与WebGPU解码器的计算模块分离,包括以下步骤:
对码流解码模块进行分析,将帧数据单元、NAL单元、解码单元分配到解码部分,并将计算单元分配到计算部分;
将码流解码模块的解码部分和计算部分进行拆分,并在解码部分和计算部分之间定义合适的接口和数据结构;其中,接口定义包括:输入输出参数、函数调用和返回值,数据结构包括:帧数据的格式、帧数据的存储方式和帧数据相关的元数据信息;
将H.265码流解码模块的解码部分分离出WebGPU解码器中的计算模块,H.265码流解码模块的计算部分保留在WebGPU解码器的计算模块中。
具体的,通过将H.265码流解码模块的计算单元保留在WebGPU解码器的计算模块中,便于通过GPU多核处理器的并行计算能力,快速且高效地进行复杂的计算任务,提升系统的响应速度和计算性能。
在本发明其中一个实施例中,码流解码模块的计算单元在对输入的H.265码流进行解析的同时,将已解析并提取后的帧数据通过异步通信机制传输到WebGPU解码器的计算模块中的计算单元进行处理。
在本发明其中一个实施例中,码流解码模块将已解析并提取后的帧数据通过异步通信机制传输到WebGPU解码器的计算模块中的计算单元进行处理,包括以下步骤:
将已解析并提取后的帧数据,根据WebGPU解码器计算模块的输入要求进行格式转换,将格式转换后的数据进行分割,并将分割后的数据打包成多个数据包存储在缓冲区对象中;
码流解码模块通过异步通信机制,将打包完成的多个数据包传输到WebGPU解码器的计算模块中的计算单元;
WebGPU解码器的计算模块中的计算单元对接收到的数据进行解包操作,还原成原始的帧数据。
具体的,将进行解码的部分和计算模块分离后,码流解码模块通过异步通信机制,将打包完成的多个数据包传输到WebGPU解码器的计算模块中的计算单元,计算模块可以利用GPU多核处理器的并行计算能力,同时处理多个计算任务;解码任务不再受到计算任务的干扰,可以专注于解码数据。通过将格式转换后的数据进行分割,可以快速且高效地进行复杂的计算任务,提升系统的响应速度和计算性能。
在本发明其中一个实施例中,WebGPU解码器通过数据传输单元从CPU获取H.265码流数据。
在本发明其中一个实施例中,WebGPU解码器通过数据传输单元从CPU获取H.265码流数据,包括以下步骤:
在GPU端创建一个纹理对象,用于存储需要传输的H.265码流数据,并确保纹理对象与CPU端需要传输的H.265码流数据格式和大小匹配;
通过WebGPU API将CPU端的数据绑定到GPU端的纹理对象上;
通过纹理采样Sampling API在GPU端对纹理对象进行采样操作,获取所需数据。
具体的,通过在GPU端创建一个纹理对象,WebGPU API将CPU端的数据绑定到GPU端的纹理对象上,利用通过纹理采样Sampling API在GPU端对纹理对象进行采样操作,可以避免在数据传输过程中进行不必要的复制操作,减少了数据传输次数,提高了传输效率,并能够直接在GPU端访问和处理数据,进一步加速计算过程。
在本发明其中一个实施例中,步骤S3中,动态调整计算任务和解码任务的分配方式,包括以下步骤:
通过WebGPU API获取GPU的计算任务、解码任务、使用率和渲染队列中的绘制命令数量,实时监测GPU的负载情况;
若GPU的负载利用率大于60%,通过限制解码任务的实时渲染帧率为预设渲染帧率的70%,否则,按照预设的渲染帧率进行渲染;
若GPU的负载利用率大于80%,通过WebWorker技术,将WebGPU解码器的计算模块中的计算密集型的计算任务转移至后台线程中执行,否则,继续在WebGPU解码器的计算模块中执行。
具体的,GPU的负载利用率大于60%时,通过限制解码任务的实时渲染帧率为预设渲染帧率的70%;GPU的负载利用率大于80%时,通过WebWorker技术,将WebGPU解码器的计算模块中的计算密集型的计算任务转移至后台线程中执行;循序渐进对GPU的负载利用率进行释放,便于使得GPU的负载处于一个动态平衡中,保证数据处理效率。
在本发明的描述中,需要理解的是,术语“上”、“下”、“左”、“右”等指示方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以及特定的方位构造和操作,因此,不能理解为对本发明的限制。此外,“第一”、“第二”仅由于描述目的,且不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。因此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者多个该特征。本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”“相连”“连接”等应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接连接,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
以上对本发明的一个实施例进行了详细说明,但所述内容仅为本发明的较佳实施例,不能被认为用于限定本发明的实施范围。凡依本发明申请范围所作的均等变化与改进等,均应仍归属于本发明的专利涵盖范围之内。
Claims (10)
1.一种基于WebGPU提升Web播放器硬件解码能力的方法,其特征在于,包括以下步骤:
S1:在Web平台上搭建WebGPU技术框架,开发WebGPU解码器,所述WebGPU解码器中设置H.265码流解码模块;
S2:通过对WebGPU解码器的H.265码流解码模块进行解析重构,所述H.265码流解码模块分解为帧数据单元、NAL单元、解码单元和计算单元,将H.265码流解码模块的帧数据、NAL单元和解码单元与WebGPU解码器的计算模块分离;
S3:所述WebGPU解码器的H.265码流解码模块通过GPU进行H.265码流解码时,WebGPU解码器通过WebGPU AP I获取GPU的负载情况,根据GPU的负载情况,动态调整计算任务和解码任务的分配方式。
2.根据权利要求1所述的一种基于WebGPU提升Web播放器硬件解码能力的方法,其特征在于,所述步骤S1中,在Web平台上搭建WebGPU技术框架,开发WebGPU解码器,包括以下步骤:
在Web平台上搭建WebGPU技术框架,在WebGPU技术框架上构建WebGPU解码器,WebGPU解码器具有进度保存功能,同时,在渲染故障时,进行快速重启。
3.根据权利要求2所述的一种基于WebGPU提升Web播放器硬件解码能力的方法,其特征在于,所述步骤S1中,在WebGPU技术框架上构建WebGPU解码器,WebGPU解码器具有进度保存功能,同时,在渲染故障时,进行快速重启,包括以下步骤:
构建WebGPU解码器时,将WebGPU解码器的解码过程划分为初始化阶段、数据解码阶段和渲染阶段,每个阶段都设置相应的状态变量保存进度;
渲染阶段设置为逐帧渲染,数据解码阶段每解码一帧数据后,渲染阶段立即渲染解码后的一帧数据,并在渲染阶段加入异常捕获机制;
若异常捕获机制检测到渲染故障时,立即捕获异常,保存当前数据解码阶段的解码进度,以及渲染阶段已完成的帧数据,并通过调用重启函数,将WebGPU解码器重置到初始状态,重新执行解码过程;
WebGPU解码器重启后,根据保存的解码进度,将解码器设置为恢复状态,继续解码未处理的数据。
4.根据权利要求1所述的一种基于WebGPU提升Web播放器硬件解码能力的方法,其特征在于,所述步骤S2中,帧数据单元、NAL单元、解码单元和计算单元,包括:
计算单元:用于对来自数据传输单元的H.265码流进行解析,并提取出解析得到的H.265码流中的帧数据;
解码单元:用于将提取的帧数据进行解码,将帧数据还原为原始的视频的帧图像;
NAL单元:用于对解码后的帧图像进行块解析,将其细分为更小的帧块;
帧数据单元:在块解析后,对于每个处理的帧块,进行优化帧处理操作;其中,优化帧处理操作包括:滤波、去噪和增强。
5.根据权利要求4所述的一种基于WebGPU提升Web播放器硬件解码能力的方法,其特征在于,所述步骤S2,将H.265码流解码模块的帧数据、NAL单元和解码单元与WebGPU解码器的计算模块分离,包括以下步骤:
对码流解码模块进行分析,将帧数据单元、NAL单元、解码单元分配到解码部分,并将计算单元分配到计算部分;
将码流解码模块的解码部分和计算部分进行拆分,并在解码部分和计算部分之间定义合适的接口和数据结构;其中,接口定义包括:输入输出参数、函数调用和返回值,数据结构包括:帧数据的格式、帧数据的存储方式和帧数据相关的元数据信息;
将H.265码流解码模块的解码部分分离出WebGPU解码器中的计算模块,H.265码流解码模块的计算部分保留在WebGPU解码器的计算模块中。
6.根据权利要求5所述的一种基于WebGPU提升Web播放器硬件解码能力的方法,其特征在于,所述码流解码模块的计算单元在对输入的H.265码流进行解析的同时,将已解析并提取后的帧数据通过异步通信机制传输到WebGPU解码器的计算模块中的计算单元进行处理。
7.根据权利要求6所述的一种基于WebGPU提升Web播放器硬件解码能力的方法,其特征在于,所述码流解码模块将已解析并提取后的帧数据通过异步通信机制传输到WebGPU解码器的计算模块中的计算单元进行处理,包括以下步骤:
将已解析并提取后的帧数据,根据WebGPU解码器计算模块的输入要求进行格式转换,将格式转换后的数据进行分割,并将分割后的数据打包成多个数据包存储在缓冲区对象中;
所述码流解码模块通过异步通信机制,将打包完成的多个数据包传输到WebGPU解码器的计算模块中的计算单元;
WebGPU解码器的计算模块中的计算单元对接收到的数据进行解包操作,还原成原始的帧数据。
8.根据权利要求1所述的一种基于WebGPU提升Web播放器硬件解码能力的方法,其特征在于,所述WebGPU解码器通过数据传输单元从CPU获取H.265码流数据。
9.根据权利要求8所述的一种基于WebGPU提升Web播放器硬件解码能力的方法,其特征在于,所述WebGPU解码器通过数据传输单元从CPU获取H.265码流数据,包括以下步骤:
在GPU端创建一个纹理对象,用于存储需要传输的H.265码流数据,并确保所述纹理对象与CPU端需要传输的H.265码流数据格式和大小匹配;
通过WebGPU AP I将CPU端的数据绑定到GPU端的纹理对象上;
通过纹理采样Sampli ng AP I在GPU端对纹理对象进行采样操作,获取所需数据。
10.根据权利要求1所述的一种基于WebGPU提升Web播放器硬件解码能力的方法,其特征在于,所述步骤S3中,动态调整计算任务和解码任务的分配方式,包括以下步骤:
通过WebGPU AP I获取GPU的计算任务、解码任务、使用率和渲染队列中的绘制命令数量,实时监测GPU的负载情况;
若GPU的负载利用率大于60%,通过限制解码任务的实时渲染帧率为预设渲染帧率的70%,否则,按照预设的渲染帧率进行渲染;
若GPU的负载利用率大于80%,通过WebWorker技术,将WebGPU解码器的计算模块中的计算密集型的计算任务转移至后台线程中执行,否则,继续在WebGPU解码器的计算模块中执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311106703.8A CN117130749A (zh) | 2023-08-30 | 2023-08-30 | 一种基于WebGPU提升Web播放器硬件解码能力的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311106703.8A CN117130749A (zh) | 2023-08-30 | 2023-08-30 | 一种基于WebGPU提升Web播放器硬件解码能力的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117130749A true CN117130749A (zh) | 2023-11-28 |
Family
ID=88861018
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311106703.8A Pending CN117130749A (zh) | 2023-08-30 | 2023-08-30 | 一种基于WebGPU提升Web播放器硬件解码能力的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117130749A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117854518A (zh) * | 2024-03-05 | 2024-04-09 | 深圳市时代经纬科技有限公司 | 一种WebGPU实现语音编解码及转码的方法和装置 |
-
2023
- 2023-08-30 CN CN202311106703.8A patent/CN117130749A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117854518A (zh) * | 2024-03-05 | 2024-04-09 | 深圳市时代经纬科技有限公司 | 一种WebGPU实现语音编解码及转码的方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110381322B (zh) | 视频流解码方法、装置、终端设备及存储介质 | |
CN111399964A (zh) | 一种基于视频串流技术的云桌面平台 | |
CN107404654B (zh) | 一种jpeg图像解压缩方法、装置及平台 | |
CN112533059B (zh) | 图像渲染方法、装置、电子设备以及存储介质 | |
CN107613302B (zh) | 解码方法及装置、存储介质、处理器 | |
CN117130749A (zh) | 一种基于WebGPU提升Web播放器硬件解码能力的方法 | |
US12003732B2 (en) | Scene aware video content encoding | |
CN109274973A (zh) | 嵌入式arm平台上的快速视频解码方法 | |
CN112473133A (zh) | 一种云游戏响应的方法、系统、设备及可读存储介质 | |
CN111399976A (zh) | 基于api重定向技术的gpu虚拟化实现系统及方法 | |
WO2024169391A1 (zh) | 一种视频数据处理方法、装置、计算机设备以及存储介质 | |
CN111294600A (zh) | 一种视频序列帧的压缩方法、解压方法及装置 | |
WO2024098821A1 (zh) | Av1的滤波方法及装置 | |
CN105323593A (zh) | 一种多媒体转码调度方法和装置 | |
CN110868610B (zh) | 流媒体传输方法、装置、服务器及存储介质 | |
WO2024078066A1 (zh) | 视频解码方法、视频编码方法、装置、存储介质及设备 | |
CN112543374A (zh) | 一种转码控制方法、装置及电子设备 | |
WO2013174337A2 (zh) | 字幕提取方法及装置 | |
CN111200740A (zh) | 编码方法及编码器 | |
CN116366865A (zh) | 一种视频解码方法、装置、电子设备及介质 | |
CN112445624B (zh) | 一种面向任务的gpu资源优化配置方法及装置 | |
CN110401835B (zh) | 图像处理方法及装置 | |
CN113660496A (zh) | 基于多核并行的视频流解码方法及装置 | |
TWI669947B (zh) | 圖片轉碼方法、計算設備及儲存介質 | |
CN114584786B (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 |