引言必看
video sdk目前不支持jetson,我也不知道为啥官方给了aarch64的so占位符,到底为了证明什么,搞jetson且想用硬解码解析视频的下伙伴可以不用看了
https://github.com/NVIDIA/VideoProcessingFramework/pull/515
https://github.com/opencv/opencv_contrib/issues/3840
opencv安装包下载地址:
https://github.com/opencv/opencv/
扩展库下载地址:
https://github.com/opencv/opencv_contrib
以下是我的目录结构:
/home/jetson/nvidia-codec/
├── nv-codec-headers/
├── Video_Codec_SDK_12.0.16/
│ ├── Doc/
│ ├── Interface/
│ │ ├── cuviddec.h
│ │ ├── nvcuvid.h
│ │ └── nvEncodeAPI.h
│ └── Lib/
│ ├── linux/
│ │ ├── stubs/
│ │ │ ├── aarch64/
│ │ │ │ ├── libnvcuvid.so
│ │ │ │ └── libnvidia-encode.so
│ │ │ ├── ppc64le/
│ │ │ │ ├── libnvcuvid.so
│ │ │ │ └── libnvidia-encode.so
│ │ │ └── x86_64/
│ │ │ ├── libnvcuvid.so
│ │ │ └── libnvidia-encode.so
│ │ ├── Win32/
│ │ └── x64/
├── ffmpeg/
├── opencv-4.10.0/
│ ├── build/
│ └── install/
│ ├── bin/
│ ├── include/
│ ├── lib/
│ └── share/
└── opencv_contrib-4.10.0/
└── modules/
**注意
经过实测,发现可以不用安装ffmpeg的video cuda sdk版本也可以使用opencv的video cuda sdk的,但是不安装的话,直接使用ffmpeg就使用不了cuda,ffmpeg版本的cuda video sdk依赖于valkan0
0.软件安装
0.1安装ffmpeg(参考官方文档)
sudo apt -y remove ffmpeg
Clone ffnvcodec
git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
Install ffnvcodec
cd nv-codec-headers && sudo make install && cd ..
Clone FFmpeg’s public GIT repository.
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg/
Install necessary packages.
sudo apt-get install build-essential yasm cmake libtool libc6 libc6-dev unzip wget libnuma1 libnuma-dev
Configure
./configure --enable-nonfree --enable-cuda-nvcc --enable-libnpp --extra-cflags=-I/usr/local/cuda/include --extra-ldflags=-L/usr/local/cuda/lib64 --disable-static --enable-shared
Compile
make -j8
Install the libraries.
sudo make install
echo 'export PATH=/usr/local/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
0.2 安装nvidia-video-codec-sdk
(1) 查看当前 JetPack 版本对应的驱动版本
JetPack 是 NVIDIA 提供的 SDK,包含了操作系统、驱动、库和开发工具。每个 JetPack 版本都固定包含一组驱动程序。
以下是部分 JetPack 版本与 NVIDIA 驱动版本的对应关系:
JetPack Version | Driver Version | L4T Version |
---|---|---|
JetPack 5.1.2 | 525.x | L4T 35.4.1 |
JetPack 5.1.1 | 525.x | L4T 35.3.1 |
JetPack 5.1 | 525.x | L4T 35.2.1 |
JetPack 5.0.2 | 515.x | L4T 35.1.0 |
JetPack 4.6.4 | 32.x | L4T 32.7.4 |
JetPack 4.6 | 32.x | L4T 32.6.1 |
说明:
驱动版本 470.57.02 属于 JetPack 4.x 系列的范畴。
如果你需要更高版本的驱动(例如 525.x),需要升级到 JetPack 5.x 系列。
我的设备的截图如下
可以看到我的设备是jetpack-5.1.2的,对应525.x的英伟达显卡驱动
(2) Video_Codec_SDK下载以及安装
nvidia-video-codec-sdk下载链接如下:
https://developer.nvidia.com/nvidia-video-codec-sdk/download
我下载的是Video_Codec_SDK_12.0.16,根据文件夹里面的Read_Me.pdf描述如下: