Open SuperMan-Lfj opened 1 year ago
最重要的参考:ffmpeg/doc/examples/hw_decode.c
ffmpeg对显卡厂家SDK进行封装和集成,实现部分的硬件编解码
其中xxx标识编码类型,如h264,h265,mpeg2,vp8,vp9等。其次在ffmpeg中软件编解码器可以实现相关硬解加速。如在h264解码器中可以使用cuda 加速,qsv加速,dxva2 加速,d3d11va加速,opencl加速等。
////////////////////////////////////////////////// /// 硬件加速部分 auto hw_type = AV_HWDEVICE_TYPE_DXVA2; //这里可以换成你想要的格式 // 打印所有支持的硬件加速方式 for (int i = 0;; i++) { auto config = avcodec_get_hw_config(codec, i); if (!config) break; if (config->device_type) cout << av_hwdevice_get_type_name(config->device_type) << endl; } // 初始化硬件加速上下文 AVBufferRef* hw_ctx = nullptr; av_hwdevice_ctx_create(&hw_ctx, hw_type, nullptr, nullptr, 0); // 开启硬件加速 c->hw_device_ctx = av_buffer_ref(hw_ctx);
参考文章:
最重要的参考:ffmpeg/doc/examples/hw_decode.c
Windows 上硬解的几种方式
ffmpeg对显卡厂家SDK进行封装和集成,实现部分的硬件编解码
其中xxx标识编码类型,如h264,h265,mpeg2,vp8,vp9等。其次在ffmpeg中软件编解码器可以实现相关硬解加速。如在h264解码器中可以使用cuda 加速,qsv加速,dxva2 加速,d3d11va加速,opencl加速等。
核心代码
参考文章: