Jetson NX的opencv-ffmpeg-gstream的编译

一、gstream推流的依赖

sudo apt update
sudo apt install -y build-essential checkinstall cmake pkg-config yasm git gfortran
sudo apt install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
sudo apt install -y libjpeg8-dev libjasper-dev libpng12-dev libtiff5-dev libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libxine2-dev libv4l-dev
sudo apt install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgtk2.0-dev libtbb-dev libatlas-base-dev libfaac-dev libmp3lame-dev libtheora-dev libvorbis-dev libxvidcore-dev libopencore-amrnb-dev libopencore-amrwb-dev x264 v4l-utils
sudo apt install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
sudo apt-get install gtk-doc-tools libgtk-3-dev -y 
sudo apt-get install libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev libgstreamer-plugins-bad1.0-dev -y
sudo apt install -y libgtk2.0-dev libtbb-dev libatlas-base-dev libfaac-dev libmp3lame-dev libtheora-dev libvorbis-dev 

Ubuntu 的软件源配置文件是 /etc/apt/sources.list。将系统自带的该文件做个备份,将该文件替换为下面内容,即可使用选择的软件源镜像。

deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-updates main restricted universe multiverse
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-updates main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-security main restricted universe multiverse
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-security main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-backports main restricted universe multiverse
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-backports main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal main universe restricted
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal main universe restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe
deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main

参考Xavier NX 使用OpenCV+GStreamer实现硬解码

sudo apt-get update
sudo apt-get dist-upgrade -y --autoremove
sudo apt-get install -y \
        build-essential \
        cmake \
        git \
        gfortran \
        libatlas-base-dev \
        libavcodec-dev \
        libavformat-dev \
        libavresample-dev \
        libcanberra-gtk3-module \
        libdc1394-22-dev \
        libeigen3-dev \
        libglew-dev \
        libgstreamer-plugins-base1.0-dev \
        libgstreamer-plugins-good1.0-dev \
        libgstreamer1.0-dev \
        libgtk-3-dev \
        libjpeg-dev \
        libjpeg8-dev \
        libjpeg-turbo8-dev \
        liblapack-dev \
        liblapacke-dev \
        libopenblas-dev \
        libpng-dev \
        libpostproc-dev \
        libswscale-dev \
        libtbb-dev \
        libtbb2 \
        libtesseract-dev \
        libtiff-dev \
        libv4l-dev \
        libxine2-dev \
        libxvidcore-dev \
        libx264-dev \
        pkg-config \
        python-dev \
        python-numpy \
        python3-dev \
        python3-numpy \
        python3-matplotlib \
        qv4l2 \
        v4l-utils \
        v4l2ucp \
        zlib1g-dev

# https://github.com/LinusCDE/mad-jetson-ffmpeg
sudo apt install bzip2 fontconfig libfribidi{0,-dev} gmpc{,-dev} gnutls-bin lame libass{9,-dev} libavc1394-{0,dev} libbluray{2,-dev} libdrm{2,-dev} libfreetype6{,-dev} libmodplug{1,-dev} libraw1394-{11,dev} librsvg2{-2,-dev} libsoxr{0,-dev} libtheora{0,-dev} libva{2,-dev} libva-drm2 libva-x11-2 libvdpau{1,-dev} libvorbisenc2 libvorbis{0a,-dev} libwebp{6,-dev} libx11{-6,-dev} libxcb1{,-dev} libxext{6,-dev} libxml2{,-dev} libxv{1,-dev} libxvidcore{4,-dev} libopencore-amr{nb0,nb-dev,wb0,wb-dev} opus-tools libsdl2-dev speex v4l-utils zlib1g{,-dev} libopenjp2-7{,-dev} libssh-{4,dev} libspeex{1,-dev}
sudo apt-get install libgmp3-dev libunistring-dev libvpx-dev libopus-dev libmp3lame-dev libfdk-aac-dev

这些是参考的apt依赖

启用gstream的rtsp模块

sudo apt-get install libgstrtspserver-1.0-0 gstreamer1.0-rtsp
sudo apt-get install libgirepository1.0-dev
sudo apt-get install gobject-introspection gir1.2-gst-rtsp-server-1.0

二、opencv的源码编译

