我想設定我的 WebRTC 客戶端可以支持的最大位元率。我只能訪問客戶端(接收視頻幀)而不能訪問主機(發送視頻)。我如何發出信號,表明我的客戶端只能支持低位元率(例如 512kbps)。
到目前為止,我已經嘗試修改 SDP 提供的b=AS欄位以嘗試設定最大位元率。這是我的代碼:
const rtcPeer = new RTCPeerConnection()
...
rtcPeer.createOffer().then((offer) => {
offer.sdp = `b=AS:512\r\n`; // <-- trying to set max bitrate to 512 kbps here
rtcPeer.setLocalDescription(offer)
...
}
這創建的完整 SDP 如下所示:
v=0
o=- 2186277925215273999 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE 0
a=extmap-allow-mixed
a=msid-semantic: WMS
m=application 9 UDP/DTLS/SCTP webrtc-datachannel
c=IN IP4 0.0.0.0
a=ice-ufrag:7 MK
a=ice-pwd:removed
a=ice-options:trickle
a=fingerprint:sha-256 05:37:61:F1:48:8B:0B:9D:77:84:2C:74:5E:E3:25:7B:86:D2:E2:CF:E1:5E:A2:F6:14:C2:F5:9C:03:38:3D:ED
a=setup:actpass
a=mid:0
a=sctp-port:5000
a=max-message-size:262144
b=AS:512
請注意,我的 SDP 報價沒有m:videoorm:audio因為它只是一個發送幀的資料通道(我無法控制它;主機)。我不確定如果沒有m:video會成功所以我不能發送最大位元率?此處有更多詳細資訊:

感謝你們提供的任何幫助!
uj5u.com熱心網友回復:
如果您的目標是控制資料通道帶寬,請忘記與 RTP 帶寬控制相關的方法,因為它們僅用于音頻和視頻。瀏覽器中沒有這樣的“神奇”選項(至少在今天),但您可以自己在 JavaScript 應用程式中實作資料通道帶寬控制。
首先,保持傳輸的訊息大小低于max-message-size引數的最小值。盡管一些現代瀏覽器允許訊息大小高達 1Gb(或更多),但我的建議是不要超過 128Kb。如果訊息大小超過允許的大小,您可以在發送方將其拆分為塊,然后在接收方重新組裝。
其次,注意發送方資料通道的緩沖區大小RTCDataChannel.bufferedamount。在低網路帶寬和密集寫入資料通道時,容易發生緩沖區溢位,因此資料通道將進入關閉狀態。
uj5u.com熱心網友回復:
我不相信b=AS會影響 SCTP 擁塞控制。我將深入研究 libwebrtc,但它是 RTP 特定值。
你對客戶有多少控制權?它只是一個瀏覽器嗎?是移動的嗎?它是在 Linux/Windows 上運行的行程嗎?
使用 SCTP,您可以通過a_rwnd它來傳達您作為接收器有多少緩沖區空間。您可以人為地限制它以導致發送方擁塞控制器獲得您想要的行為嗎?
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/396006.html
標籤:谷歌浏览器 网页版 数据包 冰 rtcpeerconnection
