gstream编程入门

手动创建一个管道

1.初始化gstreamer: gst_init();

2.创建source,sink, 和pipeline gst_element_factory_make & gst_pipeline_new

3.管道中加入元件,并建立元件间的联系:gst_bin_add_many && gst_element_link

4.设置元件的属性,启动管道的状态:g_object_set && gst_element_set_state

5.获取管道的总线,并等待信号:gst_element_get_bus && gst_bus_timed_pop_filtered

6.解析信号,执行对应的操作:GST_MESSAGE_TYPE (msg)

7.释放资源:gst_object_unref


 

动态管道

4.设置元件属性之后,设置信号连接机制,原元件产生数据,创建源衬垫,触发回调。

4.1 回调函数:

g_signal_connect (data.source, "pad-added", G_CALLBACK (pad_added_handler), &data); //(GstElement *src, GstPad *new_pad, CustomData *data) 

src是触发信号的GstElement,作为连接的唯一信号;new_pad是源元件的 GstPad 。这通常是我们想要pad的一端。数据是我们连接到信号时提供的指针。

4.2 获得新pad: gst_element_get_static_pad

4.3 判断生成的衬垫是否被连接:gst_pad_is_linked (sink_pad)

4.4 获取源衬垫的功能(返回结构体),只取音频的结构体,并重命名。判断是不是音频的衬垫,

4.5 尝试链接gst_pad_link(new_pad, sink_pad)

4.6 释放两个衬垫。

你可能感兴趣的:(gstream编程入门)