编译时出现错误
Can’t build ffmpeg test code
编译不中断,但是最后FFMPEG的选项显示为NO,gstream也显示为no

进入/opencv-4.5.4/modules/videoio/cmake/detect_ffmpeg.cmake
找到if(NOT __VALID_FFMPEG)这个代码块,取消第一个注释,这样能看到全部的错误信息,但是编译会中断。

可以看到是因为依赖库没有全部导入,在/etc/profile中,建立FFMPEG_ROOT路径,把ffmpeg的pkg和lib路径加入到PKG_CONFIG_PATH和LD_LIBRARY_PATH。另外再加上/usr/lib/aarch64-linux-gnu/pkgconfig

三、gstream的rtsp推流

以下是gstream的rtsp推流测试命令行

gst-launch-1.0 -v v4l2src device=/dev/video0 ! jpegdec !  \
nvvidconv! nvv4l2h264enc ! queue ! h264parse! video/x-h264, \
stream-format=byte-stream ! \
rtspclientsink location=rtsp://192.168.137.30:554/test

usb摄像头需要用 v4l2src device=/dev/video0 启动,csi摄像头需要找其他的元素替换。jpegdec是普通的软解码,按理说可以使用nvjpegdec启动硬件解码,不知道为什么这里会显示黑屏,有懂的兄弟麻烦告知一下。

这时应该是推流不成功的,会提示没有连接服务器。gstreamer USB摄像头RTSP推流 这篇文章写了如何编译gstreamer rtsp源码(gst-rtsp-server)我没成功,

root@ems-desktop:/home/video/sources/videoFile# gst-launch-1.0 -v v4l2src device=/dev/video0 ! jpegdec !  nvvidconv! nvv4l2h264enc ! queue ! h264parse! video/x-h264,stream-format=byte-stream ! rtspclientsink location=rtsp://192.168.137.30:554/test
Setting pipeline to PAUSED ...
Opening in BLOCKING MODE
Pipeline is live and does not need PREROLL ...
Progress: (open) Opening Stream
Progress: (connect) Connecting to rtsp://192.168.137.30:554/test
/GstPipeline:pipeline0/GstV4l2Src:v4l2src0.GstPad:src: caps = image/jpeg, width=(int)3264, height=(int)2448, framerate=(fraction)15/1, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)2:4:5:1, interlace-mode=(string)progressive
/GstPipeline:pipeline0/GstJpegDec:jpegdec0.GstPad:sink: caps = image/jpeg, width=(int)3264, height=(int)2448, framerate=(fraction)15/1, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)2:4:5:1, interlace-mode=(string)progressive
ERROR: from element /GstPipeline:pipeline0/GstRTSPClientSink:rtspclientsink0: Could not open resource for reading and writing.
Additional debug info:
gstrtspclientsink.c(3236): gst_rtsp_client_sink_connect_to_server (): /GstPipeline:pipeline0/GstRTSPClientSink:rtspclientsink0:
Failed to connect. (Generic error)
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...

我是找了个已经编译好的EasyDarwin的源码包 EasyDarwin百度网盘下载

解压之后,然后

chmod 777 start.sh
./start.sh

成功的截图
然后就可以重新执行gstream的rtsp推流测试命令行

gst-launch-1.0 -v v4l2src device=/dev/video0 ! jpegdec !  \
nvvidconv! nvv4l2h264enc ! queue ! h264parse! video/x-h264, \
stream-format=byte-stream ! \
rtspclientsink location=rtsp://192.168.137.30:554/test

rtsp推流成功
然后rtsp推流就成功啦

