अगर मेरे पास एसडीपी फाइल है और मैं इसकी सामग्री बदलना चाहता हूं:
v=0
o=jdoe 2890844526 2890842807 IN IP4 10.47.16.5
s=SDP Seminar
i=A Seminar on the session description protocol
u=http://www.example.com/seminars/sdp.pdf
e=j.doe@example.com (Jane Doe)
c=IN IP4 224.2.17.12/127
t=2873397496 2873404696
a=recvonly
m=audio 49170 RTP/AVP 0
m=video 51372 RTP/AVP 99
a=rtpmap:99 h263-1998/90000
मैं प्रत्येक पंक्ति में सामग्री कैसे बदल सकता हूं उदाहरण के लिए मैं उस पंक्ति में 49170 ('m' की सामग्री) को बदल सकता हूं।
4 जवाब
function change_Ip_Port(new_sdp_file){
let lines = new_sdp_file.split('\n').map(l => l.trim());
lines.forEach(function(line) {
if (line.indexOf('m=video') === 0) {
console.log(line);
}
else if (line.indexOf('m=audio') === 0) {
console.log(line);
}
if(line.indexOf('c=IN')===0) {
console.log(line);
}
});
}
let lines = new_sdp_file.split('\n').map(l => l.trim());
lines.forEach(function(line) {
if (line.indexOf('m=video') === 0) {
setDefaultCodec(line, ServicesPort);
}
else if (line.indexOf('m=audio') === 0) {
console.log(line);
}
if(line.indexOf('c=IN')===0) {
}
});
}
function setDefaultCodec(mLine, payloud) {
var elements = mLine.split(' ');
for (var i = 1; i < elements.length; i++) {
if (elements[1] !== payloud) {
//In here I should add replace inestead of 49170 for example R = 1180
console.log(mLine);
}
}
return elements.join(' ');
}
यहां आप एक कोड अनुक्रम हैं जो आपको "एम = ऑडियो" से शुरू होने वाली रेखा को पार्स करने में मदद करेगा और फिर नई लाइन उत्पन्न करेगा। आपको इसे स्वयं अपने कोड में एकीकृत करना होगा और फिर फ़ाइल में अद्यतन लाइन को वापस लिखना होगा। अन्य पंक्तियों को संसाधित करने के लिए आपको स्वयं को कोड लिखना होगा।
var regex = new RegExp( "^m=audio(\\s+)(\\d+)(\\s+)([A-Z]+/[A-Z]+)(\\s+)(\\d+)$" );
var line = "m=audio 49170 RTP/AVP 0";
var match = regex.exec( line );
// You should replace the field0, field1 and field2 names with
// actual names for the fields in the file.
var field0 = match[ 2 ];
var field1 = match[ 4 ];
var field2 = match[ 6 ];
var field0NewValue = 40000;
var newLine = "m=audio " + field0NewValue + " " + field1 + " " + field2;
मैंने आपका जवाब ले लिया है, और उसमें जोड़ा है। यह एक उपयोगी प्रश्न था, और इस पर मेरा विचार है:
function setBandwidth(sdp) {
let lines = sdp.split('\r\n').map(l => l.trim());
let returnSdp = '';
let audioBandwidth = '64';
let videoBandwidth = '1280';
lines.forEach(function(line, index) {
if (line.indexOf('m=audio') === 0) {
lines[index] = line + '\r\nb=AS:' + audioBandwidth;
}
if (line.indexOf('m=video') === 0) {
lines[index] = line + '\r\nb=AS:' + videoBandwidth;
}
returnSdp = returnSdp + lines[index];
if (index < lines.length - 1) {
returnSdp = returnSdp + '\r\n';
}
});
return returnSdp;
}
मेरे लिए, रेखा को खोजना, फिर उसे अगली पंक्ति में जोड़ना सबसे आसान था, क्योंकि b: क्योंकि रेखाएँ पहले स्थान पर नहीं थीं, और वे पंक्तियाँ हैं जिन्हें मैं जोड़ने का प्रयास कर रहा हूँ।
साथ ही, ध्यान दें कि सिप लाइनों के अंत में एक अतिरिक्त नई लाइन नहीं होनी चाहिए, इसलिए मैंने ऐसा नहीं होने के लिए कोड डाला।