2013-10-13 146 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