gstreamer 基础知识

Gstreamer 基础知识

1. Gstreamer 组件

  • 创建一个 Gstelement 办法是借助于GstElementFactory 工厂对象。
// mad 是工厂对象的名称 decoder 是创建出element 的名字。
element = gst_element_factory_make("mad","decoder")
if (!element)
{
	g_print("Faild to create element of type mad. \n")
}
  • 销毁一个 Gstelement , 当创建的element 不再使用时 需要及时销毁并释放资源。此时需要借用gst_element_unref() 函数释放占用的资源。

    gst_element_unref(element);
    
  • 对 组件的属性的操作

    Gstreamer 使用了与Gobject 相同的机制来对属性进行管理,包括查询,设置,和读取。

    • 对 name 属性的操作

      gst_object_set_name()
      gst_object_get_name()
      g_object_get(GST_OBJECT(element),"name",&name,NULL);
      

2. Bin 柜子

bin 是一组 element 的容器。 可以利用容器特性 把多个元件组合成一个逻辑单元。

在Gstreamer 应用程序中 常用的两种Bin 为:

  • GstPipeline
  • GstThread 线程

1 如何创建 一个 Bin

pipeline = gst_pipeline_new("pipeline_name")
GstElement *bin;
bin = gst_element_factory_make("mad","decoder");
gst_bin_add(GST_BIN(bin),element);

2 如何把元素添加进 Bin 中。

gst_bin_add();

3 在箱柜中查询特定的原件。

gst_bin_get_by_name(GST_BIN(bin),"decoder");

4 如何将元素从柜子中移除。

gst_bin_remove(GST_BIN(bin),element);

3 Pad(接头)

pad 是element 连接时 夹在中间的 数据滤网。

[src]![sink  src]![sink]
  • 如何给一个Element获取一个pad

    Gstpad* srcpad;
    srcpad = gst_element_get_pad(element,"src");
    
    
  • 查询element 中所有的pad

    GList* pads;
    pads = gst_element_get_pad_list(element);
    while(pads)
    {
    	GstPad *pad = GST_PAD(pads->data);
    
    }
    
posted @ 2023-02-03 15:52  北流鱼  阅读(300)  评论(0编辑  收藏  举报