Hwaccel与FFMPEG中的AVCodec吗?

时间:2019-04-10 13:21:26

标签: c ffmpeg h.264 avcodec

我将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) 已经过时了。 预先感谢您的帮助。

2 个答案:

答案 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加速...