Skip to content

Instantly share code, notes, and snippets.

@santiagovdk
Forked from neilyoung/receipt4.md
Last active February 9, 2023 20:26
Show Gist options
  • Save santiagovdk/80c378a315722a1b813ae5da1661f890 to your computer and use it in GitHub Desktop.
Save santiagovdk/80c378a315722a1b813ae5da1661f890 to your computer and use it in GitHub Desktop.
How to make an Ubuntu 18.04 an RTSP streamer and how to consume that?

How to make an Ubuntu 18.04 server an RTSP streamer and how to consume that?

Prerequisites

Using a fresh Ubuntu 18.04 server install you may need to enable ssh.

sudo apt update
sudo apt upgrade
sudo ufw allow ssh

It is recommended to to the following steps in a new VM in order to not accidently mess up an existing installation!

sudo apt-get install build-essential
sudo apt-get install bison
sudo apt-get install flex
sudo apt-get install libglib2.0-dev
sudo apt install libssl-dev
sudo apt-get install libx264-devw
sudo apt install libffi-dev libssl-dev
sudo apt-get install python3
sudo apt-get install python3-pip

Get the required GStreamer sources from https://gstreamer.freedesktop.org/src/. Focus on version 1.16.2

  1. Download & follow order

    1. gstreamer https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.16.2.tar.xz
    2. gst-plugins-base https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-1.16.2.tar.xz
    3. gst-plugins-good https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-1.16.2.tar.xz
    4. gst-plugins-bad https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.16.2.tar.xz
    5. gst-plugins-ugly https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.16.2.tar.xz
    6. gst-libav https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-1.16.2.tar.xz
    7. gst-rtsp-server https://gstreamer.freedesktop.org/src/gst-rtsp/gst-rtsp-server-1.16.2.tar.xz
  2. Unpack tar.xz files

tar -xf <filename>
  1. Change into each of the unpacked dirs
  2. Execute these commands in each directory
./configure
make
sudo make install
  1. Change into gst-rtsp-server-1.16.2/examples

Running a test image

./test-launch --gst-debug=3 '( videotestsrc ! x264enc ! rtph264pay name=pay0 pt=96 )'

Using /dev/video0 and H.264 software encoder Use VLC lo check the RTSP feed.

Install docker

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER

sudo pip3 install docker-compose
./test-launch  --gst-debug=3 '( v4l2src device=/dev/video0 ! video/x-raw,width=640,height=480,framerate=30/1 ! x264enc tune="zerolatency" byte-stream=true bitrate=2000 ! rtph264pay name=pay0 pt=96 )'

If your camera exposes H.264 directly (ways less CPU power required)

./test-launch  --gst-debug=0 '( v4l2src device=/dev/video0 ! video/x-h264,width=640,height=480,framerate=30/1 ! h264parse ! rtph264pay name=pay0 pt=96 )'

Consume the stream on a Mac, replace ip-of-rtsp-server by the real IP (GStreamer installation required)

/Library/Frameworks/GStreamer.framework/Commands/gst-launch-1.0 -v rtspsrc location=rtsp://<ip-of-rtsp-server>:8554/test latency=0 buffer-mode=auto ! decodebin ! videoconvert ! osxvideosink sync=false

Consume on a Linux system, replace ip-of-rtsp-server by the real IP (GStreamer installation required)

gst-launch-1.0 -v rtspsrc location=rtsp://<ip-of-rtsp-server>:8554/test latency=0 buffer-mode=auto ! decodebin ! videoconvert ! autovideosink sync=false
@idoudika
Copy link

Hello,
Try to compile gst-plugins-bad1.16.2 from sources returns the error on Ubuntu 18.04 . Any ideas ?

make[3]: Entering directory '/home/kaleido/Documents/MobyRTSP/doc/gst-plugins-bad-1.16.2/sys/nvdec'
CC libgstnvdec_la-gstnvdec.lo
In file included from nvcuvid.h:38:0,
from gstnvdec.h:33,
from gstnvdec.c:32:
cuviddec.h:39:10: fatal error: cuda.h: No such file or directory
#include <cuda.h>
^~~~~~~~
compilation terminated.
Makefile:875: recipe for target 'libgstnvdec_la-gstnvdec.lo' failed
make[3]: *** [libgstnvdec_la-gstnvdec.lo] Error 1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment