gstreamer讓playbin能夠播放rtp over udp流數據


最近一段時間在研究傳屏低延遲傳輸相關的一些東西。本來想使用gstreamer來驗證下rtp over udp傳送h264 nal數據相關

的,結果發現竟然不能用playbin來播放rtp的數據!誠然,這也有其原因,因為rtp需要一些帶外數據,這是不能簡單通過流

來檢查的,然而也沒有手段簡單傳入sdp給playbin,讓其正常工作。沒有辦法,在gstreamer-devel和https://bugzilla.gnome.org

bug管理平台上搜了一圈,有人碰到類似的問題,但是沒有完整的解決方案,於是完善了rtpsrc的插件,可以支持類似下面的播放:

gst-launch-1.0 playbin uri="rtp://10.9.44.117:5000?media=video&clock-rate=90000&encoding-name=H264&payload=96&do-retransmission=true&latency-ms=50&rtp-profile=1&rtx-host=192.168.31.141&rtx-port=5006"

 這樣子感覺方便了不少,直接可以通過uri 查詢參數把配置信息傳遞給udpsrc ,構造caps參數,對,沒錯,新插件rtpsrc的作用

就是起一個橋梁作用,本質還是利用udpsrc和rtpbin一起能協同工作,構造后大致的pipeline類似下面這樣:

// RTP receiver (example)
// receives h264 encoded RTP video on port 5000, RTCP is received on  port 5001.  
// the receiver RTCP reports are sent to port 5005
//-----------------------RtpSrc-------------
//|            .-------.      .----------. |   .---------.   .-------.   .-----------.
//| RTP        |udpsrc |      | rtpbin   | |   |h264depay|   |h264dec|   |xvimagesink|
//| port=5000  |      src->recv_rtp recv_rtp->sink     src->sink   src->sink         |
//|            '-------'      |          | |   '---------'   '-------'   '-----------'
//|                           |          | |-------------------------    
//|                           |          |     .-------.            |    
//|                           |          |     |udpsink|  RTCP      | 
//|                           |    send_rtcp->sink     | port=5005  |
//|            .-------.      |          |     '-------' sync=false |
//| RTCP       |udpsrc |      |          |               async=false|
//| port=5001  |     src->recv_rtcp      |                          |
//|            '-------'      '----------'                          | 
//------------------------------------------------------------------|

 

代碼已經以補丁的形式,提交到了bugzilla,能不能被合並,或者什么時候被合並進主分支,我不太清楚,但是它至少是可以正常工作的,

有這方面需求的同仁,可以移步這里:https://bugzilla.gnome.org/show_bug.cgi?id=703111 ,去合並進入自己的gstreamer sdk中,

應該能使您的生活更輕松一些。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM