Sunday, December 6, 2015

GStreamer でプログラミング 1 (Pipeline と Parse )

GStreamerの Advent Calendarに誘われたので、ちょっとだけ書いてみます。

GStreamer は、gst-launch というデバッグ用ツールでも簡単にパイプラインを構成できて、とても便利です。しかし、GStreamerの本当の力は、ライブラリーを使ってプログラムを書いたときに見えてくると思います。そこで、このシリーズではマルチメディアデータを使わずに、GStreamer の素晴らしさを紹介してみたいと思います。

まずは、「CoreElements について」でも紹介されている、 videotestsrc を使った例をコードにしてみます。

gst-launch-1.0 videotestsrc ! autovideosink

と同じことをするコードです。

#include <gst/gst.h>
int main(int argc, char *argv[])
{
GMainLoop *mainloop;
GstElement *pipeline;
GError *error = NULL;
gst_init(&argc, &argv);
mainloop = g_main_loop_new(NULL, FALSE);
pipeline = gst_parse_launch("videotestsrc ! autovideosink", &error);
gst_element_set_state(pipeline, GST_STATE_PLAYING);
g_main_loop_run(mainloop);
return 0;
}
view raw test.c hosted with ❤ by GitHub

結構簡単に C のコードになりそうです。

  1. gst_init() で、初期化
  2. main loop 作成
  3. pipeline 作成
  4. 再生
  5. main loop入る

で、 gst-launch 版と同じような動作をするプログラムが書けました。

No comments:

Post a Comment