Skip to content

Share video, screen, camera and audio with an RTSP stream through Lan or Wan supporting CUDA computations in a High Performance embedded environment (Nvidia Jetson Nano), applying real-time AI techiques of Intrusion Detection with bounding boxes localization and frames manipulations.

Notifications You must be signed in to change notification settings

Werther158/multimedia_sharing_tool

Repository files navigation

Multimedia Sharing Tool

Share video, screen, camera and audio with an RTSP stream through Lan or Wan supporting CUDA computations in a High Performance embedded environment (Nvidia Jetson Nano), applying real-time AI techiques of Intrusion Detection with bounding boxes localization and frames manipulations.

A demonstration video can be found here: https://www.youtube.com/watch?v=gbF5GQyb1T8
NV Developer Jetson Projects forum post: https://devtalk.nvidia.com/default/topic/1065923/jetson-projects/multimedia-sharing-tool-a-jetson-nano-project/

External Dependencies:

Before installing dependencies:

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install gcc
$ sudo apt-get install cmake
$ sudo apt-get install git
$ sudo apt-get install libgtk2.0-dev

QT Creator

On ARM architectures: sudo apt-get install qt5-default qtcreator -y
Other architectures: QT Home Page

CUDA (Jetson users)

Add the CUDA directory to $PATH

$ export PATH=${PATH}:/usr/local/cuda/bin
$ export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/cuda/lib64

CUDA (Non Jetson users)

  1. Update your Nvidia GPU driver with the latest Nvidia proprietary one
  2. Install CUDA Toolkit following the CUDA Installation Guide

cURL development library

$ sudo apt-get install libcurl4-openssl-dev

NVIDIA TensorRT (if not already installed or preinstalled)

TensorRT Installation Guide

Jetson-inference library

  1. (Non Jetson users only) Copy glibconfig.h header to /usr/include/glib-2.0/
$ sudo cp /usr/lib/x86_64-linux-gnu/glib-2.0/include/glibconfig.h /usr/include/glib-2.0/glibconfig.h
  1. Follow the Build instructions from the Jetson-inference GitHub page.
    N.B. (Non Jetson users only)
    Once downloaded the Jetson-inference library and before building the project, check that inside CMakeLists.txt your GPU architecture is specified (e.g. -gencode arch=compute_62,code=sm_62). Otherwise add it.
    A list of Nvidia GPU architectures could be found here

FFmpeg

$ sudo apt-get install ffmpeg

CUDA Enabled OpenCV with Contrib

  1. Remove any previous installations of x264
$ sudo apt-get remove x264 libx264-dev
  1. (Jetson Nano only) Set a swap file to allow the system to use more than 4 GB of RAM
    A swap file installer could be found here

  2. Install OpenCV dependencies

$ sudo apt-get install build-essential checkinstall cmake pkg-config yasm
$ sudo apt-get install git gfortran
$ sudo apt-get install libjpeg8-dev libjasper-dev libpng12-dev
$ sudo apt-get install libtiff5-dev
$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev
$ sudo apt-get install libxine2-dev libv4l-dev
$ sudo apt-get install libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev
$ sudo apt-get install libqt4-dev libtbb-dev
$ sudo apt-get install libatlas-base-dev
$ sudo apt-get install libfaac-dev libmp3lame-dev libtheora-dev
$ sudo apt-get install libvorbis-dev libxvidcore-dev
$ sudo apt-get install libopencore-amrnb-dev libopencore-amrwb-dev
$ sudo apt-get install x264 v4l-utils
  1. Clone opencv and opencv_contrib version 3.4.7 repository
$ git clone -b 3.4.7 https://github.com/opencv/opencv
$ git clone -b 3.4.7 https://github.com/opencv/opencv_contrib
  1. Make a directory i.e. build inside opencv directory, build and install the library
$ mkdir build
$ cd build
$ cmake -D CMAKE_BUILD_TYPE=RELEASE \
 -D CMAKE_INSTALL_PREFIX=/usr/local \
 -D WITH_CUDA=ON \
 -D ENABLE_FAST_MATH=1 \
 -D CUDA_FAST_MATH=1 \
 -D WITH_CUBLAS=1 \
 -D INSTALL_PYTHON_EXAMPLES=ON \
 -D INSTALL_C_EXAMPLES=OFF \
 -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
 -D PYTHON_EXECUTABLE=~/.virtualenvs/cv/bin/python \
 -D WITH_GTK=ON \
 -D ENABLE_PRECOMPILED_HEADERS=OFF \
 -D BUILD_opencv_cudacodec=OFF \
 -D BUILD_EXAMPLES=ON ..
$ nproc
# use the number that nproc returns which is the number of cores of your processor. Let's say it returns 4.
$ make -j4
$ sudo make install

Building the project:

  1. Clone the project
$ git clone https://github.com/Werther158/multimedia_sharing_tool
  1. Open the .pro file with QT Creator
  2. Set multimedia_sharing_tool/build/debug and multimedia_sharing_tool/build/release as debug and release directories
  3. Build the project

About

Share video, screen, camera and audio with an RTSP stream through Lan or Wan supporting CUDA computations in a High Performance embedded environment (Nvidia Jetson Nano), applying real-time AI techiques of Intrusion Detection with bounding boxes localization and frames manipulations.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published