linux ffmpeg 添加 Intel media sdk 编码器(1)

来源:互联网 发布:知微数据 陈庆 编辑:程序博客网 时间:2024/05/18 14:43

一 安装intel media sdk

    intel media sdk 必须运行在真机环境中,因为安装时,对显卡进行判断,通过 lspci -nn | grep VGA | grep Intel 命令

得到00:02.0 VGA compatible controller [0300]: Intel Corporation Xeon E3-1200 v3 Processor Integrated Graphics Controller [8086:041a] (rev 06)

如果为虚拟机,显卡是虚拟的,得不到要求的显卡信息。驱动安装不上。那么最终添加了h264-qsv 编码器的ffmpeg不能运行。

    如果是在真机环境下安装时,如果硬件软件匹配intel media sdk文档的要求,那么进行如下安装。当安装完内核后,需要重启电脑,选择3.2.0 的内核加载,如果没有内核选择菜单,则编辑 /etc/default/grub找到 timeout 数字改为10,保存,
执行 sudo update-grub ,重启电脑,就可以出现内核启动菜单。

二 编译 ffmpeg

    运行intel media sdk 只能在真机环境中,但是虚拟机环境ubuntu可以编译ffmpeg,这时候sdk安装不成功,需要手动将MediaServerStudioProfessionalEvaluation2015包中的MediaServerStudioRuntimeUbuntuEvaluation2015.deb包中的MSDK目录下的压缩包解压到/opt/intel/mediasdk 目录下。得到编译 ffmpeg 所必需的media sdk的头文件和库文件

    想添加一个支持intel media sdk 的编码器,需要参考libx264一样,写一个能被加入到ffmpeg的编码器,我把它称为h264_qsv。下载一个2.2版本的ffmpeg,对其中的configure 文件要进行修改。参考http://www.cnblogs.com/techsunny/,configure 的命令为

configure --enable-qsv --extra-ldflags=-L/opt/intel/mediasdk/bin/x64 --extra-cflags=-I/opt/intel/mediasdk/include --prefix=/opt/intel/mediasdk

sudo make$$ make install

    最终可以生成ffmpeg 。因为ffmpeg 寻找动态库时是在几个固定的的目录下寻找的,那么把libmfxhw64.so.0 复制到/usr/lib/x86_64-linux-gnu目录下即可。最后在/opt/intel/mediasdk/bin目录下执行sudo ffmpeg -i in.mp4 -an -vcodec h264_qsv -b 2000k -f mp4 -y out.mp4 即可。 必须是sudo ,不然驱动不能被打开。如果是在虚拟机上编译生成的ffmpeg 不可以在虚拟机运行,因为驱动没安装,要移动到安装了 intel media sdk的环境下运行。结果显示使用intel media sdk的ffmpeg编码时,cpu的消耗为ffmpeg自带库h264的20% 。成功了。




1 0
原创粉丝点击