引言

安装

参考官方给的安装教程,以Linux系统为例,Windows系统请直接查看官网教程。

预先安装依赖

(1)安装Nvidia video driver和CUDA SDK

①安装与GPU匹配的CUDA和英伟达显卡驱动,需要注意版本对应。

②下载NVIDIA Video Codec SDK并解压备用,官网下载需要注册,可以直接从CSDN下载。

(2)从源码安装FFMpeg

推荐从源码安装FFMpeg:

cd ~/installs
git clone https://github.com/FFmpeg/FFmpeg.git
cd FFmpeg
mkdir -p $(pwd)/build_x64_release_shared
./configure \--prefix=$(pwd)/build_x64_release_shared \--disable-static \--disable-stripping \--disable-doc \--enable-shared

注:如果没有预先安装yasm可能会报错如下:

nasm/yasm not found or too old. Use --disable-x86asm for a crippled
build.

If you think configure made a mistake, make sure you are using the
latest version from Git. If the latest version fails, report the
problem to the ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on
irc.freenode.net. Include the log file “ffbuild/config.log” produced
by configure as this will help

此时需要先安装yasm:

 sudo apt  install -y yasm

再编译安装ffmpeg:

make -j -s && make install

安装VPF

# Export paths to Video Codec SDK and FFMpeg
export PATH_TO_SDK=~/installs/Video_Codec_SDK_9.1.23
export PATH_TO_FFMPEG=~/installs/FFmpeg/build_x64_release_shared# Clone repo and start building process
cd ~/installs
git clone https://github.com/NVIDIA/VideoProcessingFramework.git# Export path to CUDA compiler (you may need this sometimes if you install drivers from Nvidia site):
export CUDACXX=/usr/local/cuda/bin/nvcc# Now the build itself
cd VideoProcessingFramework
export INSTALL_PREFIX=$(pwd)/install
mkdir -p install
mkdir -p build
cd build# If you want to generate Pytorch extension, set up corresponding CMake value GENERATE_PYTORCH_EXTENSION
cmake .. \-DFFMPEG_DIR:PATH="$PATH_TO_FFMPEG" \-DVIDEO_CODEC_SDK_DIR:PATH="$PATH_TO_SDK" \-DGENERATE_PYTHON_BINDINGS:BOOL="1" \-DGENERATE_PYTORCH_EXTENSION:BOOL="1" \-DPYTHON_LIBRARY=/home/user/anaconda3/lib/libpython3.7m.so \-DCMAKE_INSTALL_PREFIX:PATH="$INSTALL_PREFIX"

需要注意如果存在多个Python环境,要额外添加Python相关的配置,不能完全按照官网教程的cmake设置来,否则可能存在自动Python环境查找不是自己想要的情况。最终无法正常使用。
此处额外添加DPYTHON_EXECUTABLEDPYTHON_INCLUDE_DIR两项设置。

由于不需要PyTorch扩展(PYTORCH_EXTENSION),所以将DGENERATE_PYTORCH_EXTENSION:BOOL设为0。

cmake ..   -DFFMPEG_DIR:PATH="$PATH_TO_FFMPEG"  \
-DVIDEO_CODEC_SDK_DIR:PATH="$PATH_TO_SDK"   \
-DGENERATE_PYTHON_BINDINGS:BOOL="1"   \
-DGENERATE_PYTORCH_EXTENSION:BOOL="0"  \
-DPYTHON_LIBRARY=/root/user/env_py38/lib/libpython3.8.so   \
-DCMAKE_INSTALL_PREFIX:PATH="$INSTALL_PREFIX" \
-DPYTHON_EXECUTABLE=/root/user/env_py38/bin/python \
-DPYTHON_INCLUDE_DIR=/root/user/env_py38/include/python3.8/

编译安装:

make && make install

编译安装过程打印信息如下:

