gstreamer 开发 (1)

如何使用gstreamer

Gstreamer 提供了一组开发多媒体应用的APIS,基于APIs 我们可以开发大量的多媒体应用。

通过Gstreamer也提供了gst-launch 我们可以很简单的将gstreamer的elements串联起来,不需要些任何的code ,实现基本的多媒体功能。

 

Gstreamer 使用的开发语言

gstreamer 通过C语言实现,主要遵循GLIB的对象系统GObject。

总认为应该使用c++来实现,但是这些人那。

 

core 与 plugins 分别实现原则。

core 实现基本的功能。

plugins 基于core 扩展实现。

 

gstreamer 的基本元素

 

element

在gstreamer中是最基本也是最重要元素。

在gstreamer我们最经常做的一件事情就是将elements连接起来形成一条链条,

然后数据会沿着链条依次处理。

每一个element都会有一个具体的功能,比如读取数据,解码数据,输出数据等等。

通过连接多个这样的elements,我们就会创建出一个链条(pipeline)并通过链条完成具体的功能。

gstreamer 提供了大量的elements,通过这些elements我们可以实现各种多媒体应用。

如果我们想自己实现elements完成特定的功能,gstreamer可以通过实现新的plugins来实现。

 

pad

elements 在形成pipeline时,需要通过pads 来协商是否能连接到一起。 我们不能把音频的解码element 连接到 overlay上。

所以在gstreamer 中通过pads 来描述elements的输入和输出特性。

pads会描述那些数据是可以通过elements处理和那些数据是可能被elements生成的。

Pad通过一种方法(caps negotiation) 来协商2个elements 之间是否可以连接,处理响应的数据。

 

bin 和 pipeline

bin 本身也是element,不过bin 也可以是一组 elements,当是一组elements的时候,可以简化程序的设计,

因为当对bin操作的时候,相当于对一组的elements设置状态。

pipeline 是top-level的bin,一个运行的程序必须有一个pipeline,当我们启动程式的时候,pipeline 会启动一个线程和一个bus。

我们可以通过bus 向线程发送指令。

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值