ffmpeg用Nvidia GPU进行加速

做~自己de王妃 提交于 2020-02-27 18:53:13

https://blog.csdn.net/hiudawn/article/details/82261498?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

预先准备
在已经安装过cuda的前提下,没装过看我Ubuntu16.04安装cuda+cudann+tensorflow,注意只看cuda安装章节就好了。

首先你看下装好的驱动版本满不满足nvidia-video-codec-sdk的要求,比如截止到本文之前,sdk8.2需要NVIDIA Linux display driver 396.24 or newer具体什么需求参考上述链接,里面也有相应的下载地址

如果之前已经安装过cuda或者nvidia驱动,可以通过下列命令来查看驱动版本,具体看弹出命令行左上角

nvidia-smi
1
我的是下面这个,满足要求

NVIDIA-SMI 396.24

更新驱动(非必须步骤)
其实一开始我的驱动是384.xx版本的,不满足要求,就直接下载了一个NVIDIA-Linux-x86_64-396.24.run,然后

chmod 777 NVIDIA-Linux-x86_64-396.24.run
1
关闭图形界面(参考该博客)

sudo /etc/init.d/lightdm stop
1
然后

./NVIDIA-Linux-x86_64-396.24.run
1
各种yes各种continue,就安装好了,之后重启图形界面

sudo /etc/init.d/lightdm start
1
下载ffmpeg
https://git.ffmpeg.org/ffmpeg.git
1
进入到里面

cd ./ffmpeg
1
配置
./configure --enable-cuda --enable-cuvid --enable-nvenc --enable-nonfree --enable-libnpp --extra-cflags=-I/usr/local/cuda-9.0/include --extra-ldflags=-L/usr/local/cuda-9.0/lib64
1
注意/usr/local/cuda-9.0/lib64是你cuda的安装路径,不同版本可能略有区别,一定要改成你自己的,然后

make -j 10
1
等待一会,如果没有出错,之后就可以在ffmpeg目录中放个视频(如1.mkv)测试一下

测试
./ffmpeg -y -hwaccel cuvid -c:v h264_cuvid -vsync 0 -i 1.mkv -vf scale_npp=1920:1072 -vcodec h264_nvenc 1.mp4 -vf scale_npp=1280:720 -vcodec h264_nvenc 2.mp4
1
安装正确的话,上面命令顺畅进行,并在当前目录下生成1.mp4和2.mp4

一些安装错误
nasm/yasm not found or too old. Use –disable-x86asm for a crippled build.
sudo apt install yasm
1
ERROR: cuda requested, but not all dependencies are satisfied: ffnvcodec
git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
make
sudo make install
1
2
3
这个注意进去那个git链接看下,似乎会根据sdk的版本而更新

./ffmpeg: error while loading shared libraries: libnppig.so.9.0: cannot open shared object file: No such file or directory
这个就是因为上面那个nv-codec-headers错误没有和最前面提到的驱动版本相匹配,比如前面的nv-codec-headers版本是基于sdk8.2的,而8.2目前为之需要的驱动版本是396.24,具体解决回去看前面

点赞 1
————————————————
版权声明:本文为CSDN博主「hiudawn」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/hiudawn/article/details/82261498

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!