本人版本为:driver-440,cuda-10.1 这个版本跟后面安装nv-codec-headers的版本要对应,不然会导致编译ffmpeg失败
2.安装编译能使用cuda gpu的ffmpeg
可以用命令测试是否可以用gpu,如果没有按照下面这个教程步骤安装,会提示 Unknown decoder 'h264_cuvid'
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加入环境变量
下载,解压,重不重命名都可以 我的版本为
参考官方给的教程 编译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代码测试
(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'})