CN107920253B - 一种基于gpu的视频处理方法 - Google Patents
一种基于gpu的视频处理方法 Download PDFInfo
- Publication number
- CN107920253B CN107920253B CN201711047172.4A CN201711047172A CN107920253B CN 107920253 B CN107920253 B CN 107920253B CN 201711047172 A CN201711047172 A CN 201711047172A CN 107920253 B CN107920253 B CN 107920253B
- Authority
- CN
- China
- Prior art keywords
- video
- data
- format
- frame
- video data
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/40—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video transcoding, i.e. partial or full decoding of a coded input stream followed by re-encoding of the decoded output stream
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
- H04N19/436—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/44—Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明公开了一种基于GPU的视频处理方法,涉及音视频处理技术领域。首先从视频数据源端接收视频数据并存储在缓存队列中,依次读取视频数据进行解封装处理;然后对解封装处理后格式为H.264的视频数据,按顺序读取一帧,并解码为YUV格式数据;将解码出来的YUV数据进行内存映射,并转化为NV12格式后,利用视频转码模块再次转换为YUV420p格式;并分别计算YUV420p格式视频数据的Y分量和UV分量的特征值;最后将两个特征值拷贝到CPU侧的系统内存中,并筛选关键帧。筛选出的关键帧利用基于opencl的CPU和GPU之间的内存拷贝技术拷贝到CPU侧的系统内存中,由存储专用线程将关键帧的YUV数存储到文件。本发明实现了视频处理的加速,提升了视频处理的效率,并有效降低了CPU的资源消耗。
Description
技术领域
本发明涉及音视频处理技术领域,具体为一种基于GPU的视频处理方法。
背景技术
近年来,随着视频编解码技术的快速发展,以H.264为代表的新一代视频编码标准渐渐成为了主流,该视频编码标准采用了最新的视频编码技术,获得了很好的效果,但是其压缩效率的提高是以压缩算法复杂度的提高为代价的。这使得单纯用软件来实现解码,难以达到实时、高效的效果,尤其是高清晰度视频,必须通过硬件电路加速解码才能实现视频的高速解码和实时播放。
随着高清视频的广泛应用,视频数据量的剧增对计算机中央处理器(CPU)造成了巨大的计算压力,仅通过提高CPU的时钟频率来解决这个问题效果已经不明显或不可能。因此充分利用计算机的图形处理器(GPU,Graphics ProcessingUnit)来加速视频处理过程,减轻CPU的计算负担已成为趋势。相对于CPU,GPU拥有更大的数据传输带宽,更多的计算单元,更强的浮点运算能力,非常适合用于那些具有高度并行特征的计算领域,而高清视频处理正好符合这一特点。
图形处理器GPU是专门用于图像运算工作的微处理器。随着GPU的不断推广,利用GPU和CPU协同处理复杂计算的方法也发展起来。利用GPU强大的并行运算能力,能够大幅度提高系统协作的计算性能,从而将CPU从不擅长的并行运算中解放出来,更好地完成系统的管理控制工作。
发明内容
本发明针对上述情况,采用一种基于GPU的视频处理方法,能够支持H.264格式视频的高效解码,以及视频数据的并行处理,提升了视频处理的效率,有效降低CPU占用率。
所述的基于GPU的视频处理方法,具体步骤如下:
步骤一、从视频数据源端接收视频数据并存储在缓存队列中;
步骤二、从缓存队列中依次读取视频数据,并使用视频预处理模块进行解封装处理;
视频预处理模块对视频进行解封装处理,并对非H.264格式的视频进行过滤处理。
步骤三、判断解封装处理后的视频格式是否为H.264,如果是,跳转步骤四;否则,视频处理流程结束。
步骤四、从解封装的视频数据中,按顺序读取一帧数据,并判断是否读取成功;如果成功,进入步骤五,否则,视频处理流程结束。
判断读取成功的过程如下:
读取到某帧视频数据,读取数据帧算法返回的值是1,则表明该帧视频数据读取成功,当读取不到视频数据或者读到视频数据的结尾时,读取数据帧算法返回的值是非1,则表明该帧视频数据读取失败。
步骤五、判断解码器是否进行了初始化,如果是,利用视频解码模块将读取成功的该帧视频数据解码为YUV格式数据;否则,初始化解码器后再将该帧视频数据解码为YUV格式数据;
步骤六、判断对该帧视频数据的解码是否成功,如果是,跳转步骤七;否则,跳转步骤四,继续读下一帧数据。
根据解码算法返回的解码结果参数来判断,若返回的参数值是1则解码成功,若返回的参数值是非1则解码失败。
步骤七、将解码出来的YUV数据进行内存映射,并将YUV数据从image形式转化为NV12格式;
内存映射具体是指:将解码出来的YUV数据存储在显卡的内存空间,将YUV数据地址映射到opencl的地址空间,以便对YUV数据的视频转码和视频特征计算。
步骤八、利用视频转码模块对NV12格式的视频数据进行格式转换,将NV12格式转换为YUV420p格式;
步骤九、针对YUV420p格式的视频数据的Y分量和UV分量,利用视频特征计算模块分别计算特征值;
步骤十、利用视频关键帧提取模块将Y分量的特征值和UV分量的特征值,拷贝到CPU侧的系统内存中,并进行关键帧的筛选。
步骤十一、判断筛选结果是否为关键帧,如果是,跳转步骤十二,否则,跳转步骤四,继续读下一帧数据;
判断是否为关键帧的过程如下:
根据关键帧筛选算法返回的筛选结果参数来判断,若返回的结果参数值是1,则表明该帧视频数据是关键帧,若返回的结果参数值是非1,则表明该帧视频数据是非关键帧。
步骤十二、利用基于opencl的CPU和GPU之间的内存拷贝技术,将关键帧的YUV数据拷贝到CPU侧的系统内存中。
步骤十三、将关键帧的YUV数据保存到缓存队列,由存储专用线程将关键帧的YUV数据存储到文件;跳转步骤四,继续读下一帧数据。
本发明的优点在于:
1)、一种基于GPU的视频处理方法,总体框架结构包括视频预处理模块、视频解码模块、视频转码模块、视频特征计算模块及视频关键帧提取模块,所有模块在CPU和GPU之间进行数据传输,都是利用基于opencl的CPU和GPU之间的内存拷贝技术来实现。
2)、一种基于GPU的视频处理方法,实现了视频处理的加速,提升了视频处理的效率,并有效降低了CPU的资源消耗。
附图说明
图1为本发明基于GPU的视频处理方法的总体框架结构示意图;
图2为本发明基于GPU的视频处理方法的流程图。
具体实施方式
下面结合附图和具体实施例对本发明的技术方案进行详细说明。
本发明基于GPU的视频处理方法,如图1所示,是基于由视频预处理模块、视频解码模块、视频转码模块、视频特征计算模块及视频关键帧提取模块构成的总体框架结构实现的。
所述的视频预处理模块负责对从视频数据源端接收的视频数据进行解封装处理,对非H.264格式的视频进行过滤处理;
视频解码模块是利用硬件加速解码,将H.264格式的视频数据解码为YUV格式数据;
视频转码模块是利用GPU的并行计算能力,将NV12格式的视频数据转换成YUV420p格式的视频数据;
视频特征计算模块是利用GPU的并行计算能力,在GPU中对YUV420p格式的视频数据利用视频特征提取算法进行特征值的计算;
视频关键帧提取模块是利用基于opencl的CPU和GPU之间的内存拷贝技术,从显卡内存将视频特征值拷贝到系统内存,利用视频关键帧提取算法筛选关键帧,然后从显卡内存将筛选出的关键帧的YUV420p格式的数据拷贝到系统内存。
如图2所示,为本发明利用基于GPU的视频处理方法进行视频处理的流程,具体步骤如下:
步骤一、从视频数据源端接收视频数据并存储在系统内存的缓存队列中;
步骤二、从缓存队列中依次读取视频数据,并使用视频预处理模块进行解封装处理;
视频预处理模块对视频进行解封装处理,并对非H.264格式的视频进行过滤处理。
步骤三、判断解封装处理后的视频格式是否为H.264,如果是,跳转步骤四;否则,视频处理流程结束。
步骤四、从解封装的视频数据中,按顺序读取一帧数据,并判断是否读取成功;如果成功,进入步骤五,否则,视频处理流程结束。
判断读取成功的过程如下:
读取到某帧视频数据,读取数据帧算法返回的值是1,则表明该帧视频数据读取成功,当读取不到视频数据或者读到视频数据的结尾时,读取数据帧算法返回的值是非1,则表明该帧视频数据读取失败。
步骤五、判断解码器是否进行了初始化,如果是,利用视频解码模块将读取成功的该帧视频数据解码为YUV格式数据;否则,初始化解码器后再将该帧视频数据解码为YUV格式数据;
步骤六、判断对该帧视频数据的解码是否成功,如果是,跳转步骤七;否则,跳转步骤四,继续读下一帧数据。
根据解码算法返回的解码结果参数来判断,若返回的参数值是1则解码成功,若返回的参数值是非1则解码失败。
步骤七、将解码出来的YUV数据进行内存映射,并将YUV数据从image形式转化为NV12格式;
内存映射具体是指:将解码出来的YUV数据存储在显卡的内存空间,将YUV数据地址映射到opencl的地址空间,以便对YUV数据的视频转码和视频特征计算。
步骤八、利用视频转码模块对视频数据进行格式转换,将NV12格式的视频数据转换为YUV420p格式的视频数据;
根据视频的宽度和高度,对视频转换进行并行处理。
步骤九、针对YUV420p格式的视频数据的Y分量和UV分量,利用视频特征计算模块分别计算特征值;
对YUV420p格式的视频数据的Y分量按照视频特征提取算法进行特征值的计算,按照16*16(受限于显卡的GPU的内核数256)的并发数,对特征值的计算进行并行处理。
对YUV420p格式的视频数据的UV分量按照视频特征提取算法进行特征值的计算,按照16*16(受限于显卡的GPU的内核数256)的并发数,对特征值的计算进行并行处理。
步骤十、利用视频关键帧提取模块将Y分量的特征值和UV分量的特征值,拷贝到CPU侧的系统内存中,并进行关键帧的筛选。
利用基于opencl的CPU和GPU之间的内存拷贝技术,将Y分量的特征值和UV分量的特征值拷贝到CPU侧的系统内存中;并利用视频关键帧提取算法进行关键帧的筛选。
步骤十一、判断筛选结果是否为关键帧,如果是,跳转步骤十二,否则,跳转步骤四,继续读下一帧数据;
判断是否为关键帧的过程如下:
根据关键帧筛选算法返回的筛选结果参数来判断,若返回的结果参数值是1,则表明该帧视频数据是关键帧,若返回的结果参数值是非1,则表明该帧视频数据是非关键帧。
步骤十二、利用基于opencl的CPU和GPU之间的内存拷贝技术,将关键帧的YUV数据拷贝到CPU侧的系统内存中。
步骤十三、将关键帧的YUV数据保存到缓存队列,由存储专用线程将关键帧的YUV数据存储到文件;跳转步骤四,继续读下一帧数据。
综上所述,本发明提供的一种基于GPU的视频处理方法,在对视频的处理过程中,将视频解码采用硬件电路加速解码和GPU的并行计算来实现相关功能,大大提升了视频解码的性能;将视频转码、视频特征计算等计算量很大的功能模块采用了GPU的并行计算框架,充分发挥GPU的并行计算能力,同时有效降低了CPU的资源消耗;把视频特征视频计算放到GPU执行,大大减少数据在CPU和GPU之间的内存拷贝;利用基于opencl的CPU和GPU之间的内存拷贝技术,大大提升了CPU和GPU之间的内存拷贝性能;总体实现了高效的视频处理。
Claims (2)
1.一种基于GPU的视频处理方法,其特征在于,具体步骤如下:
步骤一、从视频数据源端接收视频数据并存储在缓存队列中;
步骤二、从缓存队列中依次读取视频数据,并使用视频预处理模块进行解封装处理;
视频预处理模块对视频进行解封装处理,并对非H.264格式的视频进行过滤处理;
步骤三、判断解封装处理后的视频格式是否为H.264,如果是,跳转步骤四;否则,视频处理流程结束;
步骤四、从解封装的视频数据中,按顺序读取一帧数据,并判断是否读取成功;如果成功,进入步骤五,否则,视频处理流程结束;
读取成功的判断方法如下:
读取到某帧视频数据,读取数据帧算法返回的值是1,则表明该帧视频数据读取成功,当读取不到视频数据或者读到视频数据的结尾时,读取数据帧算法返回的值是非1,则表明该帧视频数据读取失败;
步骤五、判断解码器是否进行了初始化,如果是,利用视频解码模块将读取成功的该帧视频数据解码为YUV格式数据;否则,初始化解码器后再将该帧视频数据解码为YUV格式数据;
步骤六、判断对该帧视频数据的解码是否成功,如果是,跳转步骤七;否则,跳转步骤四,继续读下一帧数据;
根据解码算法返回的解码结果参数来判断,若返回的参数值是1则解码成功,若返回的参数值是非1则解码失败;
步骤七、将解码出来的YUV数据进行内存映射,并将YUV数据从image形式转化为NV12格式;
内存映射具体是指:将解码出来的YUV数据存储在显卡的内存空间,将YUV数据地址映射到opencl的地址空间,以便对YUV数据的视频转码和视频特征计算;
步骤八、利用视频转码模块对NV12格式的视频数据进行格式转换,将NV12格式转换为YUV420p格式;
步骤九、针对YUV420p格式的视频数据的Y分量和UV分量,利用视频特征计算模块分别计算特征值;
步骤十、利用视频关键帧提取模块将Y分量的特征值和UV分量的特征值,拷贝到CPU侧的系统内存中,并进行关键帧的筛选;
步骤十一、判断筛选结果是否为关键帧,如果是,跳转步骤十二,否则,跳转步骤四,继续读下一帧数据;
判断是否为关键帧的过程如下:
根据关键帧筛选算法返回的筛选结果参数来判断,若返回的结果参数值是1,则表明该帧视频数据是关键帧,若返回的结果参数值是非1,则表明该帧视频数据是非关键帧;
步骤十二、利用基于opencl的CPU和GPU之间的内存拷贝技术,将关键帧的YUV数据拷贝到CPU侧的系统内存中;
步骤十三、将关键帧的YUV数据保存到缓存队列,由存储专用线程将关键帧的YUV数据存储到文件;跳转步骤四,继续读下一帧数据。
2.实现如权利要求1所述的一种基于GPU的视频处理方法的总体框架,其特征在于,包括视频预处理模块、视频解码模块、视频转码模块、视频特征计算模块及视频关键帧提取模块;
视频预处理模块负责对从视频数据源端接收的视频数据进行解封装处理,对非H.264格式的视频进行过滤处理;
视频解码模块是利用硬件加速解码,将H.264格式的视频数据解码为YUV格式数据;
视频转码模块是利用GPU的并行计算能力,将NV12格式的视频数据转换成YUV420p格式的视频数据;
视频特征计算模块是利用GPU的并行计算能力,在GPU中对YUV420p格式的视频数据利用视频特征提取算法进行特征值的计算;
视频关键帧提取模块是利用基于opencl的CPU和GPU之间的内存拷贝技术,从显卡内存将视频特征值拷贝到系统内存,利用视频关键帧提取算法筛选关键帧,然后从显卡内存将筛选出的关键帧的YUV420p格式的数据拷贝到系统内存。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711047172.4A CN107920253B (zh) | 2017-10-31 | 2017-10-31 | 一种基于gpu的视频处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711047172.4A CN107920253B (zh) | 2017-10-31 | 2017-10-31 | 一种基于gpu的视频处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107920253A CN107920253A (zh) | 2018-04-17 |
CN107920253B true CN107920253B (zh) | 2020-08-18 |
Family
ID=61895971
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711047172.4A Active CN107920253B (zh) | 2017-10-31 | 2017-10-31 | 一种基于gpu的视频处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107920253B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110536123B (zh) * | 2019-09-05 | 2021-07-27 | 上海眼控科技股份有限公司 | 视频数据处理方法、装置、计算机设备和存储介质 |
CN113469215B (zh) * | 2021-05-28 | 2022-07-08 | 北京达佳互联信息技术有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN115695845A (zh) * | 2022-09-26 | 2023-02-03 | 太保科技有限公司 | 一种网络离线视频文件字节流的解码方法及装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105898315A (zh) * | 2015-12-07 | 2016-08-24 | 乐视云计算有限公司 | 视频转码方法和装置系统 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8432965B2 (en) * | 2010-05-25 | 2013-04-30 | Intellectual Ventures Fund 83 Llc | Efficient method for assembling key video snippets to form a video summary |
US9373152B2 (en) * | 2010-06-17 | 2016-06-21 | Thinci, Inc. | Processing of graphics data of a server system for transmission including multiple rendering passes |
US9519568B2 (en) * | 2012-12-31 | 2016-12-13 | Nvidia Corporation | System and method for debugging an executing general-purpose computing on graphics processing units (GPGPU) application |
CN103888771A (zh) * | 2013-12-30 | 2014-06-25 | 中山大学深圳研究院 | 基于gpgpu技术的并行视频图像处理方法 |
CN103841389B (zh) * | 2014-04-02 | 2015-10-21 | 北京奇艺世纪科技有限公司 | 一种视频播放方法及播放器 |
CN105163127B (zh) * | 2015-09-07 | 2018-06-05 | 浙江宇视科技有限公司 | 视频分析方法及装置 |
US20170221174A1 (en) * | 2016-01-29 | 2017-08-03 | Dzung Dinh Khac | Gpu data sniffing and 3d streaming system and method |
CN106131550B (zh) * | 2016-07-25 | 2020-02-14 | 合一网络技术(北京)有限公司 | 播放多媒体文件的方法及装置 |
-
2017
- 2017-10-31 CN CN201711047172.4A patent/CN107920253B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105898315A (zh) * | 2015-12-07 | 2016-08-24 | 乐视云计算有限公司 | 视频转码方法和装置系统 |
Also Published As
Publication number | Publication date |
---|---|
CN107920253A (zh) | 2018-04-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11551068B2 (en) | Processing system and method for binary weight convolutional neural network | |
US10582250B2 (en) | Integrated video codec and inference engine | |
CN107920253B (zh) | 一种基于gpu的视频处理方法 | |
CN107105266A (zh) | 一种png图像的解码方法、装置及系统 | |
US10254976B2 (en) | Methods and systems for using state vector data in a state machine engine | |
JP2005506777A (ja) | 改良された可変長デコーダ | |
CN103888771A (zh) | 基于gpgpu技术的并行视频图像处理方法 | |
CN107404654B (zh) | 一种jpeg图像解压缩方法、装置及平台 | |
CN110489428B (zh) | 多维稀疏矩阵压缩方法、解压缩方法、装置、设备及介质 | |
WO2022095797A1 (zh) | 图像的压缩方法、装置、智能终端及计算机可读存储介质 | |
WO2022206960A1 (zh) | 视频转码方法、系统及电子设备 | |
CN109451317A (zh) | 一种基于fpga的图像压缩系统及方法 | |
CN103914404A (zh) | 一种粗粒度可重构系统中的配置信息缓存装置及压缩方法 | |
CN101626504B (zh) | 一种高速jpeg解码的方法 | |
WO2023124428A1 (zh) | 芯片、加速卡以及电子设备、数据处理方法 | |
JP2008299610A (ja) | マルチプロセッサ | |
JP4865662B2 (ja) | エントロピー符号化装置、エントロピー符号化方法およびコンピュータプログラム | |
CN118250470A (zh) | 一种基于npu神经网络的yuv转rgb的图像渲染方法 | |
CN105163126A (zh) | 一种基于hevc协议的硬件解码方法和装置 | |
WO2024140568A1 (zh) | 图像处理方法、装置、电子设备及可读存储介质 | |
CN117130749A (zh) | 一种基于WebGPU提升Web播放器硬件解码能力的方法 | |
CN112637604A (zh) | 低时延视频压缩方法及装置 | |
WO2023159820A1 (zh) | 图像压缩方法、图像解压缩方法及装置 | |
CN113052748B (zh) | 图形处理器以及视频解码显示方法 | |
CN108932315A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |