2016-07-15 57 views
0

我試圖合成來自三個Rapsberry PI的三條流。Gstreamer videomixer非常低的幀率

當我加入兩個流一起使用videomixer插件,我得到一個消息結尾:

管道:pipeline0/GstOSXVideoSink:osxvideosink0: 有可能是一個時間戳的問題,還是這臺電腦是太慢。

奇怪的是,我的任務顯示器只指示GST

隨着三流約15%的CPU使用率,幀率變得不可用。我希望我的I7的MacBook能夠處理這個沒有問題....

這裏是我用於混合,在這種情況下只有一個流(/水槽?)的代碼。 誰能告訴我是否有明顯的錯誤?或者我應該在哪裏尋找瓶頸並改進它? 謝謝!

gst-launch-1.0 videomixer name=m sink_1::xpos=400 sink_2::ypos=300 ! autovideosink \ 
-v udpsrc port=9000 caps='application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264'! rtph264depay ! video/x-h264,width=400,height=300,framerate=30/1 ! h264parse ! avdec_h264 ! videoconvert ! m. \ 
-v udpsrc port=9001 caps='application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264' ! rtph264depay ! video/x-h264,width=400,height=300,framerate=30/1 ! h264parse ! avdec_h264 ! videoconvert ! m. \ 
-v udpsrc port=9002 caps='application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264' ! rtph264depay ! video/x-h264,width=400,height=300,framerate=30/1 ! h264parse ! avdec_h264 ! videoconvert ! m. 

這是我用來從RPI相機發送流的代碼。

raspivid -n -w 640 -h 480 -t 0 -o - \ 
| gst-launch-1.0 -v fdsrc ! h264parse ! rtph264pay \ 
config-interval=10 pt=96 ! udpsink host=192.168.1.3 port=9000 
+0

hm glvideomixer怎麼樣?我現在不確定OpenGL在RPI上的功能是怎樣的 – nayana

+0

您可以將您正在使用的代碼與連接到調音臺的兩個流粘貼起來嗎?我沒有在你的管道中看到任何'queue'元素。 – mpr

+0

@otopolsky視頻混合器在Mac上,出於某種原因,glvideomixer沒有出現在我的設置中。我已經搜索如何安裝它,但我找不到任何有關它的信息。我一定在看錯方向。你可以通過任何機會告訴我如何獲得Mac上安裝的glvideomixer(我已經安裝了插件基礎,好的,壞的,醜陋的和libav),但是當我做gst-inspect-1.0 –

回答

0

嘗試爲每個視頻解碼添加隊列元素並將sync=false添加到視頻接收器。現在

gst-launch-1.0 videomixer name=m sink_1::xpos=400 sink_2::ypos=300 ! videoconvert ! ximagesink sync=false \ 
udpsrc port=9000 ! application/x-rtp,media=video,clock-rate=90000,encoding-name=H264 ! rtph264depay ! video/x-h264,width=400,height=300 ! h264parse ! avdec_h264 ! queue ! videoconvert ! m. \ 
udpsrc port=9001 ! application/x-rtp,media=video,clock-rate=90000,encoding-name=H264 ! rtph264depay ! video/x-h264,width=400,height=300 ! h264parse ! avdec_h264 ! queue ! videoconvert ! m. \ 
udpsrc port=9002 ! application/x-rtp,media=video,clock-rate=90000,encoding-name=H264 ! rtph264depay ! video/x-h264,width=400,height=300 ! h264parse ! avdec_h264 ! queue ! videoconvert ! m. 

我聲明這將是我不能確定該視頻將是適當平滑同步,但似乎看起來不錯。

另外,在raspivid上,您可能需要將config-interval屬性添加到rtph264pay元素。

raspivid -n -w 640 -h 480 -t 0 -o - | gst-launch-1.0 -v fdsrc ! h264parse ! rtph264pay config-interval=1 ! multiudpsink clients=192.168.1.3:9000,192.168.1.3:9001,192.168.1.3:9002 
+0

謝謝你的答覆。該解決方案確實消除了圖像中的干擾和關於丟幀的消息。不幸的是,它也給圖像帶來了巨大的延遲(約5秒),這對我的目的來說並不好。由於低延遲,我開始與gstreamer一起工作,這正是我所追求的。 –

+0

我抓住了一個Pi來測試。在接收端添加了隊列,並在rtph264pay上設置了一個配置間隔,它現在看起來運行良好,並在任一端處理重新啓動。 – mpr

+0

感謝您的反饋。添加你所建議的修改似乎確實可以提高性能。太好了! –