Skip to content

Nimble Streamer Setup for Live Video Streaming

This guide describes basic installation and configuration of Nimble Streamer media server.
Nimble Streamer is free (but not open source) media server. For advanced configuration you can use its user-friendly WMSPanel. Here is the original installation guide.

Installation

For Ubuntu 16.04 run

echo 'deb http://nimblestreamer.com/ubuntu xenial/' | sudo tee --append /etc/apt/sources.list
wget -q -O - http://nimblestreamer.com/gpg.key | sudo apt-key add - 
sudo apt-get update && sudo apt-get install nimble -y
Copy config file
sudo cp config_templates/Nimble/rules.conf /etc/nimble/rules.conf
Restart Nimble service
sudo service nimble restart
Check if it runs OK
sudo service nimble status
By default, Nimble Streamer will start automatically at system startup.
If you need to disable autostart, run this command
sudo service nimble disable

Nimble Streamer uses port 8081 for HTML5 websocket player. It can be changed in /etc/nimble/nimble.conf If you want to use Nginx server as a reverse proxy for Nimble Streamer, find more info in Advanced Installation page.

Streaming live video

After you have your Nimble Streamer up and running, you can stream and view your live video.

Configure your device to stream to:

RTSP: rtsp://YOUR_DOMAIN_OR_IP:554/vs/test_video_1
or RTMP: rtmp://YOUR_DOMAIN_OR_IP:1935/vs/test_video_1

Replace YOUR_DOMAIN_OR_IP with your server's configured domain name or IP address.
Instead of test_video_1 you can use whatever you like, this is a unique ID of a stream.

Streaming test video with GStreamer

If you don't have a camera or drone ready, it is possible to stream test video with GStreamer.

First install necessary packages along with GStreamer and its plugins (on the same server or any other suitable device)

sudo apt-get install -y autoconf automake libtool pkg-config libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-tools gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly
Then set your streaming endpoint to the environment variable

STREAM_URL="rtmp://YOUR_DOMAIN_OR_IP:1935/vs/test_video_1"

And run GStreamer with test video

gst-launch-1.0 videotestsrc is-live=true ! \
        clockoverlay halignment=right valignment=bottom text="video test" shaded-background=true font-desc="Sans, 32" ! \
        videoconvert ! videoscale ! videorate ! x264enc bitrate=500 tune=zerolatency ! video/x-h264 ! h264parse config-interval=1 ! \
        video/x-h264 ! queue ! flvmux name=mux ! \
        rtmpsink location="$STREAM_URL live=1" \
        audiotestsrc is-live=true ! audioconvert ! audiorate ! audioresample ! audio/x-raw,rate=48000 ! \
        voaacenc bitrate=24000 ! audio/mpeg ! aacparse ! audio/mpeg, mpegversion=4 ! mux.

Test video stream comes with current time overlay, so it's easy to estimate video latency.

View live video in GCS.uno web control panel

In a drone's settings form use the following URL pattern for video stream URLs:

SSL connection: wss://YOUR_DOMAIN_OR_IP/vs/test_video_1
No SSL: ws://YOUR_DOMAIN_OR_IP:8081/vs/test_video_1

View live video in QGroundControl or any RTMP or RTSP player

To view video, you can use QGroundControl (the lowest latency) or any desktop or mobile video player with RTSP or RTMP playback capabilities (e.g. VLC). Set them to play the RTSP stream with the following URL

rtsp://YOUR_DOMAIN_OR_IP:554/vs/test_video_1

Info

You can broadcast and view multiple streams with different IDs simultaneously. One stream can be viewed by multiple users. The overall number of publishers and viewers depends on your server performance.

Continue with:
Live video streaming with Wowza Cloud Streaming
Advanced Installation (Custom domain with SSL)
GCS.uno server dashboard overview