GStreamer详解1 hello world
来源:互联网 发布:域名注册申请 编辑:程序博客网 时间:2024/06/10 16:05
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
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
0 0
- GStreamer详解1 hello world
- Gstreamer Basic tutorial 1: Hello world!
- Gstreamer官方教程汇总1---Hello World
- GStreamer基础教程01——Hello World
- GStreamer基础教程01——Hello World
- GStreamer基础教程01——Hello World
- GStreamer基础教程01——Hello World
- GStreamer基础教程01——Hello World
- GStreamer基础教程01——Hello World
- GStreamer基础教程01——Hello World
- GStreamer基础教程01——Hello World
- 【GStreamer开发】GStreamer基础教程01——Hello World
- [Erlang]hello world”与<<”hello world”>>详解(1)
- [Erlang]hello world”与<<”hello world”>>详解(2)
- 1-1 Hello World!
- Ext2.1 Hello World.
- 深入浅出Hello World 1
- 1.9.1 Hello,World!
- ISO8583报文协议详解
- JsonObject 解析 json
- Ain_EditPlus配置安装教程
- AndroidStudio安装与Genymotion模拟器
- 备份数据库
- GStreamer详解1 hello world
- 2-SAT
- using libnet to send igmp join packet.
- Python——4Dict和Set类型
- Codeforces Round #309 (Div. 2) E DFS 染色 + 快速乘
- 算法实战(三)--求K-Pairs
- NPOI操作excel异常
- 视图旋转 AVPlayer视频播放视图旋转
- 改变image的尺寸大小,按原比例不拉伸。