[ 87%] Linking CXX shared library libTC.so
[ 87%] Built target TC
Scanning dependencies of target PyNvCodec
[ 93%] Building CXX object PyNvCodec/CMakeFiles/PyNvCodec.dir/src/PyNvCodec.cpp.o
[100%] Linking CXX shared library PyNvCodec.cpython-38-x86_64-linux-gnu.so
[100%] Built target PyNvCodec
[ 18%] Built target TC_CORE
[ 87%] Built target TC
[100%] Built target PyNvCodec
Install the project...
-- Install configuration: ""
-- Installing: /root/user/installs/VideoProcessingFramework/install/bin/libTC_CORE.so
-- Installing: /root/user/installs/VideoProcessingFramework/install/bin/libTC.so
-- Installing: /root/user/installs/VideoProcessingFramework/install/bin/PyNvCodec.cpython-38-x86_64-linux-gnu.so
-- Installing: /root/user/installs/VideoProcessingFramework/install/bin/SampleDecode.py
-- Installing: /root/user/installs/VideoProcessingFramework/install/bin/SampleEncode.py
-- Installing: /root/user/installs/VideoProcessingFramework/install/bin/SampleDecodeSw.py
-- Installing: /root/user/installs/VideoProcessingFramework/install/bin/SampleDecodeMultiThread.py
-- Installing: /root/user/installs/VideoProcessingFramework/install/bin/SampleEncodeMultiThread.py

检查CUDA和Video Codec SDK libraries是否被正常加载:

ldd PyNvCodec.cpython-38-x86_64-linux-gnu.so

验证是否安装成功:

cd ~/installs/VideoProcessingFramework/install/bin
python SampleDecode.py

如果打印以下信息则表示安装成功:

This sample decodes input video to raw NV12 file on given GPU. Usage:
SampleDecode.py $gpu_id $input_file $output_file. Provide gpu ID, path
to input and output files

如果打印以下信息则表示安装失败,请注意环境配置一定要正确:

Traceback (most recent call last): File “SampleDecode.py”, line
16, in
import PyNvCodec as nvc ModuleNotFoundError: No module named ‘PyNvCodec’

使用

如果需要在其他工程中使用VPF,则拷贝编译好的PyNvCodec.cpython-38-x86_64-linux-gnu.so文件到工程主目录下,或者在工程代码中使用sys.path.append('/root/user/installs/VideoProcessingFramework/install/bin')来添加,还可以将生成的.so文件拷贝到使用的Python包路径(例如cp PyNvCodec.cpython-38-x86_64-linux-gnu.so /root/conda/envs/env_name/lib/python3.8/site-packages/)。

导入VPF:

import PyNvCodec as nvc

其他

可能遇到的报错及解决方案:
(1)cuda链接库文件找不到

/usr/bin/ld: cannot find -lcuda
collect2: error: ld returned 1 exit status
make[2]: *** [PyNvCodec/TC/CMakeFiles/TC.dir/build.make:226: PyNvCodec/TC/libTC.so] Error 1
make[1]: *** [CMakeFiles/Makefile2:329: PyNvCodec/TC/CMakeFiles/TC.dir/all] Error 2
make: *** [Makefile:130: all] Error 2

需要重新创建软链接:

ls -la /usr/lib/x86_64-linux-gnu/libcuda.so
ls: cannot access '/usr/lib/x86_64-linux-gnu/libcuda.so': No such file or directorysudo ln -s /usr/lib/x86_64-linux-gnu/libcuda.so.1 /usr/lib/x86_64-linux-gnu/libcuda.so

参考资料

[1] NVIDIA-VideoProcessingFramework-wiki-Building-from-source
[2] Github: NVIDIA-VideoProcessingFramework
[3] NVIDIA Video Codec SDK
[4] Ubuntu上安装ffmpeg-cuda加速
[5] Video_Codec_SDK_9.1.23.zip
[6] Nvidia 视频处理框架----1. VideoProcessingFramework 介绍和安装
[7] VideoProcessingFramework框架编译启动全过程
[8] VideoProcessingFramework编译安装使用终极教程(包含gpu-ffmpeg,nv-codec-headers,Video_Codec_SDK等安装教程 )
[9] VPF:适用于 Python 的开源视频处理框架,加速视频任务、提高 GPU 利用率
[10] VPF: Hardware-Accelerated Video Processing Framework in Python
[11] ValueError: No AVFormatContext provided. #8
[12] Optimizing Video Memory Usage with the NVDECODE API and NVIDIA Video Codec SDK
[13] Introducing NVIDIA Video Codec SDK 10 Presets

Ubuntu上安装NVIDIA VideoProcessingFramework (VPF)相关推荐

  1. 如何在Debian 10上安装Nvidia驱动程序

    在本教程中,我们将向您展示如何在香港服务器的Debian 10系统上安装 Nvidia 驱动程序.图形处理单元 (GPU) 的性能主要取决于驱动程序.Ubuntu默认使用开源视频驱动程序Nouveau ...

  2. Ubuntu上安装显卡驱动

    Ubuntu上安装显卡驱动 Ubuntu上安装显卡驱动有两种方式,可以使用Ubuntu自带的,也可以安装Nvidia官方驱动. 第一种方法只需sudo apt-get install nvidia-g ...

  3. Ubuntu上安装OpenGL

    Ubuntu上安装OpenGL OpenGL(Open Graphics Library,译名:开放图形库或者"开放式图形库")是用于渲染2D.3D矢量图形的跨语言.跨平台的应用程 ...

  4. 01. Ubuntu下安装nvidia显卡驱动(安装方式简单)

    文章目录 第一步 获取显卡型号 第二步 查看GTX970M显卡驱动 第三步 查询支持GTX970M显卡的显卡驱动的其他驱动版本 第四步 安装 第五步 测试nvidia driver是否安装成功 环境 ...

  5. [网摘学习]在Ubuntu上安装和配置OpenStack Nova之二

    再收藏一份Openstack的文章,这两天的操作与此相同.但其中出现的问题还需要查找原因.待个人继续学习研究. 原文参考:http://www.linuxde.net/2011/11/1599.htm ...

  6. 在 Ubuntu 上安装最新版本的 Erlang方法介绍

    Erlang 是一种用于构建大规模可扩展实时系统的函数式编程语言.Erlang 最初是由 爱立信 创建的专有软件,后来被开源. Erlang 在 Ubuntu 的 Universe 仓库 中可用.启用 ...

  7. 在Ubuntu上安装Odoo 11(企业版)

    2019独角兽企业重金招聘Python工程师标准>>> 在Ubuntu上安装Odoo 11(企业版) 2017年10月8日YENTHE666 在本教程中,我将学习如何在Ubuntu ...

  8. 在 Ubuntu 上安装 Android Studio

    在 Ubuntu 上安装 Android Studio http://www.linuxidc.com/Linux/2013-05/84812.htm 打开terminal,输入以下命令 sudo a ...

  9. linux卸载kodi,如何在Ubuntu上安装Kodi 18 Beta

    Kodi的Beta版周期很长.很棒,因为它有助于将错误排除在生产版本之外,而且还可以保留数月的新功能.值得庆幸的是,Kodi开发人员提供了可供测试和使用的"unstable"软件包 ...

最新文章

  1. .NET开源工具类库:Masuit.Tools
  2. PyCharm Python迁移项目
  3. 集合对象转json数组
  4. 免费jar包最全下载网站
  5. 使用企业微信的jsdk调用企业微信api--前端
  6. python 实现combination和permutation
  7. 通向Golang的捷径【20. 使用 Go 语言的 GAE】
  8. win10使用无边框鼠标 (mouse without border)-局域网共享鼠标键盘
  9. 超级简单的 RocketMQ 流量削峰实战
  10. 如何创建一个虚拟机?
  11. ubuntu chm文档阅读
  12. 【GIT】error: failed to push some refs to 'https://github.com/username/python.git'
  13. protal服务器获取不到设备信息,Poral网页认证提示portal服务器获取不到设备信息或者设备没有回应req_info报文的解决办法...
  14. 数据结构——行车路线规划(大路小路)
  15. 概率初步(1 Juin, 2019)
  16. Linux不是Windows(转载)
  17. 03 Opencv部分经典例程赏析
  18. 【Unity3DRPG入门学习笔记第七卷】Cinemachine Post Processing 摄像机跟踪和后处理
  19. (已更新)社区论坛小程序源码,功能齐全,简洁漂亮,前端+后端
  20. radial-gradient

热门文章

  1. HTML5七夕情人节表白网页 一场浪漫烟花表白 HTML+CSS+JavaScript
  2. hdu 4396 More lumber is required
  3. 成为项目经理需要什么证书?你知道吗?
  4. 开源算法FMix:用于深度学习中增强混合样本数据增强
  5. 深度学习环境配置:华硕主板的Win 10 + UEFI + GPT条件下且在SSD + HDD双硬盘下安装Ubuntu+Gtx 1080Ti显卡驱动 + CUDA 9.1 + Cudnn 7.1...
  6. su root 和 su - root 的小小区别;
  7. PHP and MySQL Web Development 5th英文版
  8. 服务器系统板电压超出范围,Dell戴尔 PowerEdge R720 服务器错误代码二
  9. Revit中门窗的翻转控件该如何添加?
  10. openjdk java字体库_java - 在Linux上为Openjdk Java定义/安装的字体在哪里