GStreamer Basic tutorial 学习笔记(二)
【墨染】GStreamer学习笔记的第二篇,参考GStreamer官方文档和示例代码,整理了相关知识点。
错误检测
流程:
bus=gst_element_get_bus(pipeline);
msg=gst_bus_timed_pop_filtered(bus, GST_CLOCK_TIME_NONE, GST_MESSAGE_ERROR | GST_MESSAGE_EOS);
GError *err; gchar *debug_info
switch(GST_MESSAGE_TYPE(msg)) {
case GST_MESSAGE_ERROR:
gst_message_parse_error(msg, &err, &debug_info);
//输出错误信息
g_printerr("Error received from element %s: %s\n",
GST_OBJECT_NAME(msg->src), err->message);
g_printerr("Debugging information: %s\n",
debug_info ? debug_info : "none");
g_clear_error(&err);
g_free(debug_info);
break;
case GST_MESSAGE_EOS:
g_print("End-Of-Stream reached.\n");
break;
default:
g_printerr("Unexpected message received.\n");
}
补充说明
pipeline 与 bin:管道是一种特定类型的bin
,用来容纳其他元素,可应用于bin
的函数就可应用于pipeline
。
函数与知识点
-
GstElement *gst_element_factory_make (const gchar * factoryname, const gchar * name)
功能:创建一个由给定元素工厂定义类型的新元素。如果名称为NULL
,则该元素将获得一个保证唯一的名称,由元素工厂名称和一个数字组成。如果提供了名称,则将使用提供的名称。参数:
factoryname
: 要实例化的具名工厂
name
(可选): 新元素的名称,如果为NULL
,则自动生成唯一名称返回值: (可转换: 浮动型,可为空):新的
GstElement
,如果无法创建元素则返回NULL
-
videotestsrc
介绍:videotestsrc元素用于以各种格式生成测试视频数据。可以使用"pattern"属性控制生成的视频测试数据的模式。 默认情况下,videotestsrc
将无限生成数据,但如果num-buffers
属性非零,则会生成固定数量的视频帧,然后发送EOS
信号。说明:测试很有用,真实应用一般不会出现。
-
autovideosink
介绍:autovideosink
是一个自动检测适当的视频输出的视频接收器。它通过扫描注册表中所有具有元素信息的类字段中包含"Sink
"和"Video
",且具有非零自动插入等级的元素来实现此功能。它会自动选择合适的视频接收器来使用。说明:使用它,使代码更具有跨平台性。
-
GstElement *gst_pipeline_new (const gchar * name)
功能:创建一个给定名字的新管道。 -
gst_bin_add_many (GstBin * bin, GstElement * element_1, ... ...)
功能:将一个以NULL
结尾的元素列表添加到一个bin
中。该函数相当于对列表中的每个成员调用gst_bin_add()
。每个gst_bin_add
的返回值将被忽略。参数:
bin
: 一个GstBin
element_1
(可转换: 浮动型): 要添加到bin
中的GstElement
元素
... ...
: 要添加到bin
中的其他元素 -
gboolean gst_element_link (GstElement * src, GstElement * dest)
功能:将src
与dest
进行链接。链接必须从源(src
)到目标(dest
)进行,反方向的链接将不会尝试。该函数会查找尚未链接的现有pad
。如果需要,它将请求新的pad
。在取消链接时,被请求的pad
需要手动释放。如果存在多个链接可能性,只会建立一个链接。说明:只有在同一
bin
中的元素。 在尝试链接之前,请确保将您的元素添加到bin
或pipeline
中,可以使用gst_bin_add
函数进行添加。参数:
src
(不可转移):包含源pad
的GstElement
。
dest
(不可转移):包含目标pad
的GstElement
。
返回值:如果能够链接元素,则返回TRUE
,否则返回FALSE
-
void g_object_get (GObject* object, const gchar* first_property_name, ...)
功能:获取GObject
的属性。参数:
first_property_name
:要获取的第一个属性的名称,类型:const gchar*。该数据由调用该方法的调用者拥有,该值是以NUL终止的UTF-8字符串。
...
:第一个属性的返回位置,可选择跟随更多的名称/返回位置对,最后以NULL结尾。 -
void g_object_set (GObject* object, const gchar* first_property_name, ...)
功能:读取GObject
的属性。参数:
first_property_name
:第一个要设置的属性的名称。
...
:第一个属性的值,可选择跟随更多的名称/值对,最后以NULL
结尾。
更多推荐
所有评论(0)