Webrtc支持FFMPEG硬解码之Intel

发布于:2025-08-30 ⋅ 阅读:(15) ⋅ 点赞:(0)

Intel QSV下载编译

git clone https://github.com/lu-zero/mfx_dispatch.git

1.使用CMake生产VS工程

编译生成libmfx.lib文件
头文件为mfx文件夹

libmfx
 
  ---include
      ---mfx
 
   ---lib
      ---libmfx.lib

Webrtc中ffmpeg的修改

因为Webrtc中的ffmpeg是使用gn进行编译的,所以这里先找到对应目录

https://chromium.googlesource.com/chromium/third_party/ffmpeg.git

1、添加库
在FFMPEG路径下添加新文件夹3rd,并把上面打包的libmfx拷贝进入

2.
修改FFMPEG配置
BUILD.gn

//在include_dirs里面,多少行不记得了,你自己找一下
"3rd/libmfx/include/mfx"

config.h---目录为chromium\config\Chromelwin\x64\config.h

#define CONFIG_LIBMFX 1
#define CONFIG_D3D11VA 1
#define CONFIG_HWACCELS 1
#define CONFIG_QSV 1
#define CONFIG_QSVDEC 1
#define CONFIG_QSVVPP 1

config_components.h---目录为chromiumlconfig\Chromelwin\x64\config_components.h

#define CONFIG_H264_QSV_DECODER 1
#define CONFIG_H264_D3D11VA_HWACCEL 1
#define CONFIG_H264_D3D11VA2_HWACCEL 1

bsf_list.c--目录为chromium\config\Chromelwin\x64\libavcodec\bsf_list.c添加

&ff_h264_mp4toannexb_bsf,

ffmpeg_generated.gni加入

if(is_win){
  ffmpeg_c_sources += [
    "libavcodec/qsv.c",
    "libavcodec/qsvdec.c",
    "libavcodec/dxva2.c",
    "libavcodec/dxva2_h264.c",
    "libavcodec/h264_mp4toannexb_bsf.c",
    "libavfilter/qsvvpp.c",
    "libavfilter/vf_vpp_qsv.c",
    "libavutil/hwcontext_qsv.c",
    "libavutil/hwcontext_dxva2.c",
    "libavutil/hwcontext_d3d11va.c",
  ]
}

webrtc重新生成工程,编译即可
如果遇到编译错误:修改#include<mfxvideo.h>为#include"3rd/libmfx/include/mfx/mfxvideo.h

注意:这里的3rd是自己上面自己创建的目录,根据你创建的来,这里只是给一个示范