gstreamer

手动创建一个管道

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 释放两个衬垫。

 

android:   Android平台下GStreamer SDK使用实践  :  

gstAndroidRoot=D:/mind_file/Android10/gstreamer-1.0-android-universal-1.16.1

基于Gstreamer的实时视频流的分发
gstreamer的rtsp推流
实现:https://www.cnblogs.com/kkia/p/3806520.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值