|  |  | 
 |  |  |             <button class="toggle-button" onclick="changeGrid(7, 7)">7x7</button> | 
 |  |  |             <button class="toggle-button" onclick="changeGrid(8, 8)">8x8</button> | 
 |  |  |             <button class="toggle-button" onclick="changeGrid(9, 9)">9x9</button> | 
 |  |  |             <input id="videoUrl" type="text" value="" style="width: 250px"/> | 
 |  |  |             <input id="videoUrl" type="text" value="http://192.168.1.227:8889/0d1c9f80a7b4480c8b401ba6b140b581_1/" style="width: 250px"/> | 
 |  |  |         </div> | 
 |  |  |     </div> | 
 |  |  | </div> | 
 |  |  | 
 |  |  |     console.log(RTCRtpReceiver.getCapabilities('audio').codecs) | 
 |  |  |     //whep操作方法 | 
 |  |  |     const restartPause = 2000; | 
 |  |  |     const unquoteCredential = (v) => ( | 
 |  |  |         JSON.parse(`"${v}"`) | 
 |  |  |     ); | 
 |  |  |     const linkToIceServers = (links) => ( | 
 |  |  |         (links !== null) ? links.split(', ').map((link) => { | 
 |  |  |             const m = link.match(/^<(.+?)>; rel="ice-server"(; username="(.*?)"; credential="(.*?)"; credential-type="password")?/i); | 
 |  |  | 
 |  |  |                     } | 
 |  |  |                     // this.eTag = res.headers.get('ETag'); | 
 |  |  |                     this.eTag = res.headers.get("ETag") || res.headers.get('E-Tag'); | 
 |  |  |                     this.wurl = new URL(res.headers.get('location'),  this.wurl.origin).toString(); | 
 |  |  |                     return res.text(); | 
 |  |  |                 }) | 
 |  |  |                 .then((sdp) => this.onRemoteAnswer(new RTCSessionDescription({ | 
 |  |  | 
 |  |  |             chanMap.set("video" + i, videoUrl); | 
 |  |  |         } | 
 |  |  |         console.log(chanMap); | 
 |  |  |         //changeGrid(2, 2); | 
 |  |  |         changeGrid(2, 2); | 
 |  |  |     } | 
 |  |  |     //绑定点击事件 | 
 |  |  |     let playMap = new Map(); |