开源了两个项目:英伟达显卡视频编解码、jetson视频编解码。都是基于官方SDK进行的封装,由于官方自带的demo晦涩难懂并且每块都是独立的,我对SDK进行二次封装并形成了一套较为完整的视频编解码流程,调用简单,有完整的测试程序,想学习SDK或者想直接使用的可以看过来。
1、NVIDIA视频编解码
项目基于英伟达 Video_Codec_SDK_11.0.10 API实现了视频硬解码、渲染、软/硬编码、保存为MP4。
- 解码:使用Video_Codec_SDK_11.0.10解码API对视频进行解码,支持H264、H265。
- 渲染:使用opencv对图像进行渲染,涉及到了基础的cuda开发(不过都是比较简单的,没有什么难度)。
- 编码:支持软硬编码切换,硬编码使用Video_Codec_SDK_11.0.10 API,软编码使用ffmpeg API,视频编码格式为H264,如需H265可自行修改(NvCodecRender::EncInit()/NvCodecRender.cpp)。基本nvidia的所有显卡都支持视频解码、但不是所有显卡都支持编码、所以这里实现了软硬编码切换功能。
- MP4:编码后的视频写入到MP4文件中,这里使用了老陈的libmov库,项目地址