2013-10-13 144 views
2

有没有人试图将Gstreamer SDK Tutorials中的 http://docs.gstreamer.com/display/GstSDK/Tutorials 移植到gstreamer 1.0?将Gstreamer SDK教程(gstreamer 0.1)移植到gstreamer 1.0

我试图端口基本教程-8.C从GstSDK到gstreamer的1.0。最终结果不起作用,并在运行时退出并出现错误。

这是我到目前为止所做的。我的帮助主要来源是以下页面: http://gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/html/chapter-porting-1.0.html#section-porting-objects-1.0

  1. 替换音频/ X-RAW-INT与音频/ X-RAW

  2. 替换data.app_sink, “新缓冲区” 数据.app_sink, “新样本”

  3. 替换

    tee_src_pad_template = gst_element_class_get_pad_template (GST_ELEMENT_GET_CLASS (data.tee), "src%d"); 
    

    tee_src_pad_template = gst_element_class_get_pad_template(GST_ELEMENT_GET_CLASS(data.tee), "src_%u"); 
    
  4. GstMapInfo stGstMapInfo1; 
    gst_buffer_map(buffer, &stGstMapInfo1, (GstMapFlags)(GST_MAP_READ | GST_MAP_WRITE)); 
    raw = (gint16 *)stGstMapInfo1.data; 
    

    替换

    raw = (gint16 *)GST_BUFFER_DATA (buffer); 
    

。 。 。

/* Free the buffer now that we are done with it */ 
gst_buffer_unmap(buffer, &stGstMapInfo1); 
  • 5替换成“ffmpegcolorspace”与“videoconvert”

上述变化我可以建立并运行该程序后,但过了一会儿提供了以下错误: 错误从元素收到audio_source:内部数据流错误。 调试信息:gstbasesrc.c(2865):gst_base_src_loop():/ GstPipeline:测试流水线/ GstAppSrc:audio_source: 流任务暂停,理由不协商(-4)

我想我必须工作更在本教程的new_buffer和push_data函数上。

非常感谢您的帮助。

回答

1

很难不看你的最终代码猜测。但是这个错误来自appsrc并且是一个“未经过协商的”。从0.10到1.0的一个主要变化是缓冲区不再有上限。

在0.10当您发送GstBuffer到appsrc它将携带GstCaps并会被设置并且当第一缓冲被推协商。在1.0中,您应该在将缓冲区缓存到apps之前明确地将一个大写字母设置为appsrc。

另外,音频/ X-原始int是不完全等同于音频/ X-原始音频/ X-原料也可以指浮动表示的音频。您可能需要检查http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstaudio.html#GstAudioFormat以查看是否要设置更严格的音频上限。

另一件事,GstSample(http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstSample.html)是一个小对象,其中包含一个GstBuffer和一个GstCaps,可能会有助于仔细检查您是否正确使用它。

+0

TX,我会看看那些部分,看看我是否能够使它发挥作用。原始代码可在 http://docs.gstreamer.com/display/GstSDK/Basic+tutorial+8%3A+Short-cutting+the+pipeline 我刚刚更改了我的问题中描述的5个部分。 – Yashil

+0

现在我发现以下帮助链接非常有用,并逐一移植其他功能: http://gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/html/chapter-dataaccess.html http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-appsink.html#gst-app-sink-pull-sample – Yashil

9

的SDK的教程已经在这里了移植(由GStreamer的开发者之一):

http://cgit.freedesktop.org/~slomo/gst-sdk-tutorials/

+0

我遇到麻烦在OSX上运行这些 - http://stackoverflow.com/questions/23777031/gstreamer-gst-video-videooverlay-h-file-not-found/23851995#23851995 - 1.0 SDK有没有gtk? – ThatGuy

+0

移植教程的作者有一个[blog](https://coaxion.net/blog/2013/10/gstreamer-1-0-examples-for-ios-android-and-in-general/)与许多评论/问题/解答。 – cybersam