您的位置:首页 > 其它

GStreamer详解1 hello world

2016-07-18 12:11 281 查看
void

gst_init (int *argc, char **argv[])

初始化所有内部数据结构.

检查所有可用的插件.

运行所有的命令行选项.

GstElement *

gst_element_factory_make (const gchar * factoryname, const gchar * name)

创建element对象

gst-inspect可以查询到element的名字和取值范围

基础知识:

element是GStreamer中最重要的概念。可以通过创建一系列的Elements,把它们连接起来,从而让数据流在连接的各个Elements之间传输。

每个Elements都有一个特殊的函数接口,对于有些Elements的函数接口它们是用于能够读取文件的数据,译码文件数据的。

而有些Elements的函数接口只是输出相应的数据到具体的设备上(例如,声卡设备)。你可以将若干个组件(Elements)连接在一起,从而创建一个管道(pipeline)来完成一个特殊的任务,例如,媒体播放或者录音。

GStreamer已经默认安装了很多有用的Elements,通过使用这些Elements能够构建一个具有多种功能的应用程序。当然,如果你需要的话,你可以自己编写一个新的

g_object_get()方法来获得属性

g_object_set (playbin, "uri", uri, NULL);

设置elements的属性:只读的属性会显示element的内部状态,可写的属性会影响element的行为。

接受一个用NULL结束的属性名称/属性值的组成的对,所以可以一次同时修改多项属性。

GstElement *

gst_parse_launch (const gchar * pipeline_description, GError ** error)

直接建立一个pipeline

GstStateChangeReturn

gst_element_set_state (GstElement * element, GstState state)

播放器必须设置pipeline为PLAYING状态才能真正开始播放

设置循环三个步骤

loop = g_main_loop_new (NULL, FALSE);

g_main_loop_run (loop);

void g_main_loop_quit (GMainLoop *loop)

g_main_loop_unref (loop);

GstBus *

gst_element_get_bus (GstElement * element)

获取消息总线

guint

gst_bus_add_watch (GstBus * bus, GstBusFunc func, gpointer user_data)

增加事件监听函数

GstElement *

gst_pipeline_new (const gchar * name)

一个pipeline就是一个特定类型的可以包含其他element的bin,而且所有可以用在bin上的方法也都可以用在pipeline上。

void

gst_bin_add_many (GstBin * bin, GstElement * element_1, ...)

用了gst_bin_add_many()方法在pipeline中加入element。这个方法会接受一系列的element作为输入参数,最后由NULL来终止。

增加单个element的方法是gst_bin_add()。

gboolean

gst_element_link (GstElement * src, GstElement * dest)

刚增加的elements还没有互相连接起来。我们用gst_element_link()方法来把element连接起来,这个方法的第一个参数是源,第二个参数是目标,这个顺序不能搞错,因为这确定了数据的流向。

记住只有在同一个bin里面的element才能连接起来,所以一定要把element在连接之前加入到pipeline中。

实例运行

./helloworld abc.ts
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: