VideoProcessingFramework编译安装使用终极教程(包含gpu-ffmpeg,nv-codec-headers,Video_Codec_SDK等安装教程 )

1.安装NVIDIA-driver 和对应的cuda  

本人版本为:driver-440,cuda-10.1   这个版本跟后面安装nv-codec-headers的版本要对应,不然会导致编译ffmpeg失败

2.安装编译能使用cuda gpu的ffmpeg

可以用命令测试是否可以用gpu,如果没有按照下面这个教程步骤安装,会提示 Unknown decoder 'h264_cuvid'

编译能使用gpu的ffmpeg   

ffmpeg -hwaccel cuvid -c:v h264_cuvid -vsync 0 -rtsp_transport tcp -i rtsp://admin:密码@ip/streaming/channels/1 -vcodec h264_nvenc output.mp4 
#这里我用的rtsp 流 你没有可以替换成视频文件

(1)安装nv-codec-headers

1.安装编译 nv-codec-headers
git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git

cd nv-codec-headers && sudo make install && cd –

 

(2)

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig  #很重要 不然老是提示h264_cuvid的错误

2.安装编译ffmpeg  重点在第二条命令configure后面的依赖

git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg/
提前安装好需要的依赖包
./configure --prefix=$(pwd)/build_x64_release_shared --enable-nonfree --enable-cuda-sdk --enable-libnpp --extra-cflags=-I/usr/local/cuda/include --extra-ldflags=-L/usr/local/cuda/lib64
#这里我把ffmpeg编译在此时父文件夹下的build_x64_release_shared里 编译好后该文件夹下会有bin 、include、lib等文件夹

make -j -s #这里跟pdf提示不一样  要生成动态链接库
make install

#装好再用ffmpeg命令测试下是否可用gpu,不行  把ffmpeg加入环境变量



3.下载Video_Codec_SDK

下载,解压,重不重命名都可以   我的版本为

4.安装VideoProcessingFramework

参考官方给的教程   编译ffmpeg和vpf的步骤 

cmake那一步根据自己实际路径进行改动



1.git clone git@github.com:NVIDIA/VideoProcessingFramework.git
2.
cd VideoProcessingFramework
mkdir -p build
mkdir -p install  #vpf bin生成的位置 可以自定义
cd build

cmake .. -DVIDEO_CODEC_SDK_DIR=上面sdk的路径 -DGENERATE_PYTHON_BINDINGS:BOOL="1" -DFFMPEG_DIR:PATH=/home/xxx/github-repository/ffmpeg/build_x64_release_shared -DCMAKE_INSTALL_PREFIX:PATH="/home/xxx/github-repository/VideoProcessingFramework/install" 
-DPYTHON_INCLUDE_DIR=/usr/include/python3.6m/ -DPYTHON_LIBRARY=/usr/lib/python3.6/config-3.6m-x86_64-linux-gnu/libpython3.6m.so  -DPYTHON_EXECUTABLE=/usr/bin/python3.6m

make 
make install

装好后使用给的sample代码测试 

5.使用VPF中遇到的问题   (有不同的问题可以参考vpf项目下的各种issue 工作人员一般都会很快回复 )

(1)CUDA error: CUDA_ERROR_UNKNOWN

检查cuda是否加入环境变量

检查ffmpeg是否已加入cudasdk编译

(2)RuntimeError: can't get unknown filter by name

先用ffmpeg命令看看视频格式是否支持,我当时是ffmpeg不支持cuda,后来重新编译可以用 ,第二个是avi格式不支持

(3)ModuleNotFoundError: No module named 'PyNvCodec'

确保PyNvCodec.so和代码在同一个文件夹下,用命令行执行

(4)AttributeError: module 'PyNvCodec' has no attribute 'PyNvDecoder'

cmkae时加入  -DPYTHON_EXECUTABLE=/usr/bin/python3.6m(如上)

或者确认cmake时的python解释器路径和你现在用的python对应正确

(5)[rtsp @ 0x5611e3333ec0] max delay reached. need to consume packet
[rtsp @ 0x5611e3333ec0] RTP: missed 169 packets

解决:nvDec = nvc.PyNvDecoder(encFilePath, gpuID, {'rtsp_transport' : 'tcp', 'max_delay' : '5000000'})

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值