【发布时间】:2017-08-09 00:31:28
【问题描述】:
我希望最后有一个方法可以将 VP9 或 H.264 设置为 SDP 中的首选视频编解码器。
所以我在我的 SDP 中寻找 m 行:
m=video 9 UDP/TLS/RTP/SAVPF 96 98 100 102 127 97 99 101 125
我的 SDP 的控制台日志:
在这种情况下,我将获取并使用 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”。如果它可用,我想首先检查它是否在第一位,如果不是,我想这样做(交换位置)。
标签: javascript string replace pattern-matching sdp