VideoProcessingFramework框架编译启动全过程

VideoProcessingFramework框架编译启动全过程VPF 是一个 C 库和 Python 绑定的视频处理框架 提供硬件加速的视频解码 编码 转码等功能 支持 GPU 加速的色彩空间和像素格式转换

大家好,欢迎来到IT知识分享网。

引言

这是VPF的简介,可以看出,它是python中能进行硬解码的模块,相比于opencv来讲,它可以将解码的步骤全部交给GPU继而能让CPU更加的高效。但目前因为比较新不够成熟,所以有些函数依然会有很多的bug,下面介绍搭建过程和测试demo。

VPF搭建

这个搭建过程相比于opencv,坑少了太多,但一定需要注意的是cuda、ffmpeg以及video_sdk的版本问题。如果版本没有对应上,会出现各种各样的问题。

版本环境

  • Video_Codec_SDK_10.0.26
  • ffmpeg-4.2.3
  • cuda 10.2
  • python 没有明确版本限制,但最好不低于3.6.5,我的版本是3.6.9

cuda问题总结

如果cuda是10.2并能在/usr/lib/目录下找到libnvcuvid.so并且不飘红,那么可以跳过这节。上面版本中,ffmpeg和video_sdk可以有版本变动,但最好用latest,cuda一定要选用10.2,因为cuda 10和cuda 11在我实验情况下都有编译问题,结果浪费了很多时间。下面是我的踩坑之旅。

cuda 10的问题:
在这里插入图片描述
不知道nvidia在10到10.2的版本变动间改了多少行数的使用和含义,但低于10.2是一定编译不会过的。上图来自GitHub和我犯过同样错误的一张图。

另外cuda 11的错误就可能是我的问题了,因为我本来是安装的cuda 10.2的deb包,但不知道为什么按照官网步骤,强行给我整成了11并且升级了驱动。。。我也很懵逼:
在这里插入图片描述
刚开始我想着是,升级就升级吧,那再彻底一点,然后去找了cudnn 8.0.1的版本,发现不太行,因为在8以下的版本,cudnn解压后的include文件夹下,只会有一个cudnn.h,进去后可以看到它会提示相应的版本号,也为之后能用cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2命令埋下伏笔:
在这里插入图片描述
但cuda 8.0.1的cudnn.h是这样的:
在这里插入图片描述
当然,如果是deb安装的方式,nvidia给出了另一种测试方法:

dpkg -l | grep cudnn 

但很不幸的是,我只用了一次这种安装方式,结果就在这里掉坑了。原因没来得及排查,因为这次安装cuda开始就有点别扭,所幸都卸载重装了。下面既是VP的搭建过程,另外一提的是,我有用centos和Ubuntu分别部署过这个框架,但在我用的时候,centos的有些文件申明还是有问题,在问了作者后,他的回答是用centos测试得不多,因为主要使用Ubuntu和Windows,emmmm…但这个bug,他有修复但没有合并,所以不清楚之后情况。

搭建过程

首先需要确定/usr/lib下的子目录里是否有libnvcuvid.so和libcuda.so文件,这是硬解码的关键,如果没有,请重新安装cuda,不然在编译过程中会出现如下错误:
在这里插入图片描述
另外也请确保ffmpeg已经用nvidia编译成功并用ldd ffmpeg检查是否都能找到动态库,这个的编译可以看我上一篇ffmpeg利用NVIDIA硬件加速编译

然后去NVIDIA官网下载最新版的video_sdk,解压在任意路径下。VPF用户用CMake通过find_library定位ffmpeg,如果bashrc有加那后面make的时候可以不用指定路径用shell命令都能找到,cuda和video_sdk同理:

$ vim ~/.bashrc # 先设置环境变量 $ export PATH_TO_SDK=你的路径/Video_Codec_SDK_10.0.26 $ export PATH_TO_FFMPEG=/usr/local/ffmpeg # 上一篇的绝对路径 $ git clone https://github.com/NVIDIA/VideoProcessingFramework.git # 进入VideoProcessingFramework设置当前路径下的install为安装路径 $ export INSTALL_PREFIX=$(pwd)/install $ mkdir -p install $ mkdir -p build # 开始编译 $ cd build $ cmake .. \ -DFFMPEG_DIR:PATH="$PATH_TO_FFMPEG" \ -DVIDEO_CODEC_SDK_DIR:PATH="$PATH_TO_SDK" \ -DGENERATE_PYTHON_BINDINGS:BOOL="1" \ -DPYTHON_LIBRARY=/root/bin/anaconda3/lib/libpython3.7m.so \ -DCMAKE_INSTALL_PREFIX:PATH="$INSTALL_PREFIX" $ make && make install 

如果版本对应,

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/152914.html

(0)
上一篇 2025-03-06 21:20
下一篇 2025-03-06 21:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信