创建或修改目录:/www/wwwroot/104.219.215.234/data 失败!
柚子猫 足交 Windows/linux版块中QSV 在 FFMPEG 中的使用教程
开心播播网
发布日期:2024-11-18 00:06 点击次数:127
qsv是一种视频加快形貌。qsv形貌是爱奇艺公司研发的一种视频文献形貌柚子猫 足交,由于爱奇艺全面正版视频,故qsv形貌只可使用奇艺播放器(爱奇艺影音)播放
QSV 在 FFMPEG 中的使用(windows)
INDE
在 Windows 下通常使用 INDE 中的 Intel Media SDK 而不是 MMS,因为后者只在 Linux 下和 Windows Server 下可用。
INDE 不错免费下载,提倡下载它的离线安设包,因为许多功能你并不需要,使用离线安设包,你不错指下载你念念要的功能。
安设 Media SDK
在 Windows 上安设 Media SDK 比拟通俗,请参考这个连续中的安设方法。咱们只使用它作念视频编码,是以只需要选拔build 下的
- Media SDK for Windows - Media Raw Acclecerator for Windows 这两项就不错了。
Windows 下编译相沿 qsv 的 FFMPEG 库
编译 mfx_dispatcher
windows 编译 qsv 之前需要安设 mfx_dispatcher,它颠倒于是讹诈标准和具体的硬件加快库之间的一个中间层,它闲静匡助讹诈库定位底层代码,这么讹诈库就不错毋庸径直连续到硬件加快的具体驱散。
[mfx_dispatcher][] 代码不错在 github 转折载到,在 github 的 README 中也提供了编译方法。需要详确的是,它使用的编译器具是 mingw64 的 x86_64 器具链,淌若你使用的是 mingw64 的 i686 器具库,铭记把教程中的 x86_64替换成 i686。
mfx_dispatcher 安设完成之后会在 /usr/i686-w64-mingw32/usr/local/ 下生成相应的库文献和头文献。
连续到 FFMPEG
FFMPEG 需要使用 pkg-config 定位 libmfx 库,这个库的 libmfx.pc 文献在安设完 mfx_dispatcher 之后会安设在/usr/i686-w64-mingw32/usr/local/lib/pkgconfig 目次下。为了让 FFMPEG 的configure 剧本大略找到它你需要把这个地址加入到 PKG_CONFIG_PATH 中。
export PKG_CONFIG_PATH=/usr/i686-w64-mingw32/usr/local/lib/pkgconfig 为了让 FFMPEG 相沿 qsv 你需要加入底下三个配置选项:
./configure --enable-libmfx --enable-encoder=h264_qsv --enable-decoder=h264_qsv ... 使用中可能会出现的问题
在使用 h264_qsv 编码器的工夫,可能会出现 Error initializing an internal MFX session 演叨,咫尺莫得找到具体原因。在把 Media SDK 下的libmfxhw32.dll 文献拷贝到推行目次下之后这个问题就散失看。
QSV 在 FFMPEG 中的使用(Linux)
Intel Media SDK
咫尺 Intel 不再发布单独的 Intel Media SDK, 这个组件在 Linux 平台下集成在 Intel Media Server Studio 中,后文简称 MMS
咫尺的 MMS 版块推选的安设平台只消一个 CentOS(SUSE12 在刻下版块中也算是一个推选平台)。其他平台的安设比拟复杂,官方也不太推选使用。后文的先容是基于 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. 安设内核空间的启动
twitter 露出底下的号令使用超等用户权限推行:
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 的工夫照旧有可能会出现 MFXxxx undefinded reference 的演叨,这工夫你需要让你的标准连续到 lmfxhw64 这个库。最通俗的样式是,在/usr/lib64/ 中诞生一个 libmfxhw64 的软聚积
ln -s /opt/intel/mediasdk/lib64/libmfxhw64.so /usr/lib64/libmfxhw64.so 然后在编译我方的标准的工夫加入 -lmfxhw64 选项。
在 FFMPEG 中使用 qsv 编码器
qsv 的编码器在 FFMPEG 中有 h264 和 h265 两种,你不错通过底下的代码找到这个编码器。
av_find_encoder_by_name("h264_qsv"); 此外,通过 qsvenc_h264.c 这个源文献,咱们不错看到它相沿 QSV 和 NV12两种形貌柚子猫 足交,然而 QSV 这个形貌好像无法正常的使用,你需要把编码的 pfx_fmt竖立成 NV12。