视频编解码硬件方案漫谈

2022-06-14 08:59:27 浏览数 (1)

       视频编解码硬件方案最早是在嵌入式领域中广泛存在,如采用DSP,FPGA,ASIC等,用来弥补嵌入式系统CPU等资源能力不足问题,但随着视频分辨率越来越高(从CIF经历720P,1080P发展到4K,8K),编码算法越来越复杂(从mpeg2经历h264,发展到h265),PC的软件规模也越来越庞大,视频应用也越来也丰富,单独靠CPU来编解码已经显得勉为其难,一种集成在显卡中gpu用来参与编解码工作已经成为主流。

一) gpu存在的形式

gpu主要驻留在显卡上,配合显卡参与显示,绘图,编解码,并行计算等工作。常见形式有以下3类。

1) 独立显卡形式,如AMD和NVIDIA独立显卡。

                                                                      独立显卡

2)集成在CPU中的核显,如intel的某些带核显处理器和AMD某些带核显处理器

                                                                         带核显的处理器

3) 视频加速卡

专门用来在服务器端进行编解码使用,如Intel的 VCA卡等。

                                                          专用视频加速卡

二)gpu编解码的常用技术方案

1)厂家SDK方案

对应gpu编解码,硬件厂家都有相应SDK方案,应用开发者可以直接调用厂家的SDK 来完成编解码器工作。

NVIDIA

AMD

INTEL

编码器

NVENC

UVD

参考sample_encode

解码器

NVDEC

VCE

参考sample_decode

对应的SDK

Video_Codec_SDK

AMF SDK

Intel Media SDK

                                                                硬件编解码SDK方案

2)FFMPEG方案

ffmpeg对厂家SDK进行封装和集成,实现部分的硬件编解码

NVIDIA

AMD

INTEL

编码器

xxx_nvenc

xxx_amf

xxxx_qsv

解码器

xxx_ cuvid

暂未实现

xxxx_qsv

                                                                   ffmpeg硬解编解码应用

其中xxx标识编码类型,如h264,h265,mpeg2,vp8,vp9等。其次在ffmpeg中软件编解码器可以实现相关硬解加速。如在h264解码器中可以使用cuda 加速,qsv加速,dxva2 加速,d3d11va加速,opencl加速等。

cuda

qsv

dxva2/d3d11va

opencl

应用场景

适应NVIDIA显卡平台,但跨OS

适应Intel显卡平台,但跨OS

适用Windows OS,但跨硬件平台

仅仅支持opencl的硬件平台

                                                                   ffmpeg硬解加速应用

3)gstreamer方案

gst-msdk

gst-vaapi

gst-d3d11

编码器

msdkxxxenc

vaapixxxenc

解码器

msdkxxxdec

vaapixxxdec

d3d11xxxdec

应用场景

仅限intel gpu

仅限intel gpu的linux系统

仅限Windows D3D加速,跨硬件平台

                               Gstreamer硬件加速编解码方案

其中xxx标识编码类型,如h264,h265,mpeg2,vp8,vp9等。

在Linux关于gst-msdk和gst-vaapi的差异如下:

以上是关于视频在PC上的硬解硬编的常见方案。

0 人点赞