【问题标题】:Modifying SDP constraints for WebRTC in FireFox在 FireFox 中修改 WebRTC 的 SDP 约束
【发布时间】:2014-05-23 07:33:15
【问题描述】:

我正在尝试降低 FireFox 中 RTCPeerConnection 的比特率。我已经成功地能够在 Chrome 中进行操作。

我正在修改调用createOffer 方法后由FireFox 自动生成的SDP 字符串。我的回调修改了 SDP,然后尝试在生成的 RTCSessionDescription 中设置 SDP(根据协议规范,这只是一个 DOMString)。在 Chrome 中,我可以修改该 SDP 字符串,然后设置它(在传递给 createOffer 的回调中完成:

desc.sdp = TransFormSDP(desc.sdp);
connection.setLocalDescription(desc);

但是,这在 FireFox 中似乎不起作用,它不会在我分配后更新 SDP,并继续使用由 createOffer 方法生成的字符串。

具体来说,我正在尝试通过在 SDP 的视频媒体部分中添加 b=AS:512 行来对提供的 VP8 编解码器和带宽特别添加 fmtp: max-fr=15; max-fs=400; 限制。

SDP自动生成后FF不允许修改吗?或者 FireFox 是否不允许作为 SDP 标准化一部分的特定 SDP 选项(如带宽限制和编解码器设置)?

编辑:Seriously FireFox??

【问题讨论】:

    标签: javascript firefox webrtc sdp


    【解决方案1】:

    好吧,目前看来it is not supported,至少我是这样假设的,因为还没有对这个错误的回应。猜猜我现在无法使用 Chrome。

    【讨论】:

    • 如果有人有更好的答案,请提供一个。当我可以接受自己的答案时,我将接受我两天不使用 FF 的命运...... :(
    • 您找到解决方案了吗?
    • 据我所知,这仍然是一个错误,Mozilla 还没有解决它。
    • 似乎截至 2016 年 1 月,Firefox 48 尚不支持此功能:ref
    • Firefox 开发人员似乎对让 webRTC 按照规范工作完全不感兴趣。尽管如此,仍无法更改 SDP 中的带宽。无论您做什么,音频都将保持在 40 kBit/s。真是可惜了。
    【解决方案2】:

    实际上,编解码器编码的比特率可通过 API 获得,但在 Firefox 上效果不佳。

    正确的 API 应该是规范中描述的那个https://www.w3.org/TR/webrtc/#dom-rtcrtpencodingparameters

    RTCRtpSender.setParameters 在 64 版本的 Firefox 中得到支持。但实际上 (v.66) 不能正确支持它,比特率有效,但 fps 不支持。

    sn-p修改码率的API方式:

    const sender = peerConnection.getSenders().filter(s => s.track.kind === 'video')[0];
    sender.setParameters({...(sender.getParameters()), encodings: [{
        maxBitrate: 1000*50,
    }]});
    

    但是,通过 API 更改比特率在 FF 中只有暂时的效果,如下图所示。几秒钟后,比特率回到默认值。原因尚不清楚,可能它与degradationPreference 编解码器属性有关,因为它对balancedmaintain-frameratemaintain-resolution 的作用不同。在 chrome 上,它可以正常工作。

    【讨论】:

    最近更新 更多