अगर मेरे पास एसडीपी फाइल है और मैं इसकी सामग्री बदलना चाहता हूं:

    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' की सामग्री) को बदल सकता हूं।

1
diana 24 मार्च 2020, 15:36
कृपया अधिक विशिष्ट रहें: आप किस प्रोग्रामिंग भाषा का उपयोग कर रहे हैं और कौन सा प्लेटफ़ॉर्म (मेरा अनुमान है कि आप JS को node.js में उपयोग करने का प्रयास कर रहे हैं, लेकिन मुझे यकीन नहीं हो रहा है)। क्या आप रूपांतरित फ़ाइल का उदाहरण दे सकते हैं?
 – 
Dan
24 मार्च 2020, 16:37
हां, मैं वीएस में जावास्क्रिप्ट और नोड.जेएस का उपयोग करता हूं, मैंने प्रोग्राम को बोले में टैग किया है
 – 
diana
24 मार्च 2020, 17:02

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);
        }
    });
  }
0
diana 24 मार्च 2020, 16:08
समस्या यह है, मुझे प्रत्येक पंक्ति में बदलने की जरूरत है कि मैं परिवर्तन बंदरगाह निकाल सकता हूं जैसे मैं प्रश्न के नीचे जोड़ता हूं ... मुझे अभी भी वह हिस्सा याद आती है!
 – 
diana
24 मार्च 2020, 17:23
अगर मैं तुम होते तो मैं मूल प्रश्न के उत्तर में कोड को स्थानांतरित कर देता और फिर मैं इस उत्तर को हटा देता।
 – 
Dan
24 मार्च 2020, 17:25
क्या मैं सुझाव दे सकता हूं कि आप दिलचस्प मूल्यों को खोजने और बदलने के लिए रेगेक्स का उपयोग करें? मेरा मानना ​​है कि आप आसानी से एक रेगेक्स ट्यूटोरियल पा सकते हैं, उदाहरण के लिए w3schools.com/js/ पर एक है। js_regexp.asp
 – 
Dan
24 मार्च 2020, 17:27
मैं "replaceAt" का उपयोग करने की कोशिश कर रहा हूं, लेकिन मुझे @Dan . का जवाब नहीं देता
 – 
diana
24 मार्च 2020, 22:18
कृपया मेरी समस्या को हल करने में मेरी मदद करें :( @Dan मैं अपना नया कोड जोड़ता हूं जो लागू होता है
 – 
diana
24 मार्च 2020, 23:39
    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(' ');
  }
0
diana 24 मार्च 2020, 23:36

यहां आप एक कोड अनुक्रम हैं जो आपको "एम = ऑडियो" से शुरू होने वाली रेखा को पार्स करने में मदद करेगा और फिर नई लाइन उत्पन्न करेगा। आपको इसे स्वयं अपने कोड में एकीकृत करना होगा और फिर फ़ाइल में अद्यतन लाइन को वापस लिखना होगा। अन्य पंक्तियों को संसाधित करने के लिए आपको स्वयं को कोड लिखना होगा।

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;
0
Dan 25 मार्च 2020, 13:44

मैंने आपका जवाब ले लिया है, और उसमें जोड़ा है। यह एक उपयोगी प्रश्न था, और इस पर मेरा विचार है:

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: क्योंकि रेखाएँ पहले स्थान पर नहीं थीं, और वे पंक्तियाँ हैं जिन्हें मैं जोड़ने का प्रयास कर रहा हूँ।

साथ ही, ध्यान दें कि सिप लाइनों के अंत में एक अतिरिक्त नई लाइन नहीं होनी चाहिए, इसलिए मैंने ऐसा नहीं होने के लिए कोड डाला।

0
Millar248 9 जुलाई 2020, 01:20