Gstreamer应用开发实战指南(三)

一、基于GStreamer的应用程序初始化

        元素,pad和缓冲区是GStreamer的基本概念和最常用的对象。我们使用这些对象的可视化表示形式,以便于后面可以简单地构建的更复杂的管道。初步了解GStreamer API以后,基本上足够我们构建基本应用程序了,下面介绍一下基于GStreamer的应用程序的构建过程。

1、初始化GStreamer

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

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

一个典型的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 and GST_VERSION_MICRO 宏获取您正在构建的GStreamer版本,或使用函数 gst_version获取您的应用程序链接所依据的版本。

GStreamer目前使用的方案中,主版本和次版本相同的版本与API和ABI兼容。

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

2、GOption接口

        除以上方法外,我们还可以使用GoOption表初始化自己的参数,如下一个示例所示:

#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 选项之外,还将解析您的应用程序选项。

        此示例的代码自动从文档中提取,并在GStreamer tarball中的tests/examples/manual下构建。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大王算法

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值