我想通過udpsink流從計算機A到計算機B的攝像頭飼料。如果在計算機B通過udpsrc啓動其接收管道之前,計算機A的管道將數據發送到計算機B,則不會使用vaapisink,xvimagesink或ximagesink顯示數據。如果計算機B在任何數據流式傳輸之前啓動他的管道,我可以很好地顯示計算機A的視頻輸入。Gstreamer 1.0沒有視頻當udpsink管道運行之前udpsrc管道
下面是我在命令行使用管道: 計算機A:
sudo gst-launch-1.0 -v v4l2src device=/dev/video0 do-timestamp=true ! \
"video/x-raw, format=I420, width=640, height=480, framerate=30/1" ! \
vaapiencode_h264 ! rtph264pay ! udpsink host=192.168.0.31 port=5400
計算機B:
sudo gst-launch-1.0 -v udpsrc port=5400 ! "application/x-rtp, payload=96, \
encoding-name=H264" ! rtph264depay ! vaapiparse_h264 ! vaapidecode ! \
videoconvert ! xvimagesink sync=false async=false
當我使用GST_DEBUG = 4在計算機B,我認爲沒有錯誤。我通過調試輸出看到的是,當計算機B在A之前啓動他的管道時,計算機B從gst_event_new_caps接收到一個新的GST_EVENT,然後處理計算機A的流。但是如果計算機A的流已經流入計算機B而沒有初始化B的管道,那麼這個事件永遠不會被提升。