我有一个使用FFmpeg 3.2接收H264 RTP流的简单C ++应用程序。为了节省CPU,我正在使用编解码器h264_cuvid进行解码。我的FFmpeg 3.2是在启用硬件加速的情况下编译的。实际上,如果我执行以下命令:
ffmpeg -hwaccels
Run Code Online (Sandbox Code Playgroud)
我懂了
cuvid
Run Code Online (Sandbox Code Playgroud)
这意味着我的FFmpeg设置可以与NVIDIA卡“通话”。该功能avcodec_decode_video2提供给我的帧具有像素格式AV_PIX_FMT_CUDA。我需要使用将这些框架转换为新的框架AV_PIX_FMT_RGB。不幸的是,我可以用很好knwon功能不进行转换sws_getContext,并sws_scale因为像素格式AV_PIX_FMT_CUDA不被支持。如果我尝试使用swscale,则会收到错误消息:
“不支持cuda作为输入像素格式”
您知道如何将FFmpeg AVFrame从转换AV_PIX_FMT_CUDA为AV_PIX_FMT_RGB吗?(代码片段将不胜感激)