Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

156
Views
Webrtc audio problems when initiating connecton from desktop to mobile

Iam making a web app using webrtc that allows two users to communicate with each other using both video and audio. The app uses node.js as signaling server. The app works fine when communicating between two desktops but when I try a desktop to mobile communication, if the user initiating the offer is the one in the desktop, the one on mobile can't hear any sound. If it happens the other way around, both have audio. When I check the devtools the audio stream is sent from the desktop and is received by the mobile (it is active and not muted) but there is no sound. I use the audio element to play the audio stream and the video element to play the video stream. I have tested this on both chrome and mozilla and i encounter the same problem.

If anyone can help it would be greatly appreciated.

Bellow are code samples of the ontrack event

  rtcConnection.ontrack = function(event) {
                console.log('Remote stream received.');
                
                if(event.streams[0].getAudioTracks().length > 0) {
                    
                    event.streams[0].getAudioTracks().forEach((track) => {
                        remoteAudioStream .addTrack(track);
                    });
                    
                    audioPlayer.srcObject = remoteAudioStream;  
                    
                }
                
                if (event.streams[0].getVideoTracks().length > 0){
                    
                    event.streams[0].getVideoTracks().forEach((track) => {
                        remoteVideoStream .addTrack(track);
                    });
                    
                    localVideo.srcObject = remoteVideoStream;
                   
                }
               
            
            };

and the capture media stream:

function getUserMedia() {   

let getAudio = true;
let getVideo = true;

let constraints = { audio: getAudio, video: getVideo };

    
navigator.mediaDevices.getUserMedia(constraints) // Ask user to allow access to his media devices  
.then(
    function(data) { //if yes, get stream config data and join room
    
        localStream = data;
    
            console.log('Getting user media succeeded.');
            
            console.log('RTC Connection created. Getting user media. Adding stream tracks to RTC connection');
            
            
            sendMessage({ type: 'peermessage', messagetype:'info', messagetext: 'Peer started video streaming.'});
            
            //stream to be sent to the other user
            localStream.getTracks().forEach(track => rtcConnection.addTrack(track, localStream));
        
        
        console.log('Creating offer');
        rtcConnection.createOffer()
        .then(function(offer) { // createOffer success
            console.log('Offer created. Setting it as local description');
            return rtcConnection.setLocalDescription(offer);
        }, logError)    // createOffer error
        .then(function() {  // setLocalDescription success
            console.log('Offer set as local description. Sending it to agent');
            sendMessage(rtcConnection.localDescription)
        }, logError);   // setLocalDescription error
        
    }
);

}

about 4 years ago · Juan Pablo Isaza
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!