hevc和hevc nvenc有什么区别
hevc值是格式名称
nvenc是编码器名称,nvenc调用显卡(n卡)来进行压缩,支持H.264(AVC),H.265(hevc),速度快,但压缩率表现很差,在时间和cpu性能允许的情况下,建议使用x264、x265
nvenc和cuda有什么不同
简单来说,NVENC就是CUDA编码的下一代升级版,速度更快,功耗更低,虽然还是比不上Intel核显的QSV。具体来讲,CUDA编码器是由GPU的通用计算执行部分H.264算法来实现加速;从开普勒显卡开始新增的NVENC则主要由专门为H.264 算法定制的硬件单元来执行编码。
对比感受就是,NVENC很快,画质与耗电一般;CUDA虽然快但是个电老虎,画质也不行;QSV又快又好还省电;AMD的显卡加速也就比低端CPU快一些,画质也一般
NVENC编码
将NVENC lib中的接口导出,供后续编码流程使用。
编码会话需要传入D3D设备,在此之前需要创建好D3D设备。接口输出的 void* m_encoder; 将会用于后续编码接口的***个参数中。
可以使用 nvEncInitializeEncoder 传入 NV_ENC_INITIALIZE_PARAMS 类型的实例,对编码器进行初始化。其中 encodeGUID 、 encodeWidth 、 encodeHeight 三项是必填选项, encodeGUID 表示使用H264编码( NV_ENC_CODEC_H264_GUID )还是H265( NV_ENC_CODEC_HEVC_GUID )编码。另外,还可以在此设置使用同步编码还是异步编码模式。
nvEncGetEncodePresetConfig 可以获取预置参数 NV_ENC_PRESET_ConFIG 。可以设置码率控制模式、平均码率等数据。
将输入的纹理指针注册成输入资源,即 m_registerResource.resourceToRegister = m_inputTexture;
将注册的输入资源映射到编码器。 m_inputMapResource.registeredResource = m_registerResource.registeredResource;
创建接收编码出的比特流缓冲。
在编码前需要更新输入纹理数据,即前面已经注册的纹理指针 m_inputTexture ,更新后,填充 NV_ENC_PIC_PARAMS 结构,将 NV_ENC_PIC_PARAMS.inputBuffer 赋值为前面映射的资源,即 m_inputMapResource.mappedResource ,再将 NV_ENC_PIC_PARAMS.outputBitstream 赋值为前面创建的输出比特流缓冲,即 m_outputBuffer.bitstreamBuffer ,然后调用 nvEncEncodePicture 对数据进行编码。
使用 nvEncLockBitstream 将数据从编码器中取出,即GPU到CPU。
关于nvenc和nvenc h265的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。