前言與動機
視頻的軟件編碼複雜度很高,在實時應用中,需要快速的低複雜度編碼,這時候就需要用硬件編碼器了。Nvidia推出了基於GPU 的硬件編碼器:NvCodec https://developer.nvidia.com/nvidia-video-codec-sdk,因爲編碼前的處理用到了GPU,可以直接在GPU上編碼,數據不需要從GPU拷貝到CPU,節省了很多計算。
踩坑
- 根據Nvidia的文檔介紹,NvCodec只支持部分GPU,主要是近兩年出的GPU,包括GTX10系列,V系列,P系列,具體見https://developer.nvidia.com/video-encode-decode-gpu-support-matrix,需要注意的是,根據這個文檔的介紹,GTX1080是不支持NvCodec的Encoder的,經過測試,也確實跑不通samples。
- NvCodec給了例程,但是API文檔基本沒有(反正我沒找到),測試中發現,NvCodec支持h264和hevc兩種編碼器,但是h264似乎只支持4K及以下的分辨率(文檔中沒有看到說有分辨率限制),而hevc則支持最高8K的編碼。