Gstreamer-基础

介绍gstreamer的基础概念。

Elements

element是gstreamer中最重要的对象类。通常,你将创建一条由多个element链接到一起而组成的链路,并让数据流从该这链路通过。 一个element具有一项特定功能,可以是从文件中读取数据,对该数据进行解码或将该数据输出到您的声卡(或其他任何东西)。 通过将几个这样的element链接在一起,可以创建一个pipeline 完成特定任务(例如媒体播放或捕获)。 默认情况下,GStreamer附带了大量element,这使得开发各种媒体应用程序成为可能。 如果需要,您还可以编写新的element。 该主题在《 GStreamer插件编写者指南》中有大量说明。

Elements

element是gstreamer中最重要的对象类。通常,你将创建一条由多个element链接到一起而组成的链路,并让数据流从该这链路通过。 一个element具有一项特定功能,可以是从文件中读取数据,对该数据进行解码或将该数据输出到您的声卡(或其他任何东西)。 通过将几个这样的element链接在一起,可以创建一个pipeline 完成特定任务(例如媒体播放或捕获)。 默认情况下,GStreamer附带了大量element,这使得开发各种媒体应用程序成为可能。 如果需要,您还可以编写新的element。 该主题在《 GStreamer插件编写者指南》中有大量说明。

Pads

Pads是element的输入和输出元件,用来连接其他element的输入和输出。 它们用于协商element之间的链接和数据流。 可以将pad视为element上的“插头”或“端口”,它可以与其它element建立链接,数据可以通过这些元素流入或流出这些元素。 pad具有特定的数据处理功能:pad可以限制流经它的数据类型。 仅当两个pad允许的数据类型(处理能力)兼容时,才允许在两个pad之间建立链接。 数据类型在pad之间使用称为caps negotiation的过程进行协商。 数据类型由GstCaps描述。

在这里做个类比可能会比较容易理解。 pad似于物理设备上的插头或插孔。 考虑例如由音频放大器,DVD播放器和(静音)视频投影仪组成的家庭影院系统。 因为两个设备都有音频插孔,所以可以将DVD播放器链接到放大器;由于两个设备都具有兼容的视频插孔,所以可以将投影机链接到DVD播放器。 由于投影机和放大器的插孔类型不同,因此可能无法建立投影机和放大器之间的链接。 GStreamer中的pad的作用与家庭影院系统中的插孔相同。

在大多数情况下,GStreamer中的所有数据都通过element之间的链接以一种方式流动。 数据通过一个或多个source pad流出一个element,而element通过一个或多个sink pad接收输入数据。source element 和 sink element 分别仅具有source pad 和 sink pad。 数据通常表示缓冲区(由GstBuffer对象描述)和事件(由GstEvent对象描述)。

Bins and pipelines

Bins是用于容纳一组element的容器。 由于bin本身就是element的子类,因此您几乎可以将bin当作element来进行控制,从而为应用程序抽象出很多复杂性。 例如,您可以通过更改bin本身的状态来更改bin中所有element的状态。 bin还会转发其包含的子项中的总线消息(例如错误消息,标记消息或EOS消息)。

pipeline是顶层容器。 它为应用程序提供消息总线,并管理其所包含的element的同步。 当您将其设置为PAUSED或PLAYING状态时,数据流将开始流动并且媒体处理也开始进行。 一旦启动,pipeline将在单独的线程中运行,直到您停止它们或到达数据流的末尾为止。

Communication

GStreamer提供了几种用于在应用程序和pipeline之间进行通信和数据交换的机制。

     1、buffers 是用于在pipeline中的element之间传递流数据的对象。buffers始终从sources移动到sinks(下游)。

     2、events 是在element之间或从应用程序发送到element的对象。events 可以在上游和下游传播。下游事件可以同步到数据流。

     3、messages 是由 element 发布到 pipeline的消息总线上的对象,这些element将在消息总线中保留以供应用程序收集。messages可以从发布消息的element的所在的流线程上下文中同步拦截并处理,但是通常由应用程序从应用程序的主线程以异步的方式处理。messages用于以线程安全的方式将信息(例如错误,标签,状​​态更改,缓冲状态,重定向等)从element传输到应用程序。

      4、queries允许应用程序从管道中请求诸如持续时间或当前播放位置之类的信息。queries总是同步地应答。element还可以使用queries从其对等的element请求信息(例如文件大小或持续时间)。可以在pipeline中同时使用它们,但是上游查询更为常见。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ava实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),可运行高分资源 Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值