1、写在前面
前面我们已经了解关于视频硬解码的一些技术。
其中提到的 nvcuvid
则是 Nvidia GPU 硬解码的核心,并且是由官方提供支持,因此可以放心使用。
2、正文开始
NVDECODE API 支持的编解码器有:
MPEG-1
MPEG-2
MPEG4
VC-1
H.264 (AVCHD) (8 位)
H.265 (HEVC)(8 位、10 位和 12 位)
VP8
VP9(8位、10位和12位)
AV1 Main profile
Hybrid (CUDA + CPU) JPEG
解码器管道由三个主要组件组成:解复用器、视频解析器和视频解码器,这些组件不相互依赖,因此可以独立使用。
NVDECODE API
为 NVIDIA 视频解析器和 NVIDIA 视频解码器提供 API。
其中,NVIDIA 视频解析器纯粹是一个软件组件,如果需要,用户可以插入任何解析器来代替 NVIDIA 视频解析器(例如 FFmpeg 解析器)。
NVDECODE 视频解码器管道如下图所示:
在高层次上,应遵循以下步骤来解码任何视频内容,使用 NVDECODEAPI
:
- 1、创建一个 CUDA 上下文。
- 2、查询硬件解码器的解码能力。
- 3、创建解码器实例。
- 4、解复用内容(如 .mp4),这可以使用 FFMPEG 等第三方软件来完成。
- 5、使用
NVDECODE API
提供的解析器或第三方解析器解析视频码流,比如 FFmpeg。
- 6、使用
VDECODE API
开始解码。
- 7、获取解码后的 YUV 进行进一步处理。
- 8、查询解码帧的状态。
- 9、根据解码状态,使用解码后的输出进行进一步处理,例如渲染、推理、后处理等
- 10、如果应用程序需要显示输出
- 将解码的 YUV 表面转换为 RGBA。
- 将 RGBA 表面映射到 DirectX 或 OpenGL 纹理。
- 在屏幕上绘制纹理。
- 11、解码过程完成后销毁解码器实例。
- 12、销毁 CUDA 上下文。
3、结语
最后,我们的 SkeyeARS
实际上支持可配置视频 软解码/硬解码
的。
在 SkeyeARS
运行目录下 config/config.ini
中。
其中:EasyPlayerProDecodeType
为直播解码选项,EasyPlayerDecodeType
则为录播解码选项。
配置为 0
选择软解码,配置为 1
选择硬解码。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.e1idc.net