如何检查Safari(和所有浏览器)的RTCPeerConnection对象中使用的sdp计划(plan-b或Unified-plan)?

时间:2019-04-15 03:52:45

标签: webrtc

如何检查RTCPeerConnection对象中使用的sdp计划(plan-b或Unified-plan)?

我知道我可以在Chrome浏览器中致电

sdpSemantics

flane_pointers可以在Chrome上运行,但不能在Safari上运行,如何在Safari上进行检查?

1 个答案:

答案 0 :(得分:0)

经过研究,似乎没有确定的简单解决方案。

但是,根据文档,我们可以根据一种类型的轨道超过1条时SDP的外观来区分Plan-b / unified-plan

在统一计划中,同一类型的每个轨道在SDP中都有一个单独的m=部分,而在Plan-B中则将它们分组在一起。

这是工作代码段:

function isUnifiedPlanEnabled() {
    const canvas = document.createElement('canvas');
    const track = canvas.captureStream(1).getTracks()[0];
    const pc = new RTCPeerConnection();
    pc.addTrack(track);
    pc.addTrack(track.clone());

    return pc.createOffer().then(offer => {
        const sdpRows = offer.sdp.split('\n')
        const mVideoRows = sdpRows.filter(row => row.indexOf('m=video') === 0)

        return mVideoRows.length === 2
    })
}