2017-10-08 49 views
0

我想從Raspberry Pi Zero W流視頻數據到運行Windows 10的PC。我用這個視頻作爲我的來源:https://www.youtube.com/watch?v=lNvYanDLHZA,這是我使用的代碼(使用我的電腦的實際IP地址,而不是10.30.0.0我假裝在這裏):Gstreamer錯誤:管道不能構造:語法錯誤

樹莓派bash腳本:

#!/bin/bash 
clear 
raspivid -n -t 0 -rot 270 -w 960 -h 720 -fps 30 -b 6000000 -o - | gst-launch-1.0 -e -vvvv fdsrc ! h264parse ! rtph264pay pt=96 config-interval=5 ! udpsink host=10.30.0.0 port=5000 

Windows批處理腳本:

cd C:\gstreamer\1.0\x86_64\bin 
gst-launch-1.0 -e -v udpsrc port=5000 ! application/x-rtp, payload=96 ! rtpjitterbuffer ! rtph264depay ! avdec_h264 ! fpsdisplaysink sync=false text-overlay=false 

但是,運行後,我的批處理腳本崩潰。我得到的錯誤是對「gst-launch-1.0 -e -v udpsrc port=5000」的一部分,它是:

ERROR: Pipeline could not be constructed: syntax error

任何想法,我能做些什麼來糾正呢?謝謝

+0

我在Ubuntu上測試了你的接收端腳本,它在我的系統上工作正常。你的安裝完成了嗎? –

+0

是的。我卸載了它並在計算機上重新安裝了兩次。 – FlyerKitten

回答

0

我認爲你需要在接收器管道上做一些小的改動,除非它也在接收器中工作。

我還沒有測試覆盆子pi的來源,但我認爲理所當然,你的來源管道是正確的。主要的問題是,它是絕對必要把udpsrc插件的源墊,使用屬性:

你的管道應該是這樣的:

gst-launch-1.0 -v udpsrc port=5000 caps="application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, payload=(int)96" ! rtpjitterbuffer ! rtph264depay ! avdec_h264 ! videoconvert ! fpsdisplaysink sync=false text-overlay=false

也考慮將videoconvert插件後avdec_h264如果管道不工作。如果你不知道哪個插件是必要的,你總是可以使用decodebin這非常有用。

你總是可以做一個閉環測試的目的是這樣的:

TX(這是相當相似的源):

gst-launch-1.0 -e -v videotestsrc is-live=true ! x264enc bitrate=1000 tune=zerolatency ! h264parse ! rtph264pay pt=96 config-interval=5 ! udpsink host=10.30.0.0 port=5000 

RX:

gst-launch-1.0 -v udpsrc port=5000 caps="application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, payload=(int)96" ! rtph264depay ! decodebin ! videoconvert ! autovideosink 
+0

如果我嘗試對RX進行底部修復,則會出現此錯誤: 錯誤:管道不想暫停。 錯誤:來自元素/ GstPipeline:pipeline0/GstUDPSrc:udpsrc0:無法從/在資源上獲取/設置設置。 其他調試信息: gstudpsrc。c(1561):gst_udpsrc_open():/ GstPipeline:pipeline0/GstUDPSrc:udpsrc0: 綁定失敗:錯誤綁定到地址:試圖以禁止其訪問權限的方式訪問套接字。 將管道設置爲NULL ... 釋放管道... – FlyerKitten

+0

Windows無法訪問您的端口。這與這個問題無關。請繼續之前修復它。 – jgorosdev

+0

好的。我在Windows中使用命令提示符的經驗很少。如何修復我的端口以使其可達? – FlyerKitten

0

我找到了答案。我去了我的Windows命令提示符並鍵入 netstat-an |找到「UDP」|更多

這提出了繁忙的UDP端口列表,我發現端口5000是其中之一。所以我使用了不同的端口,而我的視頻流通過了!