2012-08-15 119 views
1

我發現了一個可用於通過RTP發送和接收視頻流的基於gst-launch的示例。我已經將它們改寫爲C.發信人工作正常,但接收人沒有。我有2臺電腦,A和B.當流B-> A,它工作正常,但是當A-> B,B不顯示流。該流正在B(用wireshark檢查)。你可以看看代碼,看看有沒有我沒有發現的錯誤?使用gstreamer播放傳入的RTP視頻流

這裏的GST-發射應用程式:

VIDEO_CAPS="application/x-rtp,media=(string)video,clock-rate=(int)90000,encoding-name=(string)H263-1998" 
gst-launch-0.10 -v gstrtpbin name=rtpbin latency=100 \ 
    udpsrc caps=$VIDEO_CAPS port=5000 \ 
    ! rtpbin.recv_rtp_sink_0 rtpbin. \ 
    ! rtph263pdepay \ 
    ! ffdec_h263 \ 
    ! ffmpegcolorspace \ 
    ! autovideosink 
    udpsrc port=5001 \ 
    ! rtpbin.recv_rtcp_sink_0 rtpbin.send_rtcp_src_0 \ 
    ! udpsink host=$1 port=5005 sync=false async=false 

相應的C代碼是關於[1],因爲它是相當長的。

[1] http://pastebin.com/54eHvZWH

回答

0

您沒有連接到請求-PT - 映射信號中rtpbin,而是設置在udpsrc蓋。總體思路是,rtpbin告訴你:「嘿,我有一個新的載荷號進來,我應該給這個分配什麼上限?」。然後你提供你現在直接在udpsrc上設置的大小寫(減去payloadnumber)。我不確定這是否會有所幫助,但這是您應該這樣做的方式。使用GST_DEBUG = * rtp *:5運行接收器也許可以提供一些線索。