Как проверить план sdp (plan-b или unified-plan), используемый в объекте RTCPeerConnection в Safari (и во всех браузерах)?

#webrtc

#webrtc

Вопрос:

Как проверить план sdp (plan-b или унифицированный план), используемый в объекте RTCPeerConnection?

Я знаю, что в Chrome я могу вызвать:

 var p = new RTCPeerConnection()
console.log('plan:', p.getConfiguration().sdpSemantics)
  

sdpSemantics Работает в Chrome, но не работает в Safari, как проверить это в Safari?

Ответ №1:

После моих исследований, похоже, для этого нет простого решения, чтобы быть уверенным.

Однако, согласно документам, мы можем различать Plan-b / unified-plan по тому, как выглядит SDP, когда имеется более 1 дорожки одного вида.

В унифицированном плане каждый трек одного и того же типа имеет отдельный m= раздел в SDP, в то время как в 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
    })
}