
gstreamer开发手册
ZONG_XP
这个作者很懒,什么都没留下…
-
翻译 Gstreamer应用开发手册1:关于Gstreamer
在之前的Gstreamer基础教程中,介绍了gstreamer基础相关的知识,目的是起到入门的作用。接下来在应用开发手册系列教程中,将更多的从技术角度,介绍更多的概念和功能,起到更好的学习效果。1 什么是gstreamerGStreamer 是一个创建流媒体应用程序的框架。其基本设计思想来自于俄勒冈(Oregon)研究生学院有关视频管道的创意, 同时也借鉴了 DirectShow 的设计思...2020-04-28 11:58:50818
0
-
翻译 Gstreamer应用开发手册2:初始化、元件
初始化当你准备写一个GStreamer应用程序时,你仅需要通过包含头文件gst/gst.h 来访问库函数。除此之外,不要忘记初始化 GStreamer 库。简易初始化在 GStreamer 库被使用前,主应用程序中应该先调用函数 gst_init,这个函数将会对 GStreamer 库做一些必要的初始化工作,同时也能够对 GStreamer 的命令行参数进行解析。一个典型的初始化 GS...2020-04-28 17:46:02388
0
-
翻译 Gstreamer应用开发手册3:箱柜、总线、消息
箱柜(Bins)箱柜是一种容器元件。你可以往箱柜中添加元件。由于箱柜本身也是一种元件,所以你可以像普通元件一样 操作箱柜。因此,先前关于元件(Elements) 那章的内容同样可以应用于箱柜。什么是箱柜箱柜允许你将一组有链接的元件组合成一个大的逻辑元件。你不再需要对单个元件进行操作,而仅仅操作箱柜。当你在构建一个复杂的 管道时,你会发现箱柜的巨大优势,因为它允许你将复杂的管道分解成一些...2020-04-28 18:23:50313
0
-
翻译 Gstreamer应用开发手册4:衬垫、缓冲区、事件
衬垫(pads)及其功能如我们在 Elements 一文中看到的那样,衬垫(Pads)是元件对外的接口。数据流从一个元件的源衬垫(source pad)到另一个元件的接收衬垫(sink pad)。衬垫的功能(capabilities)决定了一个元件所能处理的媒体类型。在这章的后续讲解中,我们将对衬垫的功能做更详细的说明。衬垫(Pads)一个衬垫的类型由 2 个特性决定:它的数据导向(d...2020-04-28 19:03:15412
0
-
翻译 Gstreamer应用开发手册5:构建一个应用
创建一个完整应用在这一章中将会对先前的章节做个总结。它通过一个小程序来讲述 GStreamer 的各个方面:初始化库,创建元件,将元件打包进管道,播放管道中的数据内容。通过这些步骤,你将能够自己开发一个简易的,支持 Ogg/Vorbis 格式的音频播放器。第一个 Hello world 程序我们现在开始创建第一个简易的应用程序:一个基于命令行并支持 Ogg/Vorbis 格式的音频播放...2020-04-28 19:18:50343
0
-
翻译 Gstreamer应用开发手册6:跟踪、定位、元数据
到目前为止,我们已经接触到如何创建一个处理媒体数据流的管道,并如何使它运行。更多的应用程序开发者对在媒体数据流的处理过程中能否提供反馈信息给用户,以及提供什么反馈信息给用户,更感兴趣。举例来说: 对于多媒体播放器,我们想要对播放中的音乐显示一个进度条。或者进行代码转换的应用程序可能需要一个进度条来显示当前处理的代码百分比。 GStreamer 内置了方法来支持上述功能。它通过使用查询(queryi...2020-04-29 10:43:33413
0
-
翻译 Gstreamer应用开发手册7:接口、时钟与同步
接口在前边中我们学习过如何使用 GObject 的特性在应用程序和元件间进行简单交互。这个方法能够满足简单的直接设置,但对于比 set 和 get 更复杂的方法时就不行。为了满足一些更复杂的应用,GStreamer 使用了基于 Glib 中的 GInterface 类型的接口。这部分讲述的大多处理接口并没有给予相应代码。详情请参考 API 手册。在这里,我们仅讲述这些接口的范围和目的。UR...2020-04-29 11:33:13501
0
-
翻译 Gstreamer应用开发手册8:缓冲
缓冲缓冲的目的是在管道中累积足够的数据,以便可以流畅地进行播放而不会中断。从(慢速)非实时网络源读取数据时通常可以完成此操作,但也可以用于实时资源。GStreamer为以下用例提供支持:开始播放之前,在内存中缓冲多达特定数量的数据,以使网络波动最小化。请参阅流缓冲。 通过快速搜索下载的数据将网络文件下载到本地磁盘。这类似于quicktime / youtube播放器。请参阅下载缓冲。...2020-04-29 13:54:05493
0
-
翻译 Gstreamer应用开发手册9:动态控制参数
入门GStreamer属性通常是使用g_object_set()设置的,但是想实时地调用来更改流几乎是不可能的。控制器子系统提供了一种轻量级的方法来在流运行时调整GObject属性。控制器要考虑到时间影响,它通过GstControlSource控件来修改属性。控制源提供0.0到1.0的范围的时间戳的值。控件绑定将控件值映射到GObject它们绑定到的属性,将类型转换并缩放到目标属性的值范围...2020-04-29 14:23:07622
0
-
翻译 Gstreamer应用开发手册10:线程
线程GStreamer本质上是多线程的,并且是完全线程安全的。大多数线程内部结构对应用程序都是隐藏的,这使开发更加容易。但是,在某些情况下,应用程序可能希望对其中的某些部分产生影响。GStreamer允许应用程序在管道的某些部分上强制使用多个线程。GStreamer还可以在创建线程时通知您,以便您可以配置诸如线程优先级或要使用的线程池之类的东西。在GStreamer中调度GStre...2020-04-29 15:03:39524
0
-
翻译 Gstreamer应用开发手册11:自动加载
自动加载在前边我们学习过为 Ogg/Vorbis 文件建立一个简单的媒体播放器。通过替换元件,你同样可以建立一个播放其它文件格式的媒体播放器,像 Ogg/Speex, MP3 甚至视频格式。但是你可能更希望建立一个可以自动检测数据流的媒体格式的应用程序,该应用程序可以根据系统中可用元件自动建立一个最佳的管道。这个过程叫做自动加载(autoplugging), GStreamer 拥有一个高质量...2020-04-29 15:33:42232
0
-
翻译 Gstreamer应用开发手册12:探测函数
管道控制本文将讨论如何在你的应用程序控制管道的几种方法。本文的有些部分明显的有点难度,所以你在阅读本文之前需要一些编程知识。接下来将要讨论的包括如何如何将数据从应用程序插入到管道中, 如何从管道读取数据, 如何控制管道的速度、长度、起始点, 如何监听管道的数据处理过程。使用探测最好将探测视为可以访问Pad侦听器。从技术上讲,探针不过是可以使用gst_pad_add_probe ...2020-04-29 16:45:46964
0
-
翻译 Gstreamer应用开发手册13:管道中添加删除数据
手动在管道中添加/删除数据许多人希望使用自己的源将数据注入到管道中,也有人希望获取管道的输出并在应用程序中处理它。强烈建议不要使用这些方法,但GStreamer会为它们提供支持。由于没有基类的任何支持,因此你需要彻底了解状态更改和同步。如果它不起作用,则有百万种方法可以使自己陷入困境。最好只编写一个插件并让基类对其进行管理。有关此主题的更多信息,请参见《插件编写者指南》。你可以将两个可能的...2020-04-29 16:50:401290
0
-
翻译 Gstreamer应用开发手册14:替换管道元件
动态改变管道在本节中,我们讨论一些用于动态修改管道的技术。我们正在专门讨论在PLAYING状态下且不中断数据流的情况下更改管道。建立动态管道时,需要考虑一些重要事项:从管道中删除元件时,请确保未链接的衬垫上没有数据流,因为这将导致致命的管道错误。断开衬垫连接之前,请始终阻塞source衬垫(在推模式下)或sink衬垫(在拉模式下)。另请参见更改管道中的元件。 将元件添加到管道中时,请...2020-04-29 16:50:54575
1