WebRTC -- 音视频流传输带宽控制

WebRTC没有提供这方面的接口,我们可以通过修改sdp信息来实现音视频流的传输带宽控制,sdp格式参考之前的文章:《WebRTC – SDP格式解析》

实现原理比较简单,就是分别在sdp的audio和video媒体部分加入b=AS:信息,可以参考下面的代码实现:

void updateSdpAudioVideoMaxKbps(QString &sdp, int audioMaxKbps, int videoMaxKbps) {
    if (audioMaxKbps != -1) {
        int audioStart = sdp.indexOf("m=audio");
        if (audioStart != -1) {
            int insertStart = sdp.indexOf("\r\n", audioStart + strlen("m=audio"));
            if (insertStart != -1) {
                insertStart += (strlen("\r\n"));
                sdp.insert(insertStart, QString("b=AS:%1\r\n").arg(audioMaxKbps));
            }
        }
    }

    if (videoMaxKbps != -1) {
        int videoStart = sdp.indexOf("m=video");
        if (videoStart != -1) {
            int insertStart = sdp.indexOf("\r\n", videoStart + strlen("m=video"));
            if (insertStart != -1) {
                insertStart += (strlen("\r\n"));
                sdp.insert(insertStart, QString("b=AS:%1\r\n").arg(videoMaxKbps));
            }
        }
    }
}

调用SetLocalDescription应用修改完之后的sdp,并且通过信令服务器转发到对端。

你可能感兴趣的:(WebRTC从入门到精通)