Commit a7002b3c authored by Gus Grubba's avatar Gus Grubba Committed by GitHub

Update README.md

parent 9c771d6c
...@@ -2,14 +2,14 @@ ...@@ -2,14 +2,14 @@
## Video Streaming ## Video Streaming
For supported platforms, QGroundControl implements an UDP RTP video streaming receiver in its Main Flight Display. It uses GStreamer and a stripped down version of QtGstreamer. For supported platforms, QGroundControl implements an UDP RTP and RSTP video streaming receiver in its Main Flight Display. It uses GStreamer and a stripped down version of QtGstreamer. We've standardized on **GStreamer 1.5.2**. It has been reliable and we will be using it until a reason to change it surfaces. Newer versions of GStreamer will break the build as some dependent libraries changed.
To build video streaming support, you will need to install the GStreamer development packages for the desired target platform. To build video streaming support, you will need to install the GStreamer development packages for the desired target platform.
If you do have the proper GStreamer development libraries installed where QGC looks for it, the QGC build system will automatically use it and build video streaming support. If you would like to disable video streaming support, you can add **DISABLE_VIDEOSTREAMING** to the **DEFINES** build variable. If you do have the proper GStreamer development libraries installed where QGC looks for it, the QGC build system will automatically use it and build video streaming support. If you would like to disable video streaming support, you can add **DISABLE_VIDEOSTREAMING** to the **DEFINES** build variable.
### Pipeline ### Pipeline
For the time being, the pipeline is somewhat hardcoded, using h.264. It's best to use a camera capable of hardware encoding h.264, such as the Logitech C920. On the sender end, you would run something like this: For the time being, the pipeline is somewhat hardcoded, using h.264. It's best to use a camera capable of hardware encoding h.264, such as the Logitech C920. On the sender end, for RTP (UDP Streaming) you would run something like this:
``` ```
gst-launch-1.0 uvch264src initial-bitrate=1000000 average-bitrate=1000000 iframe-period=1000 device=/dev/video0 name=src auto-start=true src.vidsrc ! video/x-h264,width=1920,height=1080,framerate=24/1 ! h264parse ! rtph264pay ! udpsink host=xxx.xxx.xxx.xxx port=5600 gst-launch-1.0 uvch264src initial-bitrate=1000000 average-bitrate=1000000 iframe-period=1000 device=/dev/video0 name=src auto-start=true src.vidsrc ! video/x-h264,width=1920,height=1080,framerate=24/1 ! h264parse ! rtph264pay ! udpsink host=xxx.xxx.xxx.xxx port=5600
...@@ -31,7 +31,7 @@ gst-launch-1.0 udpsrc port=5600 caps='application/x-rtp, media=(string)video, cl ...@@ -31,7 +31,7 @@ gst-launch-1.0 udpsrc port=5600 caps='application/x-rtp, media=(string)video, cl
Use apt-get to install GStreamer 1.0 Use apt-get to install GStreamer 1.0
``` ```
sudo apt-get install libgstreamer-plugins-base1.0-dev libgstreamer1.0-0:amd64 libgstreamer1.0-dev libgstreamer-plugins-bad1.0 sudo apt-get install gstreamer1.0*
``` ```
The build system is setup to use pkgconfig and it will find the necessary headers and libraries automatically. The build system is setup to use pkgconfig and it will find the necessary headers and libraries automatically.
...@@ -53,23 +53,24 @@ export PATH=$PATH:/Library/Frameworks/GStreamer.framework/Commands ...@@ -53,23 +53,24 @@ export PATH=$PATH:/Library/Frameworks/GStreamer.framework/Commands
### iOS ### iOS
TODO: Binaries found in http://gstreamer.freedesktop.org/data/pkg/ios Download the gstreamer framework from here: http://gstreamer.freedesktop.org/data/pkg/ios
(work in progress)
The installer places them under ~/Library/Developer/GStreamer/iPhone.sdk/GStreamer.framework, which is where the QGC build system will look for it. That's all that is needed. When you build QGC and it finds the gstreamer framework, it automatically builds video streaming support.
### Android ### Android
Binaries found in http://gstreamer.freedesktop.org/data/pkg/android Binaries found in http://gstreamer.freedesktop.org/data/pkg/android
Download the [gstreamer-1.0-android-armv7-1.5.2.tar.bz2](http://gstreamer.freedesktop.org/data/pkg/android/1.5.2/gstreamer-1.0-android-armv7-1.5.2.tar.bz2) archive (assuming you want the ARM V7 platform). Download the [gstreamer-1.0-android-armv7-1.5.2.tar.bz2](http://gstreamer.freedesktop.org/data/pkg/android/1.5.2/gstreamer-1.0-android-armv7-1.5.2.tar.bz2) archive (assuming you want the ARM V7 platform. For x86, replace `armv7` with `x86` accordingly).
Create a directory named "gstreamer-1.0-android-armv7-1.5.2" under the root qgroundcontrol directory (the same directory qgroundcontrol.pro is located). Extract the gstreamer tar file under this directory. That's where the build system will look for it. Make sure your archive tool doesn't create any additional top level directories. The structure after extracting the archive should look like this: Create a directory named "gstreamer-1.0-android-armv7-1.5.2" under the root qgroundcontrol directory (the same directory qgroundcontrol.pro is located). Extract the gstreamer tar file under this directory. That's where the build system will look for it. Make sure your archive tool doesn't create any additional top level directories. The structure after extracting the archive should look like this:
```
qgroundcontrol qgroundcontrol
├── gstreamer-1.0-android-armv7-1.5.2 ├── gstreamer-1.0-android-armv7-1.5.2
│   ├── etc │   ├── etc
│   ├── include │   ├── include
│   ├── lib │   ├── lib
│   └── share │   └── share
```
### Windows ### Windows
Download the gstreamer framework from here: http://gstreamer.freedesktop.org/data/pkg/windows. Supported version is 1.5.2. QGC may work with newer version, but it is untested. Download the gstreamer framework from here: http://gstreamer.freedesktop.org/data/pkg/windows. Supported version is 1.5.2. QGC may work with newer version, but it is untested.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment