首页 > 其他分享 >gstreamer 基础知识

gstreamer 基础知识

时间:2023-02-03 16:01:29浏览次数:58  
标签:bin gst gstreamer GST element pad 基础知识 name

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);
    
    }
    

标签:bin,gst,gstreamer,GST,element,pad,基础知识,name
From: https://www.cnblogs.com/ryzemagic/p/17089541.html

相关文章

  • 数据库:事务基础知识
    事务概述存储引擎支持情况可以使用SHOWENGINES命令查看Mysql支持事务的存储引擎有哪些。Mysql中只有InnoDB支持事务。基本概念事务:一组逻辑操作单元,使数据从一种状......
  • 《区块链基础知识25讲》-第六讲-所有权
    区块链可以用来管理和区分所有权所有权证明三要素对所有者的证明对事物被拥有的证明提供一个所有者与事物之间的连接区块链是一个能够被任何人访问,拥有类似账本功能的巨大去......
  • 《区块链基础知识25讲》-第七讲-双花问题
    三种含义复制数字产品引起的问题去中心化的点对点分布式账本种可能存在的问题完全分布式点对点系统种违反完备性的一个例子双花问题可以看作是去中心化点对点系统中数据一......
  • 《区块链基础知识25讲》-第二十三讲-重构区块链
    区块链的主要冲突透明度与隐私(读取区块链数据的操作)一方面需要透明度来明确所有权,另一方面系统用户又需要有一定的隐私安全与速度(向区块链写入数据的操作)哈希难题的解决减......
  • 《区块链基础知识25讲》-第十七讲-点对点系统中数据的存储与分发
    目标区块链可看作纯粹用于实现所有权管理的分布式点对点系统,由独立的计算机组成,旨在维护存储着完整历史交易记录的账本本讲的目标就是确保组成这个点对点系统的独立计算机知......
  • PostgreSQL学习笔记-7.基础知识:子查询、自增、PRIVILEGES 权限
    子查询子查询或称为内部查询、嵌套查询,指的是在PostgreSQL查询中的WHERE子句中嵌入查询语句。一个SELECT语句的查询结果能够作为另一个语句的输入值。子查询可以与......
  • 【基础知识笔记】014 函数文件的定义和调用
    1.函数文件的基本结构1.1定义函数function输出形参表=函数名(输入形参表)注释说明部分函数体语句end当输出形参多于一个时,应该用方括号括起来,构成一个输出矩阵......
  • 【基础知识笔记】017 数组和矩阵的操作-上
    数组是MATLAB数据进行存储和处理的基本形式。矩阵是特殊形式的数组。数组与矩阵的操作是MATLAB语言的基础与特色所在1.数组(矩阵)的生成1.1直接生成矩阵的生成可以通......
  • 【基础知识笔记】021 三维数据可视化
    1-1曲线图绘制与二维绘图命令类似,在三维坐标下有三维的基本绘图命令plot3,其使用方法与plot相仿。plot3的调用格式如下。格式一:\(plot3(x,y,z)\)若\(x,y,z\)为相同......
  • 【基础知识笔记】020 二维数据可视化
    1.图形绘制基础1.1离散数据及离散函数一个二元实数标量对\((x_0,y_0)\)可以用平面上的点来表示,一个二元实数标量组\([(x_1,y_1)(x_2,y_2)…(x_n,y_n)]\)可以用平面上......