#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
})
}