标题:Qt编写安防视频监控系统26-硬件加速
作者:liudianwu
日期:2020-01-09 09:06
内容:
## 一、前言
硬件加速这个功能在一年多以前就已经具备,当时对两个内核一个是ffmpeg内核、一个是vlc内核都做了对应的接口函数,只是当时为了简单没有在系统设置中做出接口,vlc做硬件加速不用自己写代码实现,毕竟vlc是在ffmpeg基础上又增加了一层壳,硬件加速那块的功能都vlc自己内部实现了,只需要设置参数传进去即可,而ffmpeg需要自己根据对应的函数来实现解码,这个网上搜索能找到很多类似的答案的,推荐看雷神的博客,讲得非常详细,在国内ffmpeg的分析文章博客这块,神一般的存在。ffmpeg自带demo中有硬件加速的代码,根据他的代码直接抄过来就可以,ffmpeg支持qsv、vaapi、vdpau、dxva2、d3d11va几种,vlc支持auto、any、vdpau、dxva2、d3d11va这几种,推荐在windows上使用d3d11va。
对应硬件加速还有个叫硬件解码,一般都是专门的音视频硬件来处理,比如海思的芯片,这个在安防视频监控领域很常见,毕竟通过GPU也好硬件加速也好,要并发处理大量的视频流信息,大量占用系统资源不大好,还是直接专门的解码芯片处理更方便,速度也更快,而且丝毫不影响系统正常运行,这种专有的视频解码芯片都会提供对应的头文件给你调用,你只需要按照手册进行编写即可,这种不具有通用性,依赖具体的硬件芯片。
其实硬件加速也需要硬件支持,比如没有GPU的芯片,那就肯定没法搞硬件加速,一般现在的X86的芯片都会有GPU的,要支撑各种大型游戏的正常运行肯定要不错的GPU运算能力才行,所以后面才会出现独立显卡,专门用来显示加速,一套系统稳定性第一位,流畅性可能就是其次了,如果在使用软件系统的过程中一卡一卡的,相信没有几个用户心理舒服。
电脑硬件加速即是利用硬件模块来代替软件算法以补充利用硬件所固有的快速特性。简单的说就是利用显卡的GPU来代替CPU处理,显卡的GPU在处理速度上圆圆高于CPU,因此有很多人启用硬件加速来加速显卡的流畅度。由于中央处理器的结构使得它能够在短时间内完成各种各样不同的指令。它能够处理什么指令主要由软件限制。但是由于中央处理器的结构有些重复任务无法非常有效和迅速地被处理。通过使用专门为这样的重复任务设计的特殊硬件元件(芯片或者处理器,通常是用GPU完成)可以解决这个问题。这些特殊硬件元件不必像中央处理器那样灵活,因此它们的硬件设计就已经顾及了优化处理这些特殊问题的需要,这样一来中央处理器有时间去处理其它任务。
视频控件开源地址:[https://gitee.com/feiyangqingyun/QWid ..
#1 [305750665 01-09 09:18]
听刘老师讲课
#2 [yyzq 01-09 09:51]
精彩
#3 [gospite 01-19 10:21]
#4 [lukai_q_t 02-20 16:43]
ffmpeg启用硬件加速,可以使得,H264硬件解码位YUV吗???