Gstreamer的CPP相关问题

1、官网上提供的是C,直接复制到C++中会因为C++语法不同报错。
2、

1.c不会出错
bus=gst_element_get_bus(pipeline);
msg=gst_bus_timed_pop_filtered(bus,GST_CLOCK_TIME_NONE,GST_MESSAGE_ERROR | GST_MESSAGE_EOS);

1.cpp
bus=gst_element_get_bus(pipeline);
msg=gst_bus_timed_pop_filtered(bus,GST_CLOCK_TIME_NONE,GST_MESSAGE_ERROR | GST_MESSAGE_EOS);
报错误:
error: invalid conversion from ‘int’ to ‘GstMessageType’ [-fpermissive]
 t_bus_timed_pop_filtered(bus,GST_CLOCK_TIME_NONE, GST_MESSAGE_ERROR |GST_MESSAGE_EOS);
更改
msg=gst_bus_timed_pop_filtered(bus,GST_CLOCK_TIME_NONE, (GstMessageType)(GST_MESSAGE_ERROR |GST_MESSAGE_EOS));
通过

3、g_object_set (G_OBJECT(videoparse), “framerate”, 30/1, NULL);设置videoparse的帧率方法。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GStreamer是一个功能强大的多媒体处理框架,它支持多种编程语言,包括C++。使用C++开发GStreamer应用程序可以利用其丰富的功能和灵活性。 在C++中使用GStreamer,你需要安装GStreamer开发库,并在你的项目中包含相应的头文件和链接到GStreamer库。 以下是一个使用C++编写的简单的GStreamer应用程序示例: ```cpp #include <gst/gst.h> int main(int argc, char *argv[]) { GstElement *pipeline; GstBus *bus; GstMessage *msg; // 初始化GStreamer gst_init(&argc, &argv); // 创建一个GStreamer pipeline pipeline = gst_pipeline_new("my_pipeline"); // 创建元素 GstElement *source = gst_element_factory_make("videotestsrc", "source"); GstElement *sink = gst_element_factory_make("autovideosink", "sink"); // 将元素添加到pipeline中 gst_bin_add_many(GST_BIN(pipeline), source, sink, NULL); // 连接元素 gst_element_link(source, sink); // 启动pipeline gst_element_set_state(pipeline, GST_STATE_PLAYING); // 监听总线消息 bus = gst_element_get_bus(pipeline); msg = gst_bus_timed_pop_filtered(bus, GST_CLOCK_TIME_NONE, GST_MESSAGE_ERROR | GST_MESSAGE_EOS); // 处理消息 if (msg != NULL) { 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: // 其他消息 break; } gst_message_unref(msg); } // 停止pipeline并释放资源 gst_element_set_state(pipeline, GST_STATE_NULL); gst_object_unref(pipeline); return 0; } ``` 这个示例程序创建了一个简单的GStreamer pipeline,其中包含一个视频源元素和一个自动视频输出元素。它将源和目标元素连接起来,并启动pipeline。然后,它监听总线上的消息,以便在发生错误或达到流的末尾时进行处理。 请注意,这只是一个简单的示例,你可以根据你的需求自定义和扩展pipeline。你可以使用不同的元素来处理不同类型的媒体数据,例如音频或视频文件。 希望这个示例对你有帮助!如果你有更具体的问题,欢迎继续提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值