GStreamer应用程序——初始化

1,构建一个应用程序

在这些章节中,我们将讨论GStreamer的基本概念和最常用的对象,例如元素、pads 和缓冲区。我们将使用这些对象的可视化表示,以便我们可以可视化您稍后将学习构建的更复杂的管道。您将首先了解GStreamer API,这应该足以构建基本应用程序。在本部分的后面,您还将学习构建基本的命令行应用程序。

请注意,这部分将介绍GStreamer的低级API和概念。一旦您要构建应用程序,您可能希望使用更高级别的API。

2,初始化GStreamer

编写GStreamer应用程序时,您可以简单地包含gst/gst.h 访问库函数。除此之外,您还需要 初始化GStreamer库。

2.1,简单初始化

在使用GStreamer库之前,必须调用gst_init 从主应用程序。此调用将执行必要的初始化库以及解析特定于GStreamer的命令行选项。

一个典型的程序 将包含如下所示的初始化GStreamer的代码:

#include <stdio.h>
#include <gst/gst.h>

int
main (int   argc,
      char *argv[])
{
  const gchar *nano_str;
  guint major, minor, micro, nano;

  gst_init (&argc, &argv);

  gst_version (&major, &minor, &micro, &nano);

  if (nano == 1)
    nano_str = "(CVS)";
  else if (nano == 2)
    nano_str = "(Prerelease)";
  else
    nano_str = "";

  printf ("This program is linked against GStreamer %d.%d.%d %s\n",
          major, minor, micro, nano_str);

  return 0;
}

使用 GST_VERSION_MAJOR、GST_VERSION_MINOR 和 GST_VERSION_MICRO 宏可以获取你正在构建的 GStreamer 版本,或者使用 gst_version 函数来获取你的应用程序链接的版本。GStreamer 目前使用一种方案,即具有相同主版本和次版本号的版本在 API 和 ABI 上是兼容的。

还可以调用带有两个 NULL 参数的 gst_init 函数,在这种情况下,GStreamer 不会解析任何命令行选项。

2.2,GOption的接口

您还可以使用 GOption 表来初始化自己的参数,如下例所示:

#include <gst/gst.h>

int
main (int   argc,
      char *argv[])
{
  gboolean silent = FALSE;
  gchar *savefile = NULL;
  GOptionContext *ctx;
  GError *err = NULL;
  GOptionEntry entries[] = {
    { "silent", 's', 0, G_OPTION_ARG_NONE, &silent,
      "do not output status information", NULL },
    { "output", 'o', 0, G_OPTION_ARG_STRING, &savefile,
      "save xml representation of pipeline to FILE and exit", "FILE" },
    { NULL }
  };

  ctx = g_option_context_new ("- Your application");
  g_option_context_add_main_entries (ctx, entries, NULL);
  g_option_context_add_group (ctx, gst_init_get_option_group ());
  if (!g_option_context_parse (ctx, &argc, &argv, &err)) {
    g_print ("Failed to initialize: %s\n", err->message);
    g_clear_error (&err);
    g_option_context_free (ctx);
    return 1;
  }
  g_option_context_free (ctx);

  printf ("Run me with --help to see the Application options appended.\n");

  return 0;
}

如本段所示,您可以使用 GOption 表来定义您的应用程序特定的命令行选项,并将此表与 gst_init_get_option_group 函数返回的选项组一起传递给 GLib 初始化函数。除了标准的 GStreamer 选项之外,您的应用程序选项也将被解析。

  1. 此示例的代码是从文档中自动提取出来的,并在GStreamer tarball 中的tests/examples/manual下构建。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值