我将AVCodec用作视频流解码器,想知道是否可以通过FFMPEG将硬件加速与hwaccel一起使用?还是默认已经使用? 我已经列出了可用的编解码器,但是我不明白如何在我的代码中实现它们。
AVHWAccel* pHwaccel = NULL;
pHwaccel = av_hwaccel_next(NULL);
while(pHwaccel!=NULL)
{
TkCore::Logger::info("%s", pHwaccel->name);
pHwaccel = av_hwaccel_next(pHwaccel);
}
我获得了h264的h264_qsv,h264_vaapi,h264_vdpau。
我看到了命令:
AVHWAccel * ff_find_hwaccel (codecID enum codec_id, enum PixelFormat pix_fmt)
已经过时了。
预先感谢您的帮助。
答案 0 :(得分:0)
请参见libav-user上的this线程。基本上列出硬件加速编解码器后,您可以尝试使用avcodec_find_decoder_by_name查找适当的解码器(因为AVHWAccel结构具有名称字段),然后将其用于解码。但是,那么您需要先了解编解码器。如果您使用avformat_open_input
,则可以尝试从流信息中按编解码器ID查找匹配的硬件加速解码器,然后按名称打开硬件加速编解码器并使用它。
答案 1 :(得分:0)
我用“ avcodec_find_encoder”实现了对解码器的调用,但是我看不到如何将硬件加速应用于此解码帧……我已经看到pix_fmt能够分配素材加速度,例如,如果pix_fmt =这是完全和h264中的一样。唯一的问题是使用什么函数来应用此vdpau加速...