0

我正在编写一个使用 Gstreamer 在两个客户端之间流式传输视频的应用程序。为此,我用 C 语言编写了两个代码,它们实现了一个发送管道和一个接收管道,它们都使用rtpbin来发送/接收 RTP 流。沿着 RTP 流,还交换了两个 RTCP 流。发送方的情况可以表示如下:

                .-------.    .---------.    .----------.     .-------.
                |x264enc|    |rtp264pay|    | rtpbin   |     |udpsink|  RTP
             ->sink    src->sink    src->send_rtp send_rtp->sink     | port=3000
                '-------'    '---------'    |          |     '-------'
                                            |          |      
                                            |          |     .-------.
                                            |          |     |udpsink|  RTCP
                                            |    send_rtcp->sink     | port=3001
                             .-------.      |          |     '-------' sync=false
                  RTCP       |udpsrc |      |          |               async=false
                port=3005    |     src->recv_rtcp      |                       
                             '-------'      '----------'              

我想实现一种方法来估计发送方和接收方之间可用的带宽,以便我可以将其传回x264enc以调整编码比特率。

我搜索了很多,但是关于这个主题的大多数问题都涉及 webrtc 和webrtcbins,我在这里没有使用它们。这些webrtcbin使用 REMB 数据包,这是一种估计带宽的 RTCP 标头扩展。

有谁知道我如何使用rtpbins估计我的情况下的带宽?谁能帮助我如何在 C 中添加/实现 REMB RTCP 标头扩展?

4

0 回答 0