### 回答1: 在Jetson Nano上手动编译OpenCV-Python4.5.5支持GStreamer,需要遵循以下步骤: 1. 准备环境 首先需要安装JetPack4.5.1,安装过程中需要勾选GStreamer,然后再更新开发包: ```shell sudo apt-get update sudo apt-get upgrade ``` 2. 安装依赖项 安装必要的依赖项: ```shell sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev python3-dev python3-numpy libgstreamer1.0-0 gstreamer1.0-plugins-* gstreamer1.0-libav ``` 3. 下载OpenCV 下载OpenCV源代码,并进入源代码所在目录: ```shell mkdir ~/opencv_build && cd ~/opencv_build git clone https://github.com/opencv/opencv.git cd opencv ``` 4. 编译OpenCV 创建用于编译OpenCV的目录,并进入该目录: ```shell mkdir build && cd build ``` 运行cmake来配置OpenCV编译选项: ```shell cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D WITH_CUDA=ON \ -D CUDA_ARCH_BIN="5.3" \ -D CUDA_ARCH_PTX="" \ -D WITH_CUDNN=ON \ -D WITH_TBB=ON \ -D ENABLE_FAST_MATH=1 \ -D CUDA_FAST_MATH=1 \ -D OPENCV_ENABLE_NONFREE=ON \ -D WITH_GSTREAMER=ON \ -D BUILD_opencv_python3=ON \ -D BUILD_opencv_python2=OFF \ -D PYTHON_EXECUTABLE=/usr/bin/python3 \ -D BUILD_EXAMPLES=OFF .. ``` 其中,需要注意的是WITH_GSTREAMER选项需要设置为ON来启用GStreamer支持。 5. 编译OpenCV-Python 运行make命令来编译OpenCVOpenCV-Python: ```shell make -j4 sudo make install ``` 6. 检验安装 在Python交互式环境中,测试OpenCV-Python是否支持GStreamer: ```python import cv2 print(cv2.getBuildInformation()) ``` 如果在输出信息中看到GStreamer,则说明OpenCV-Python已经成功地支持了GStreamer。 以上就是在Jetson Nano上手动编译OpenCV-Python4.5.5支持GStreamer的步骤。需要注意的是,因为编译OpenCV需要较长的时间,所以建议在空闲时间进行。 ### 回答2: Jetson Nano是一款强大的嵌入式计算机,适用于各种计算机视觉应用。而OpenCV-Python是一个广泛应用的计算机视觉库,具有高速、高度优化的特性。而支持GStreamer的OpenCV-Python4.5.5版本,更是在时延、图像传输方面具有更好的性能。 首先,我们需要准备Jetson Nano的开发环境。Jetson Nano使用的是Nvidia JetPack4.6版本,由于是以Ubuntu为基础的系统,所以需要在Jetson Nano上安装一些必要的软件: sudo apt-get update sudo apt-get install build-essential cmake git unzip pkg-config sudo apt-get install libjpeg-dev libpng-dev libtiff-dev sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev sudo apt-get install libxvidcore-dev libx264-dev sudo apt-get install libgtk-3-dev sudo apt-get install libatlas-base-dev gfortran sudo apt-get install python3-dev python3-pip sudo apt-get install python3-opencv 接下来,我们需要手动编译OpenCV-Python4.5.5: 1. 首先,从官方网站下载OpenCV-Python4.5.5源代码: wget -O opencv.zip https://github.com/opencv/opencv/archive/4.5.5.zip wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.5.5.zip unzip opencv.zip unzip opencv_contrib.zip mv opencv-4.5.5 opencv mv opencv_contrib-4.5.5 opencv_contrib 2. 创建build文件夹,并进入该文件夹: cd opencv mkdir build cd build 3. 配置编译参数,并开始编译: cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D WITH_CUDA=ON \ -D CUDA_ARCH_BIN=7.2 \ -D CUDA_ARCH_PTX="" \ -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \ -D BUILD_opencv_python3=ON \ -D BUILD_opencv_python2=OFF \ -D PYTHON_DEFAULT_EXECUTABLE=$(which python3) \ -D PYTHON3_LIBRARY=/usr/lib/aarch64-linux-gnu/libpython3.6m.so \ -D PYTHON3_INCLUDE_DIR=/usr/include/python3.6m \ -D PYTHON3_NUMPY_INCLUDE_DIRS=/usr/lib/python3/dist-packages/numpy/core/include \ -D BUILD_EXAMPLES=ON \ -D BUILD_DOCS=OFF \ -D BUILD_TESTS=OFF \ -D BUILD_PERF_TESTS=OFF \ -D WITH_GSTREAMER=ON \ -D WITH_LIBV4L=ON .. make -j4 sudo make install 4. 编译完成后,执行以下命令安装: sudo ldconfig 这样,我们就使用手动编译的方式,成功将OpenCV-Python4.5.5支持GStreamer的版本安装到了Jetson Nano上。您现在可以在系统中调用OpenCV-Python4.5.5库,并使用GStreamer进行图像处理和传输。 ### 回答3: Jetson Nano 是一个强大的嵌入式计算机,可用于进行深度学习和计算机视觉等任务。OpenCV 是一个流行的计算机视觉库,用于处理数字图像和视频。本文将介绍如何手动编译 OpenCV-Python 4.5.5,以支持 Jetson Nano 的 GStreamer。 首先,我们需要先安装 NVIDIA JetPack SDK,它包含了 Jetson Nano 所需的各种软件和驱动程序。如果您尚未安装,则可以从 NVIDIA 的官方网站上下载并安装。 接下来,我们需要安装 GStreamer。Jetson Nano 上默认安装了 GStreamer,但是需要安装一些插件,以便 OpenCV 可以使用它。我们可以使用以下命令来安装所需插件: sudo apt-get install gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly \ gstreamer1.0-plugins-good gstreamer1.0-tools libgstreamer1.0-dev \ libgstreamer-plugins-base1.0-dev 然后,我们可以下载 OpenCV 源代码。我们可以从官方网站上下载或从 GitHub 上克隆 OpenCV 的仓库。在这里,我们将使用 GitHub 上的 OpenCV 仓库进行编译。缩短编译时间,我们可以使用 OpenCV 的 CMake 工具编译。CMake 是一个跨平台的开源构建工具,它可以自动生成各种工程文件,如 Makefile 和 IDE 项目文件。以下是编译 OpenCV 的步骤: 1. 在 Jetson Nano 上安装 CMake: sudo apt-get install cmake 2. 克隆 OpenCV 源代码: git clone https://github.com/opencv/opencv.git 3. 在 OpenCV 源代码目录中创建一个 build 目录: mkdir build cd build 4. 使用 CMake 配置 OpenCV 编译: cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local \ -D WITH_CUDA=ON -D CUDA_ARCH_BIN="5.3" -D CUDA_ARCH_PTX="" \ -D WITH_GSTREAMER=ON -D BUILD_opencv_python3=ON \ -D PYTHON3_EXECUTABLE=/usr/bin/python3 \ -D PYTHON3_INCLUDE_DIR=/usr/include/python3.6 \ -D PYTHON3_LIBRARY=/usr/lib/aarch64-linux-gnu/libpython3.6m.so \ -D PYTHON3_NUMPY_INCLUDE_DIRS=/usr/lib/python3/dist-packages/numpy/core/include \ -D BUILD_EXAMPLES=OFF .. 其中,WITH_CUDA 选项启用 CUDA 支持。在 Jetson Nano 上,我们需要指定 CUDA 架构的版本,这里选为“5.3”。WITH_GSTREAMER 选项启用了 GStreamer 支持。BUILD_opencv_python3 选项启用了 Python 绑定。PYTHON3_EXECUTABLE,PYTHON3_INCLUDE_DIR 和 PYTHON3_LIBRARY 分别指定 Python3 可执行文件的路径,Python3 头文件的路径和 Python3 库文件的路径。PYTHON3_NUMPY_INCLUDE_DIRS 指定 NumPy 头文件的路径。 5. 使用 make 命令编译 OpenCV: make -j4 其中,“-j4”选项告诉 make 使用 4 个线程进行编译,以加快编译速度。 6. 使用 make 命令安装 OpenCV: sudo make install 最后一步将安装 OpenCV 到 /usr/local 目录下。接下来,我们可以使用 Python 测试 OpenCV 是否成功编译,并且支持 GStreamer: 1. 检查 OpenCV 版本: import cv2 print(cv2.__version__) 如果输出为 4.5.5,则表示 OpenCV 成功安装。 2. 检查 GStreamer 的支持是否正常: import cv2 print(cv2.getBuildInformation()) 如果在输出信息中看到了“GStreamer”,则表示成功编译支持 GStreamer 的 OpenCV-Python。 总结: Jetson Nano 是一个出色的嵌入式计算机,支持 OpenCV 和 GStreamer。手动编译 OpenCV-Python 4.5.5 并支持 GStreamer,需要先安装 JetPack SDK 和 GStreamer 插件。然后,通过编译源代码并使用 CMake 工具进行配置,可以快速地编译出支持 GStreamer 的 OpenCV 库。最后,我们可以使用 Python 进行测试,以确保 OpenCV 和 GStreamer 的支持正常。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值