视频编解码器的硬件方案采用DSP、FPGA、ASIC等,从一开始就广泛存在于弥补嵌入式系统CPU等资源能力不足问题的嵌入式领域,但随着视频分辨率的提高(从CIF到720P、从1080P到4K 编码算法越来越复杂(视频APP应用也越来越丰富,只靠CPU进行编解码已经很难了,显卡内置的gpu参与编解码工作已成为主流。
一) gpu存在的形式
gpu主要驻留在显卡上,配合显卡参与显示、绘制、编解码、并行计算等工作。 常见的形式有以下三种。
1 )专用显卡格式,如AMD或NVIDIA专用显卡。
独立显卡
2 )内置于CPU的核显像,例如intel的一部分核显像处理装置和AMD的一部分核显像处理装置
带核显示的处理器
3 )视频加速卡
用于在服务器端进行编解码,如英特尔的VCA卡。
专用视频加速卡
2 ) gpu编解码常见技术方案
1 )制造商SDK方案
支持gpu编解码器,硬件制造商有SDK计划,APP应用程序开发者可以直接调用制造商的SDK进行编解码器工作。
美国国家航空航天局
AMD
英特尔
编码器
新冠航空
环球影城
参照sample_encode
解码器
NVDEC
VCE
参照sample_decode
对应的SDK
Video_Codec_SDK
AMF SDK
英特尔media SDK
硬件编解码器SDK方式
2 ) FFMPEG方案
ffmpeg封装集成制造商SDK,实现部分硬件编解码
美国国家航空航天局
AMD
英特尔
编码器
xxx_nvenc
xxx_amf
xxxx_qsv
解码器
xxx_ cuvid
还没有实现
xxxx_qsv
ffmpeg硬解码APP应用
其中,xxx表示h264、h265、mpeg2、vp8、vp9等代码类型。 其次,在ffmpeg中,软件编解码器可以实现相关的硬解码加速。 例如,可以在h264解码器中使用cuda加速、qsv加速、dxva2加速、d3d11va加速、opencl加速等.
cuda
qsv
dxva2/d3d11va
opencl
适用场景
支持NVIDIA显卡平台,但在操作系统之间
支持英特尔显卡平台,但在操作系统之间
支持Windows OS操作系统,跨硬件平台
仅支持opencl的硬件平台
ffmpeg硬分解加速APP应用
3 ) gstreamer方案
gst-msdk
gst-vaapi
gst-d3d11
编码器
msdkxxxenc
vaapixxxenc
无
解码器
msdkxxxdec
vaapixxxdec
d3d11xxxdec
适用场景
仅限英特尔GPU
仅限英特尔GPU的linux系统
仅限Windows D3D加速,跨硬件平台
Gstreamer硬件加速编解码方式
其中,xxx表示h264、h265、mpeg2、vp8、vp9等代码类型。
Linux上的gst-msdk和gst-vaapi的区别如下。
以上是关于在电脑上硬解码视频的一般方案。 获取源代码或有关详细信息,请关注微信公众号: AV_Chat