【并行计算与CUDA开发】英伟达硬件加速解码器在 FFMPEG 中的使用
来源:互联网 发布:java下载源码 编辑:程序博客网 时间:2024/06/06 02:18
目录(?)[-]
- 私有驱动
- 编译 FFMPEG
- 使用 nvenc
这篇文档介绍如何在 ffmpeg 中使用 nvenc 硬件编码器。
私有驱动
nvenc
本身是依赖于 nvidia
底层的私有驱动的,所以想要使用编码器首先需要安装 nvidia
的私有驱动。在 NVIDIA VIDEO CODEC SDK 的介绍中说明,最新版本的 nvenc sdk 5.0
在 Linux 需要 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 Linux.
目前 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
头文件,这个头文件并没有包含在私有驱动中,你需要到 NVIDIA VIDEO CODEC SDK 中下载 SDK,解压后在Samples/common/inc
目录下有这个头文件,把它拷贝到可以链接到的目录中去。
之后编译就可以顺利的通过,得到包含 nvenc
编码器的库。
使用 nvenc
FFMPEG 中直接使用 av_find_encoder_by_name("nvenc")
就可以找到这个这个编码器并使用它。nvenc.c
的 pix_fmts_nvenc
变量定义来看,这个编码器应该是支持 YUV420P
, YUV444P
和 NV12
三种格式的,但是测试的过程中发现YUV420P
没办法使用,所以应该吧 AVCodecContext
的 pix_fmt
设置成NV12
。
- 【并行计算与CUDA开发】英伟达硬件加速解码器在 FFMPEG 中的使用
- 英伟达硬件加速解码器在 FFMPEG 中的使用
- 英伟达硬件加速解码器在 FFMPEG 中的使用
- 【并行计算与CUDA开发】英伟达硬件加速编解码
- 【并行计算-CUDA开发】英伟达硬件解码器分析
- 【并行计算-CUDA开发】【视频开发】ffmpeg Nvidia硬件加速总结
- 【并行计算-CUDA开发】从熟悉到精通 英伟达显卡选购指南
- 【并行计算-CUDA开发】OpenACC与OpenHMPP
- 【视频开发】【CUDA开发】英伟达CUVID硬解,并通过FFmpeg读取文件
- 【计算机视觉】【并行计算与CUDA开发】OpenCV中GPU模块使用
- 【并行计算-CUDA开发】CUDA ---- Warp解析
- 【并行计算-CUDA开发】CUDA存储器模型
- 【计算机视觉】【并行计算与CUDA开发】GPU硬编码
- 【视频开发】【CUDA开发】FFMPEG硬件加速-nvidia方案
- 【视频开发】【CUDA开发】ffmpeg Nvidia硬件加速总结
- 【并行计算-CUDA开发】CUDA并行存储模型
- 英伟达硬件加速编解码
- 英伟达硬件解码器分析
- 【转载】【树链剖分】【基础详解√】
- 【并行计算与CUDA开发】英伟达硬件加速编解码
- Meta Referrer标签:在SEO与互联网上的进阶
- 数字三角形--动态规划
- 疑难杂症小记
- 【并行计算与CUDA开发】英伟达硬件加速解码器在 FFMPEG 中的使用
- java之快速排序
- 如何把使用Navicat把Excel表格中时间日期以**dateTime**格式导入**MySQL**数据库
- mybatis 传入list
- 红黑树总结
- SQL server存储过程基础知识
- 以resnet作为前置网络的ssd目标提取检测
- 图形学学习笔记5——向量矩阵运算
- java之并归排序