From 90809492c859d1ec4443679238c9d37401e3ca26 Mon Sep 17 00:00:00 2001 From: MathMan05 Date: Wed, 9 Oct 2024 15:01:04 -0500 Subject: [PATCH] Got audio!!! --- src/webpage/voice.ts | 53 ++++++++++++++++++++++++++------------------ 1 file changed, 32 insertions(+), 21 deletions(-) diff --git a/src/webpage/voice.ts b/src/webpage/voice.ts index 5a2b498..ba137ac 100644 --- a/src/webpage/voice.ts +++ b/src/webpage/voice.ts @@ -107,15 +107,14 @@ a=msid-semantic: WMS *\r a=group:BUNDLE ${bundles.join(" ")}\r` let i=0; for(const grouping of parsed.medias){ - let mode="inactive"; - for(const thing of this.senders){ - if(thing.mid===bundles[i]){ - mode="sendonly"; + let mode="recvonly"; + for(const _ of this.senders){ + if(i<2){ + mode="sendrecv"; } } if(grouping.media==="audio"){ - build+= -` + build+=` m=audio ${parsed1.port} UDP/TLS/RTP/SAVPF 111\r ${cline}\r a=rtpmap:111 opus/48000/2\r @@ -134,8 +133,7 @@ a=fingerprint:${FINGERPRINT}\r a=candidate:${candidate}\r a=rtcp-mux\r` }else{ -build+= -` + build+=` m=video ${rtcport} UDP/TLS/RTP/SAVPF 102 103\r ${cline}\r a=rtpmap:102 H264/90000\r @@ -187,7 +185,7 @@ a=rtcp-mux\r`; await pc.setRemoteDescription(remote); const senders=this.senders.difference(this.ssrcMap); for(const sender of senders){ - for(const thing of (await sender.sender.getStats())){ + for(const thing of (await sender.getStats())){ if(thing[1].ssrc){ this.ssrcMap.set(sender,thing[1].ssrc); this.makeOp12(sender) @@ -198,7 +196,7 @@ a=rtcp-mux\r`; }); } } - async makeOp12(sender:RTCRtpTransceiver){ + async makeOp12(sender:RTCRtpSender){ if(this.ws){ this.ws.send(JSON.stringify({ op: 12, @@ -228,8 +226,8 @@ a=rtcp-mux\r`; this.status="Sending audio streams"; } } - senders:Set=new Set(); - ssrcMap:Map=new Map(); + senders:Set=new Set(); + ssrcMap:Map=new Map(); async continueWebRTC(data:sdpback){ if(this.pc&&this.offer){ const pc=this.pc; @@ -238,20 +236,33 @@ a=rtcp-mux\r`; const audioStream = await navigator.mediaDevices.getUserMedia({video: false, audio: true} ); for (const track of audioStream.getTracks()){ //Add track - const sender = pc.addTransceiver(track,{ - direction:"sendonly", - streams:[audioStream], - sendEncodings:[{active:true,maxBitrate:this.channel.bitrate}] - }); - this.channel + console.log(track,audioStream); + const sender = pc.addTrack(track); this.senders.add(sender); console.log(sender) } + for(let i=0;i<10;i++){ + pc.addTransceiver("audio",{ + direction:"recvonly", + streams:[], + sendEncodings:[{active:true,maxBitrate:this.channel.bitrate}] + }); + } + for(let i=0;i<10;i++){ + pc.addTransceiver("video",{ + direction:"recvonly", + streams:[], + sendEncodings:[{active:true,maxBitrate:this.channel.bitrate}] + }); + } this.counter=data.d.sdp; - pc.ontrack = ({ streams: [stream] }) => { - console.log("got audio stream", stream); + pc.ontrack = async (e) => { + console.log(e); + for(const track of e.streams[0].getTracks()){ + console.log(track); + } const audio = new Audio(); - audio.srcObject = stream; + audio.srcObject = e.streams[0]; audio.play() };