Skip to content

Instantly share code, notes, and snippets.

@tetkuz
Created March 19, 2018 13:35
Show Gist options
  • Save tetkuz/58b411a8c70f041951c41e4c65e03ec3 to your computer and use it in GitHub Desktop.
Save tetkuz/58b411a8c70f041951c41e4c65e03ec3 to your computer and use it in GitHub Desktop.
Display Parrot MAMBO FPV

Display Parrot MAMBO FPV

GStremaer を使って MAMBO の rtsp ストリーミングを見る2つの方法を紹介します。

  • コマンドラインでパイプラインを作って、見る
  • アプリをビルドして、見る

どちらも GStreamer のインストールが必要です。コマンドラインを使った方法の方が簡単です。

GStreamer のインストール

Linux, Windows, MacOS で可能ですが Linux が一番簡単です。

Linux でのインストール方法

https://gstreamer.freedesktop.org/documentation/installing/on-linux.html

Linux 以外のインストール方法

https://gstreamer.freedesktop.org/documentation/installing/index.html

Debian の場合

sudo apt install gstreamer1.0

コマンドラインでパイプラインを作って、見る

gst-launch-1.0 rtspsrc location=rtsp://192.168.99.1/media/stream2 ! rtph264depay ! h264parse ! avdec_h264 ! videoconvert ! autovideosink sync=false

アプリをビルドして、見る

コンパイル

$ gcc main.c -o mambo-fpv `pkg-config --cflags --libs gstreamer-1.0`

実行

$ mambo-fpv
#include <gst/gst.h>
int main(int argc, char *argv[]) {
GstElement *pipeline;
GstBus *bus;
GstMessage *msg;
/* Initialize GStreamer */
gst_init (&argc, &argv);
/* Build the pipeline */
pipeline = gst_parse_launch ("rtspsrc location=rtsp://192.168.99.1/media/stream2 ! rtph264depay ! h264parse ! avdec_h264 ! videoconvert ! autovideosink sync=false", NULL);
/* Start playing */
gst_element_set_state (pipeline, GST_STATE_PLAYING);
/* Wait until error or EOS */
bus = gst_element_get_bus (pipeline);
msg = gst_bus_timed_pop_filtered (bus, GST_CLOCK_TIME_NONE, GST_MESSAGE_ERROR | GST_MESSAGE_EOS);
/* Free resources */
if (msg != NULL)
gst_message_unref (msg);
gst_object_unref (bus);
gst_element_set_state (pipeline, GST_STATE_NULL);
gst_object_unref (pipeline);
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment