从GstElement管道启动GstRTSPServer

问题描述 投票:7回答:1

我正在用C做一个Gstreamer 1.0应用程序。根据用户配置和运行时的系统“状态”来构建管道。因此,我使用了多个GstElement,这些元素后来又添加并链接到“ GstElement管道”。这是一个更好理解的最小示例:

GstElement *pipeline = gst_pipeline_new("mypipeline");
...
GstElement *src = gst_element_factory_make("videotestsrc", NULL);
...
gst_bin_add_many(GST_BIN(pipeline), src, enc, pay, NULL);
gst_element_link_many(src, enc, pay, NULL);
...

然后应由GstRTSPMediaFactory启动此管道。我在这里面临的问题是gst_rtsp_media_factory_set_launch函数仅接受gst_rtsp_media_factory_set_launch管道。

因此,我的问题是,如果你们中的任何一个都知道其中一个的功能

  • const gchar *转换为GstElement *pipeline表示形式(相反的const gchar*
  • 或从gst_parse启动GstRTSPMediaFactory(请参阅下面的编辑#1)

非常感谢您的帮助!谢谢。


编辑#1:

gst_parse

GstRTSPMediaFactory的默认实现使您可以轻松创建使用gst-launch语法的GStreamer管道。可以创建一个GstRTSPMediaFactory子类,使用不同的方法进行构造管道。

因此从技术上可以从GstElement启动GstRTSPMediaFactory。此方法的另一个问题:有人知道这样的GstRTSPMediaFactory子类实现吗?

c gstreamer rtsp gstreamer-1.0
1个回答
0
投票

是,GstElement *pipeline存储库在其子文件夹示例中具有gst-rtsp-server documentation。总结一下:制作gst-rtsp-server的子类并覆盖an example虚拟方法。

顺便说一句,这也意味着您之前提供的2个选项不正确;

  • 将GstElement 将管道转换为const gchar表示形式(有点反向gst_parse)

这是不可能的,因为程序化API具有更强的表现力,并且比声明性启动API允许您做更多的事情(甚至是一个简单的示例:注册回调)。

  • 或从GstElement *管道启动GstRTSPMediaFactory(请参阅下面的编辑#1)

[您正在反过来思考:当GStreamer RTSP服务器收到开始播放的请求时,它将使用GstRTSPMediaFactory根据您的create_element()实现启动GstRTSPMediaFactory。与此相反,每个管道都在其中启动其自己的RTSP服务器。

© www.soinside.com 2019 - 2024. All rights reserved.