GStreamer学习笔记(二)

错误检测

流程:

  1. bus=gst_element_get_bus(pipeline);
  2. msg=gst_bus_timed_pop_filtered(bus, GST_CLOCK_TIME_NONE, GST_MESSAGE_ERROR | GST_MESSAGE_EOS);
  3. 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");
}

函数与知识点

  1. gst_element_factory_make() 功能:使用给定的元素工厂,创建一个新element。如果名字为空,element会获得一个保证唯一的名字,默认由(元素工厂+数字)的格式命名。如果名字已给定,element会获得给定的名字。例如:gst_element_factory_make(const gchar *factoryname, const gchar* name)
  2. videotestsrc 介绍:用来生成各式各样的测试视频数据(生产者),视频测试数据通过“pattern”属性控制。说明:测试很有用,真实应用一般不会出现。
  3. autovideosink介绍:接收端元件(消费者),自动检测和实例化合适的视频接收端。使代码更具有跨平台性。说明:通过扫描注册表,检索“Sink”和“Video”。
  4. gst_pipeline_new() 功能:创建一个给定名字的新管道。介绍:管道是一种特定类型的bin,用来容纳其他元素,可应用于bin的函数就可应用于pipeline。例如:GstElement *gst_pipeline_new(const gchar* name)
  5. gst_bin_add_many() 功能:为管道加入元素(注意强制类型转换)。说明:此函数接受一列表的元素添加,列表以NULL结尾。单个元素可以通过gst_bin_add()来添加。
  6. gst_element_link()功能:把同一个bin里的元素链接起来。说明:只有在同一bin中的元素,可以被链接,所以记得先把元素加入同一管道。
  7. g_object_get() 功能:读取GObject的属性。
  8. g_object_set() 功能:修改GObject的属性。

你可能感兴趣的:(GStreamer学习笔记,服务器,GStreamer,c++,webrtc)