deepstream笔记

  1. 创建pipeline
pipeline = gst_pipeline_new("audio-player");
  1. 创建filesrc类型元素并命名为file-source;
GstElement *source = gst_element_factory_make("filesrc", "file-source");
  1. 通过元素名file-source获取元素对应的指针;
GstElement *source = gst_bin_get_by_name(GST_BIN(pipeline), "file-source");
  1. 为对应元素指针添加属性;
g_object_set(source, "location", "/path/to/your/audio/file.mp3", NULL);
  1. 链接元素;
sinkpad = gst_element_get_request_pad(streammux, pad_name_sink);
//这行代码从streammux元素中请求一个名为pad_name_sink的sink pad。sink pad是用于接收数据的端口。如果请求失败,sinkpad将为NULL。

srcpad = gst_element_get_static_pad(decoder, pad_name_src);
//这行代码从decoder元素中获取一个名为pad_name_src的static pad。src pad是用于发送数据的端口。如果获取失败,srcpad将为NULL。

gst_pad_link(srcpad, sinkpad);
//这行代码尝试将srcpad和sinkpad链接起来。如果链接失败,gst_pad_link函数将返回GST_PAD_LINK_ERROR,记录日志并退出函数,返回-1。
  1. 判断元素之间是否连接并产生链接;
gst_element_link(source, sink) != TRUE
gst_element_link_many(1,2,3,4,5);//链接多个
  1. 设置管道状态为播放;
ret = gst_element_set_state(pipeline, GST_STATE_PLAYING);
  1. 等待播放结束或发生错误
bus = gst_element_get_bus(pipeline);
msg = gst_bus_timed_pop_filtered(bus, GST_CLOCK_TIME_NONE,  GST_MESSAGE_ERROR | GST_MESSAGE_EOS);
  1. 释放
gst_message_unref(msg);
gst_object_unref(bus);
gst_element_set_state(pipeline, GST_STATE_NULL);
gst_object_unref(pipeline);

你可能感兴趣的:(DeepStream)