2016-06-09 130 views
2

我對gstreamer沒有多少經驗,也找不到線上的東西來搞清楚。使用GStreamer通過UDP流式傳輸Android攝像頭H264 mpeg-ts

我使用this open-source來開發一個Android應用程序,通過UDP流式傳輸相機作爲H264 mpegts。

我被卡住了管道,我有兩個工作管道,我不能合併在一起工作。 原來開源的管道:

"ahcsrc ! queue ! glimagesink name=vsink sync=false" 

(當ahcsrc代表Android的硬件相機-SRC)

而且我的測試管道:

"videotestsrc ! decodebin ! x264enc bframes=2 ! mpegtsmux ! udpsink host=192.168.102.74 port=1234" 

兩個工作完全正常。

我的目標是把我的測試管道,並切換videotestsrc到ahcsrc爲:

"ahcsrc ! decodebin ! x264enc bframes=2 ! mpegtsmux ! udpsink host=192.168.102.74 port=1234" 

遺憾的是沒有運氣。真的很感激任何幫助!

編輯: 我試圖在任何地方添加日誌,然後看到沒有任何錯誤,除了每個模塊都將其狀態從PAUSED更改爲PLAYING(除了udpsink外)。

我添加到它「udpsink async = false」,這使它變成播放,但沒有數據包發送和沒有明顯的錯誤。 也許水槽沒有得到任何數據?

EDIT2:亂投醫後,我會發現它認爲這可能是與ahcsrc問題,因爲這條管道:

ahcsrc ! video/x-raw-yuv, framerate=25/1, width=640, height=360 ! videoconvert..... 

結果與

Could not link ahcsrc0 to videoconvert0

畢竟,這是部分的gst-plugins-bad。任何配置都會很棒。

回答

0

你的意思是沒有運氣?有什麼錯誤?

ahcsrc的輸出似乎是raw yuv - 也許不需要使用decodebin,只需要videoconvert。

您可以SRC後加入隊列中有更好的表現,不知道這是否會成功,但是這是它:

ahcsrc ! queue ! videoconvert ! x264enc bframes=2 ! mpegtsmux ! udpsink host=192.168.102.74 port=1234 

請與環境變量GST_LAUNCH=4 ./your-app運行你的應用程序添加一些日誌,並將這些地方粘貼。

+0

試圖運行你的管道。我收到此錯誤: gst_video_overlay_set_window_handle:斷言'GST_IS_VIDEO_OVERLAY(覆蓋)'失敗 – Weknin

+0

我的管道沒有經過測試..所以也許有什麼問題..但爲什麼我的管道的任何元素產生這個錯誤 - 這看起來像你正在使用一些視頻匯 - 你呢?請使用此管道添加更多日誌 - 理想情況下在您的問題中(其他人會在您更新問題時注意到)..您可以使用pastebin並複製粘貼重要部分 – nayana

相關問題