我想在最后有一个方法可以将VP9或H.264设置为SDP中的首选视频编解码器。分割SDP(字符串)为m行来改变视频编解码器
所以我希望在我的SDP m行:
m=video 9 UDP/TLS/RTP/SAVPF 96 98 100 102 127 97 99 101 125
控制台日志:
在这种情况下,我会得到并使用VP8( 96)作为视频编解码器而不是VP9(98)。所以我想检查98/VP9是否可以/可用,并且想要将它设置在开始/第一位以实际使用它。
我走到这一步:
if(sdpOrigin == 'local') {
let lines = sdp.split('\n').map(l => l.trim());
lines.forEach(function(line) {
if (line.indexOf('m=video') === 0) {
let parts = line.substr(28); // Should be avoided!
let vp9_order = parts.indexOf("98");
let array = parts.split(/\s+/);
console.log("array", array); // 96 98 100 102 127 97 99 101 125
if (vp9_order > 0) {
array.splice(vp9_order, 1);
array.unshift("98");
}
console.log("array-new", array); // 98 96 100 102 127 97 99 101 125
// How do I update my SDP now with the new codec order?
}
})
}
这种做法在我看来不好的,因为我得到我想要的M线,但我做了修复子在位置“28”,那么这将打破,如果变化之前的事情。
最后我应该有我的SDP下面的“M线”:
m=video 9 UDP/TLS/RTP/SAVPF 98 96 100 102 127 97 99 101 125
有人可以帮我吗?
可否请你让知道是什么规则是?如果一行以'm = video'开始,并且包含带空格的“98”? –
该行必须以“m = video”开头 - 在sdp中只有这样的行。所以我想检查我的字符串中是否有“98”。如果可用,我想检查它是否在第一位,如果不是,我想要做(交换位置)。 – mrks