NVIDIA的Video Codec SDK提供API对视频进行加速编解码。最新发布版本为12.0,支持Windows和Linux平台。可从 https://developer.nvidia.com/video-codec-sdk-archive 下载。用于视频解码(NVDEC)和编码(NVENC)的GPU硬件加速器引擎比实时视频处理速度更快,非常适合用于转码应用以及视频播放应用。
Video Codec SDK包含两个硬件加速接口:
1.用于视频编码加速的NVENCODE API:可提供基于硬件的全加速视频编码,且独立于图形性能
(1).在不使用CPU的情况下以高质量和超低延迟对游戏和应用进行编码和串流;
(2).针对存档、OTT 串流、网络视频进行高质量编码;
(3).以超低功耗对每个流进行编码(瓦特/流)。
2.用于视频解码加速的NVDECODE API:可为几种热门的编解码器提供基于硬件的全加速视频解码,比实时解码速度更快,支持的视频格式包括:MPEG-2、VC-1、H.264 (AVCHD)、 H.265(HEVC)、VP8、VP9和AV1。
这里基于12.0版本在Windows 10上对Samples进行编译,对系统要求:
(1).显卡驱动版本需要522.25及以上;
(2).CUDA要求11.0及以上,这里使用11.6;
(3).DirectX SDK:本机已安装Windows SDK 10.0;
(4).Vulkan SDK:构建和运行AppMotionEstimationVkCuda需要,从https://vulkan.lunarg.com/sdk/home 下载安装,双击VulkanSDK/1.3.250.1/Bin目录下的vkcube.exe验证是否能正确运行;
设置环境变量:若VULKAN_SDK没有设置,则设置为其安装路径:C:\VulkanSDK\1.3.250.1
(5).Agility SDK:下载最新稳定版本1.610.4即microsoft.direct3d.d3d12.1.610.4.nupkg:打开Windows PowerShell,依次执行如下命令:下载并将其提取到D:\ProgramFiles\d3d目录下
Invoke-WebRequest -Uri https://www.nuget.org/api/v2/package/Microsoft.Direct3D.D3D12/1.610.4 -OutFile agility.zip
Expand-Archive agility.zip -DestinationPath ../ProgramFiles/d3d
执行结果如下图所示:
编译Samples:
1.在Video_Codec_SDK_12.0.16/Samples目录下创建build目录;
2.在build目录下打开cmd,执行以下命令:VS2019
cmake -G"Visual Studio 16 2019" -A"x64" -DCMAKE_BUILD_TYPE=Release -DAGILITY_SDK_BIN=D:\ProgramFiles\d3d\build\native\bin\x64 -DAGILITY_SDK_VER=610 -DCMAKE_INSTALL_PREFIX=. ..
执行结果如下图所示:
cmake --build . --target install --config Release
执行结果如下图所示: