提交 f1bc56d6 authored 作者: Chad Phillips's avatar Chad Phillips

Fix FS-11873: addStream() adds audio/video tracks in random order

addStream() is a deprecated WebRTC API method, and only works via shimming on some platforms. Internally, it is inconsistent in building an offer SDP in the order which FreeSWITCH expects it, which is audio m-lines first.

This can result in intermittent m-line ordering errors on the client.

Instead addTrack() can be used to force the media tracks to be added to the peer in the order FreeSWITCH expects.
上级 cea52ac2
......@@ -767,7 +767,13 @@
};
// attachStream = MediaStream;
if (options.attachStream) peer.addStream(options.attachStream);
if (options.attachStream) {
// FreeSWITCH currently orders its answer SDP such that audio m-lines
// always come first, adding the tracks to the peer in that order
// prevents possible m-line ordering validation errors on the client.
options.attachStream.getAudioTracks().forEach(function(track) { peer.addTrack(track, options.attachStream) });
options.attachStream.getVideoTracks().forEach(function(track) { peer.addTrack(track, options.attachStream) });
}
// attachStreams[0] = audio-stream;
// attachStreams[1] = video-stream;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论