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.
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
sudo cp config_templates/Nimble/rules.conf /etc/nimble/rules.conf
sudo service nimble restart
sudo service nimble status
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
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:
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
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
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.