在FFmpeg 4.0中大幅增加了對HWAccels的支持,可以較輕松的利用QSV、NVENC、AMF實現(xiàn)Windows端的硬件編碼。本文以QSV為例梳理FFmpeg中的硬件編碼使用流程,詳見下圖。

FFmpeg硬件編碼流程.png
從上圖中我們可以看到,整體使用流程和利用libx264/libx265軟編碼相比,主要是增加了對AVHWDeviceContext和AVHWFramesContext的初始化相關(guān)操作。該部分在源碼hwcontext.h中有詳細的說明。

hwcontext.h解析.png
其中需要注意AVHWDevice和encoder要能對應(yīng)起來,否則初始化會失敗。