一种视频显示方法及系统与流程
- 国知局
- 2024-12-06 12:24:28
本发明涉及数字视频信号处理,特别涉及一种视频显示方法及系统。
背景技术:
1、当前在qt平台解码视频输出的具体步骤为:在qt平台中创建qimage显示空间,以申请显示空间;创建解码上下文,初始化mpp(媒体处理软件平台);获取视频的一帧图像数据;将该帧图像数据送入mpp解码,以获取解码数据;拷贝解码数据后转换为rgb数据;将rgb数据拷贝至qimage显示空间,通过qt方式进行视频显示。
2、由此可见,在qt平台,虽然使用的是硬件解码,但是解码后的数据存在于dma-buf空间,格式为nv12,利用qimage并不能直接显示,需要进行拷贝、格式转换、拷贝等步骤,才得以通过qimage显示,这就导致了在qt平台中视频解码输出时cpu占用率很高;且随着视频的分辨率越高,每一帧的图像数据越大,需要拷贝转换的数据就越多,cpu的占用率也越高,视频显示的效率更低。
技术实现思路
1、针对现有技术的不足,本发明的目的在于提供一种视频显示方法及系统,旨在解决现有技术中在qt平台中进行视频解码显示,其需进行多次数据拷贝,导致cpu占用率过高,影响视频解码显示的效率的技术问题。
2、为了实现上述目的,第一方面,本申请实施例提供了一种视频显示方法,应用于qt平台,所述视频显示方法包括以下步骤:
3、获取视频流的索引地址及编码方式;
4、基于所述编码方式对解码器进行初始化,以获取包括缓冲区的待用解码器,基于所述索引地址自所述视频流中获取若干个单帧图像,通过所述待用解码器对所述单帧图像进行解码后,生成存储于所述缓冲区内的解码图像,并生成与所述解码图像对应的位置描述符;
5、通过所述位置描述符获取所述解码图像的图层参数;
6、于所述qt平台上创建egl显示设备,通过所述图层参数于所述egl显示设备中创建与所述单帧图像对应的初始镜像图像;
7、通过扩展纹理采样器及所述位置描述符获取与所述解码图像对应的图像数据,设置顶点着色器及片元着色器,基于所述图像数据、所述顶点着色器及所述片元着色器获取与所述解码图像对应的渲染数据;
8、通过所述渲染数据渲染所述初始镜像图像,以获取最终镜像图像,将若干个所述最终镜像图像组合为播放视频,并通过所述egl显示设备显示所述播放视频。
9、与现有技术相比,本发明的有益效果在于:通过将所述解码图像存储于所述缓冲区内,并生成所述位置描述符,以所述位置描述符为索引获取所述图层参数,通过设置所述egl显示设备,基于其特性生成所述初始镜像图像,规避了在格式转换前的第一次拷贝工作,通过所述扩展纹理采样器获取所述图像数据,并通过所述顶点着色器及所述片元着色器配合生成所述渲染数据,以所述渲染数据直接渲染所述初始镜像图像,规避了在格式转换后到显示的过程中的第二次拷贝工作,即通过所述位置描述符及所述初始镜像图像的配合,实现了零拷贝、无格式转换的低cpu占用率的视频显示,大大降低了在qt平台中进行视频解码显示时的cpu占用率,达到了高效率、耗时少的视频显示效果。
10、进一步,所述获取视频流的索引地址及编码方式的步骤包括:
11、链接至网络媒体流的地址,判断所述网络媒体流内是否存在视频流;
12、若所述网络媒体流内存在视频流,则获取所述视频流的索引地址及编码方式。
13、更进一步,所述基于所述编码方式对解码器进行初始化,以获取包括缓冲区的待用解码器的步骤具体为:
14、通过所述编码方式确定所述解码器的解码格式及解码模式,并生成与解码数据对应的缓冲区,以形成待用解码器。
15、更进一步,所述图层参数包括第一子图层参数及第二子图层参数,所述第一子图层参数包括第一宽度、第一高度、第一水平跨越、第一垂直跨越及第一偏移地址,所述第二子图层参数包括第二宽度、第二高度、第二水平跨越、第二垂直跨越及第二偏移地址。
16、更进一步,所述于所述qt平台上创建egl显示设备的步骤包括:
17、获取所述qt平台于x图像界面平台的原生接口,并通过所述原生接口获取显示设备;
18、基于egl接口函数及所述显示设备获取egl显示设备。
19、更进一步,所述通过扩展纹理采样器及所述位置描述符获取与所述解码图像对应的图像数据的步骤包括:
20、设置扩展纹理采样器,所述扩展纹理采样器通过所述位置描述符索引至所述缓冲区内的所述解码图像;
21、对所述解码图像进行数据解析,以获取图像数据。
22、更进一步,所述基于所述图像数据、所述顶点着色器及所述片元着色器获取与所述解码图像对应的渲染数据的步骤包括:
23、将所述图像数据输入所述顶点着色器,以获取若干个顶点位置,对所述顶点位置进行几何变化,以将所述顶点位置自三维坐标系转换至二维坐标系;
24、于所述二维坐标系内对所述顶点位置进行装配处理,以获取若干个图元;
25、将所述图元映射为栅格化图像,并将所述栅格化图像输入至所述片元着色器内,于所述片元着色器内对所述栅格化图像进行像素颜色填充,以获取渲染数据。
26、第二方面,本申请实施例提供了一种视频显示系统,应用于如上述第一方面所述的视频显示方法,所述系统包括:
27、第一获取模块,用于获取视频流的索引地址及编码方式;
28、解析模块,用于基于所述编码方式对解码器进行初始化,以获取包括缓冲区的待用解码器,基于所述索引地址自所述视频流中获取若干个单帧图像,通过所述待用解码器对所述单帧图像进行解码后,生成存储于所述缓冲区内的解码图像,并生成与所述解码图像对应的位置描述符;
29、第二获取模块,用于通过所述位置描述符获取所述解码图像的图层参数;
30、生成模块,用于于所述qt平台上创建egl显示设备,通过所述图层参数于所述egl显示设备中创建与所述单帧图像对应的初始镜像图像;
31、采集模块,用于通过扩展纹理采样器及所述位置描述符获取与所述解码图像对应的图像数据,设置顶点着色器及片元着色器,基于所述图像数据、所述顶点着色器及所述片元着色器获取与所述解码图像对应的渲染数据;
32、执行模块,用于通过所述渲染数据渲染所述初始镜像图像,以获取最终镜像图像,将若干个所述最终镜像图像组合为播放视频,并通过所述egl显示设备显示所述播放视频。
33、第三方面,本申请实施例提供了一种计算机,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面所述的视频显示方法。
34、第四方面,本申请实施例提供了一种存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述第一方面所述的视频显示方法。
技术特征:1.一种视频显示方法,应用于qt平台,其特征在于,所述视频显示方法包括以下步骤:
2.根据权利要求1所述的视频显示方法,其特征在于,所述获取视频流的索引地址及编码方式的步骤包括:
3.根据权利要求1所述的视频显示方法,其特征在于,所述基于所述编码方式对解码器进行初始化,以获取包括缓冲区的待用解码器的步骤具体为:
4.根据权利要求1所述的视频显示方法,其特征在于,所述图层参数包括第一子图层参数及第二子图层参数,所述第一子图层参数包括第一宽度、第一高度、第一水平跨越、第一垂直跨越及第一偏移地址,所述第二子图层参数包括第二宽度、第二高度、第二水平跨越、第二垂直跨越及第二偏移地址。
5.根据权利要求1所述的视频显示方法,其特征在于,所述于所述qt平台上创建egl显示设备的步骤包括:
6.根据权利要求1所述的视频显示方法,其特征在于,所述通过扩展纹理采样器及所述位置描述符获取与所述解码图像对应的图像数据的步骤包括:
7.根据权利要求1所述的视频显示方法,其特征在于,所述基于所述图像数据、所述顶点着色器及所述片元着色器获取与所述解码图像对应的渲染数据的步骤包括:
8.一种视频显示系统,应用于如权利要求1~7任一项所述的视频显示方法,其特征在于,所述系统包括:
9.一种计算机,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7中任一项所述的视频显示方法。
10.一种存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至7中任一项所述的视频显示方法。
技术总结本发明提供一种视频显示方法及系统,方法包括:获取视频流的索引地址及编码方式;初始化解码器,以获取包括缓冲区的待用解码器,基于索引地址获取单帧图像,以通过待用解码器生成存储于缓冲区内的解码图像,并生成位置描述符;通过位置描述符获取解码图像的图层参数;于Qt平台上创建EGL显示设备,通过图层参数于EGL显示设备中创建初始镜像图像;通过扩展纹理采样器及位置描述符获取图像数据,基于图像数据、顶点着色器及片元着色器获取渲染数据;通过渲染数据渲染初始镜像图像,以获取最终镜像图像,并生成播放视频。本申请实现了零拷贝、无格式转换的低CPU占用率的视频显示,达到了高效率的视频显示效果。技术研发人员:魏钜熔,宋增涛,熊勰,张礼学,刘亚平,刘贤斌,肖亮,黄伟人,吴包琳受保护的技术使用者:江西联创精密机电有限公司技术研发日:技术公布日:2024/12/2本文地址:https://www.jishuxx.com/zhuanli/20241204/341207.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。