【并行计算与CUDA开发】英伟达硬件加速解码器在 FFMPEG 中的使用
这篇文档介绍如何在 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 0
nvidia 8380416 36 nvidia_uvm
drm 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 中的使用的更多相关文章
- 【并行计算与CUDA开发】英伟达硬件加速编解码
硬件加速 并行计算 OpenCL OpenCL API VS SDK 英伟达硬件编解码方案 基于 OpenCL 的 API 自己写一个编解码器 使用 SDK 中的编解码接口 使用编码器对于 OpenC ...
- 【并行计算-CUDA开发】英伟达硬件解码器分析
这篇文章主要分析 NVCUVID 提供的解码器,里面提到的所有的源文件都可以在英伟达的 nvenc_sdk 中找到. 解码器的代码分析 SDK 中的 sample 文件夹下的 NvTranscoder ...
- CUDA学习笔记4:CUDA(英伟达显卡统一计算架构)代码运行时间测试
CUDA内核运行时间的测量函数 cudaEvent_t start1; cudaEventCreate(&start1); cudaEvent_t stop1; cudaEventCreate ...
- CUDA学习笔记2:CUDA(英伟达显卡统一计算架构)与已有的VS项目结合
一.步骤 1.先新建一个简单的控制台应用程序,项目名称为Mytest,如下图所示: 2.在项目中添加一个名为Test.cu文件,如下图所示: 3.在解决方案资源管理器中选择该项目并点击右键,在弹出的菜 ...
- 【视频开发】【CUDA开发】英伟达CUVID硬解,并通过FFmpeg读取文件
虽然FFmpeg本身有cuvid硬解,但是找不到什么好的资料,英伟达的SDK比较容易懂,参考FFmpeg源码,将NVIDIA VIDEO CODEC SDK的数据获取改为FFmpeg获取,弥补原生SD ...
- 不用写代码就能实现深度学习?手把手教你用英伟达 DIGITS 解决图像分类问题
2006年,机器学习界泰斗Hinton,在Science上发表了一篇使用深度神经网络进行维数约简的论文 ,自此,神经网络再次走进人们的视野,进而引发了一场深度学习革命.深度学习之所以如此受关注,是因为 ...
- 英伟达CUVID硬解,并通过FFmpeg读取文件
虽然FFmpeg本身有cuvid硬解,但是找不到什么好的资料,英伟达的SDK比较容易懂,参考FFmpeg源码,将NVIDIA VIDEO CODEC SDK的数据获取改为FFmpeg获取,弥补原生SD ...
- 【并行计算-CUDA开发】从熟悉到精通 英伟达显卡选购指南
举报 说到显卡,就不免令人想到英伟达和AMD两家面向个人消费级和企业级最大的显示芯片生产企业,英伟达和AMD,今天小编为大家简单的介绍一下英伟达的显卡选购方面的攻略,为一些想要购买显卡的用户提供一些参 ...
- 第一篇:CUDA 6.0 安装及配置( WIN7 64位 / 英伟达G卡 / VS2010 )
前言 本文讲解如何在VS 2010开发平台中搭建CUDA开发环境. 当前配置: 系统:WIN7 64位 开发平台:VS 2010 显卡:英伟达G卡 CUDA版本:6.0 若配置不同,请谨慎参考本文. ...
随机推荐
- 矩阵库Numpy基本操作
NumPy是一个关于矩阵运算的库,熟悉Matlab的都应该清楚,这个库就是让python能够进行矩阵话的操作,而不用去写循环操作. 下面对numpy中的操作进行总结. numpy包含两种基本的数据类型 ...
- hash 跟B+tree的区别
1.hash只支持in跟=,不支持范围查询,时间复杂度:O(1) 2.B+tree支持范围查询,时间复杂度:O(log n) 3. B+tree 的优点:1.磁盘读取代价更低 ...
- paramiko的使用
import paramiko import sys user = "root" pwd = " # 上传文件 def sftp_upload_file(server_p ...
- Codeforces Round #598 (Div. 3) A,B,C,D{E,F待补}
A. Payment Without Change #include<bits/stdc++.h> using namespace std; #define int long long ...
- P4149 [IOI2011]Race 点分治
思路: 点分治 提交:5次 题解: 刚开始用排序+双指针写的,但是调了一晚上,总是有两个点过不了,第二天发现原因是排序时的\(cmp\)函数写错了:如果对于路径长度相同的,我们从小往大按边数排序,当双 ...
- 【题解】P1638 逛画展-C++
原题传送门 思路这道题目可以通过尺取法来完成 (我才不管什么必须用队列)什么是尺取法呢?顾名思义,像尺子一样取一段,借用挑战书上面的话说,尺取法通常是对数组保存一对下标,即所选取的区间的左右端点,然后 ...
- php win/linux/mac 安装redis扩展或者扩展报错 zend_smart_str.h file not found
1 windows 安装reids 扩展 根据phpinfo 查看php信息.在pecl.php.net 下载对应的redis扩展版本,放如扩展目录,在php.ini 配置扩展信息,重启服务 2 li ...
- 7月清北学堂培训 Day 1
今天是林永迪老师的讲授~ 基础算法 1. 模拟算法 面向测试算法 模拟算法的关键就是将人类语言翻译成机器语言. 要做到以下两点: 1.优秀的读题能力: 2.优秀的代码能力: 程序流程图: 读入,循环处 ...
- BZOJ 4734 UOJ #269 如何优雅地求和 (多项式)
题目链接 (BZOJ) https://www.lydsy.com/JudgeOnline/problem.php?id=4734 (UOJ) http://uoj.ac/problem/269 题解 ...
- 如何隐藏EFI分区?
U盘制作PE 后多了个EFI分区, 傲梅分区助手,,里面可以进行隐藏分区 文章来源:刘俊涛的博客 欢迎关注,有问题一起学习欢迎留言.评论