博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
英伟达硬件加速解码器在 FFMPEG 中的使用
阅读量:6121 次
发布时间:2019-06-21

本文共 1555 字,大约阅读时间需要 5 分钟。

nvenc 本身是依赖于 nvidia 底层的私有驱动的,所以想要使用编码器首先需要安装 nvidia 的私有驱动。在  的介绍中说明,最新版本的 nvenc sdk 5.0 在  需要 346.22 以上的驱动,在windwos 下则需要 347.07 以上的驱动

The latest NVENC SDK version available is 5.0, which requires NVIDIA GPUdriver 347.09 or above for Windows and 346.22 or above for .

目前 Ubuntu 15.04 上的驱动满足这个要求,Windows 平台可以直接到官网上下载最新的驱动安装。(个人不建议去官网下载最新的 Linux 驱动,因为我试了很多次都没有安装成功,最终会导致无法进入系统)。

在 Ubuntu 15.04 下使用下面的命令安装最新的驱动。

sudo apt-get install nvidia-346 \                     nvidia-346-vum \                     nvidia-modprobe \                     nvidia-opencl-icd-346 \                     nvidia-prime \                     nvidia-settings

注意 nvidia-modprobe 必须要安装,因为私有驱动使用的内核模块,需要安装这个包在系统启动的时候加载这些内核模块。安装完成之后可能无法进入系统,这个应该是 nvidia 中的一个 BUG,你可以重启之后选择 grub 中的 ubuntu 高级 选项 中低版本的内核进入系统之后重启再选择高版本的内核进入系统。这一点非常的诡异,目前没有找到原因。

启动系统之后使用 lsmod | grep nvidia 应该会得到类似下面的结果:

nvidia_uvm             69632  0nvidia               8380416  36 nvidia_uvmdrm                   348160  7 i915,drm_kms_helper,nvidia

直接通过 sudo modprobe nvidia_uvm 好像也无法成功的加载需要的模块。

另外安装驱动安装完成之后会在 /dev 下面创建几个和 nvidia 相关的设备,通过ls /dev/nvidia* 应该会得到类型以下的结果:

/dev/nvidia0  /dev/nvidiactl  /dev/nvidia-uvm

编译 FFMPEG

要想在 FFMPEG 中使用 nvenc 编码器,你需要在编译选项中加入 enable-nvenc选项。这个选项依赖于 nvEncodeAPI.h 头文件,这个头文件并没有包含在私有驱动中,你需要到  中下载 SDK,解压后在Samples/common/inc 目录下有这个头文件,把它拷贝到可以链接到的目录中去。

之后编译就可以顺利的通过,得到包含 nvenc 编码器的库。

使用 nvenc

FFMPEG 中直接使用 av_find_encoder_by_name("nvenc") 就可以找到这个这个编码器并使用它。nvenc.c 的 pix_fmts_nvenc 变量定义来看,这个编码器应该是支持 YUV420PYUV444P 和 NV12 三种格式的,但是的过程中发现YUV420P 没办法使用,所以应该吧 AVCodecContext 的 pix_fmt 设置成NV12

转载地址:http://vmgka.baihongyu.com/

你可能感兴趣的文章
从Python2到Python3:超百万行代码迁移实践
查看>>
Windows Server已可安装Docker,Azure开始支持Mesosphere
查看>>
简洁优雅地实现夜间模式
查看>>
react学习总结
查看>>
微软正式发布PowerShell Core 6.0
查看>>
Amazon发布新的会话管理器
查看>>
InfoQ趋势报告:DevOps 和云计算
查看>>
舍弃Python,为什么知乎选用Go重构推荐系统?
查看>>
在soapui上踩过的坑
查看>>
MySQL的字符集和字符编码笔记
查看>>
ntpd同步时间
查看>>
must implement java.io.Serializable hessian
查看>>
Microsoft Licenses Flash Lite for Windows Mobile Users
查看>>
HDOJ 2020 绝对值排序
查看>>
HDOJ/HDU 2560 Buildings(嗯~水题)
查看>>
Maven编译时跳过Test
查看>>
Spring Boot 整合Spring Security 和Swagger2 遇到的问题小结
查看>>
[20170628]12C ORA-54032.txt
查看>>
除以2
查看>>
高可用集群原理解析
查看>>