Intel Media SDK

现在Intel不再发布单独的Intel Media SDK, 这个组件在 Linux 平台下集成在Intel Media Server Studio中,后文简称MMS

目前的MMS版本推荐的安装平台只有一个CentOSSUSE12在当前版本中也算是一个推荐平台)。其他平台的安装比较复杂,官方也不太推荐使用。后文的介绍是基于CentOS操作系统的。

如何安装 MMS

首先,你需要在Intel Developer Zone下载最新的MMS版本,其中的Community版本是免费的,MMS的安装主要分三个步骤。

在解压出来的的文件夹下面有一个SDK2015Production*目录,切换到这个目录下面之后,有一个CentOS目录。这个目录下面有一个intel_scripts_centos*压缩包,解压这个压缩包之后可以得到下面三个脚本:

-build_kernel_rpm_CentOS.sh
-install_sdk_UMD_CentOS.sh
-uninstall_sdk_UMD_CentOS.sh

安装需要用的是前面两个脚本。

1. 安卓用户空间驱动(user-mode driver – UMD)

下面的命令需要使用超级用户权限:

./install_sdk_UMD_CentOS.sh

mkdir /MSS

chown {普通用户名}:{普通组名} /MSS

2. 编译内核空间的驱动包

下面的命令使用普通用户权限执行:

cp build_kernel_rpm_CentOS.sh /MSS

cd /MSS

./build_kernel_rpm*.sh

3. 安装内核空间的驱动

下面的命令使用超级用户权限执行:

cd /MSS/rpmbuild/RPMS/x86_64

rpm -Uvh kernel-3.10.*.rpm

reboot

判断是否已经成功的编译内核模块驱动

重启系统之后执行如下命令:

lsmod | grep 'i915'

得到的类似如下的结果:

i915                837369 4
drm_kms_helper 44256 1 i915
drm 294746 3 i915,drm_kms_helper
i2c_algo_bit 13509 1 i915
intel_gtt 19747 1 i915
i2c_core 40683 5
i2c_i801,i915,drm_kms_helper,drm,i2c_algo_bit
video 19785 1 i915
button 13953 1 i915

如何在 FFMPEG 中编译 intel qsv 硬件编码器

FFMPEG中使用libmfx实现intel qsv的硬件编码器,如果想要编译它的硬件编码器,所以如果想要编译这个硬件编码器,你需要在加入如下的配置选项:

./configure --enable-libmfx \
--enable-encoder=h264_qsv \
--enable-decoder=h264_qsv \
...

libmfx can not found using pkg-config

libmfx.pc

编译中可能会报出下面的错误:libmfx can not found using pkg-config,这个错误可能是不同的原因导致,你需要查看 ffmpeg 根目录下的config.log文件。

如果这个文件中报错说 pkg-config 无法找到 libmfx 这个库,那是因为MMS的默认安装没有提供libmfx.pc文件,你需要在自己创建这个文件:

sudo mkdir -p /opt/intel/mediasdk/pkgconfig

vim /opt/intel/mediasdk/lib64/pkgconfig/libmfx.pc

在文件中写入如下内容:

prefix=/opt/intel/mediasdk
exec_prefix=${prefix}
libdir=${exec_prefix}/lib64
includedir=${exec_prefix}/include

Name: libmfxhw64

Description: Intel Media SDK dispatcher.
Version: 2015r6
Libs: -L${libdir} -lmfxhw64
Cflags: -I${includedir}

注意这个地方引用的是libmfxhw64库,因为测试的是 64 位平台。

当然你可以可以选择在/usr/lib64/pkgconfig/下面创建libmfx.pc文件。

mfx/mfxvideo.h

同样是libmfx can not found using pkg-config这个命令,也可能是头文件的错误,在config.log中会报错说无法找到mfx/mfxvideo.h这个文件。

在安装完MMS之后,在/opt/intel/mediasdk/include/目录下面会有mfxvideo.h这个文件,但是在FFMPEG中,引用的是mfx/mfxvideo.h这个头文件,因此报错,解决的方式是,在/opt/intel/mediasdk/include这个目录下面新建目录mfx,然后吧include的头文件拷贝一份到mfx目录下。

通过上面这种方式可以修正mfx/mfxvideo.h无法找到的错误。

链接 FFMPEG 时的错误

在链接ffmpeg的时候还是有可能会出现MFXxxxundefinded reference 的错误,这时候你需要让你的程序链接到lmfxhw64这个库。最简单的方式是,在/usr/lib64/中建立一个libmfxhw64的软连接

ln -s /opt/intel/mediasdk/lib64/libmfxhw64.so /usr/lib64/libmfxhw64.so

然后在编译自己的程序的时候加入-lmfxhw64选项。

在 FFMPEG 中使用 qsv 编码器

qsv的编码器在FFMPEG中有h264h265两种,你可以通过下面的代码找到这个编码器。

av_find_encoder_by_name("h264_qsv");

此外,通过qsvenc_h264.c这个源文件,我们可以看到它支持QSVNV12两种格式,但是QSV这个格式好像无法正常的使用,你需要把编码的pfx_fmt设置成NV12

更多相关文章

  1. 安装文件check_mk linux agent安装
  2. Linux源码包里有个scripts文件夹,里面放的东西起什么作用?
  3. linux中使用nfs共享文件
  4. Linux下文件同步、备份神器之-------rsync
  5. Linux利用i节点删除乱码文件
  6. debain 系统 ll 命令无法使用.目录和文件没有颜色区分解决之道
  7. 通过排除其父文件夹为多个目录创建单个tar文件
  8. 解决useradd 用户后没有添加用户Home目录的情况,Linux改变文件或
  9. 如何使用与相同文件运行的命令更新文件?

随机推荐

  1. Android 窗帘(Curtain Menu)效果五之应用
  2. Google Android 应用程序结构
  3. 3Q大战现高潮,360 推出Android(安卓)"3Q"
  4. Android SDK Manager无法更新的解决
  5. Android事件分发机制详解
  6. vlc android 代码编译
  7. 配置eclipse的android开发环境
  8. Android error:No CPU/ABI system image
  9. 用两张图告诉你,为什么你的 App 会卡顿?关
  10. Android驱动例子(LED灯控制)