In my tests it sometimes happens that data is transferred while no audio stream is received. Everything seems fine, no error, no warning but also no audio is heard. What does that mean?
Consumer:
Producer:
In my tests it sometimes happens that data is transferred while no audio stream is received. Everything seems fine, no error, no warning but also no audio is heard. What does that mean?
Consumer:
Producer:
I could reproduce the issue with one producer and two consumers. One of the consumers is receiving audio with no problem while the other one is receiving invalid RTP data.
If this would be a real bug in mediasoup it would happen often. However I’ve never seen it. If you can spot the issue specifics please report it as a bug. If you can reproduce it using the mediasoup-demo that would help. However I cannot figure out why that happens in your scenario.
The issue always happens when producing in iOS/Safari. I tried opus and PCMU codecs with no luck. As you can see in the picture below the codec name in the receiver side is unknown.
Tested with mediasoup demo, the audio stream from iOS is not received at all!
I cannot test in iOS/Safari right now. I understand that not having googCodecName
is strange, but it says absolutely nothing to me.
Get producer stats in server side, check if the browser is sending anything to the server or not, etc.
BTW I don’t know if you are enabling server side logs/tags, etc.
No, zero data is sent by the producer. It seems to be a different issue than my first post which data was being transferred but no real audio is received.
BTW in one of my test attempts it worked once and audio was received with no problem! So I included the two logs here, the successful one and the unsuccessful one. Let me know if I can provide more details.
Successful:
mediasoup:Router createWebRtcTransport() +57s
mediasoup:Channel[pid:33603] request() [method:router.createWebRtcTransport, id:6] +57s
mediasoup:Channel[pid:33603] request succeeded [method:router.createWebRtcTransport, id:6] +1ms
mediasoup:Transport constructor() +57s
mediasoup:WebRtcTransport constructor() +57s
mediasoup:WebRtcTransport setMaxIncomingBitrate() [bitrate:1500000] +0ms
mediasoup:Channel[pid:33603] request() [method:transport.setMaxIncomingBitrate, id:7] +0ms
mediasoup:Channel[pid:33603] request succeeded [method:transport.setMaxIncomingBitrate, id:7] +1ms
mediasoup:WebRtcTransport connect() +193ms
mediasoup:Channel[pid:33603] request() [method:transport.connect, id:8] +192ms
mediasoup:Channel[pid:33603] request succeeded [method:transport.connect, id:8] +1ms
mediasoup:Transport produce() +288ms
mediasoup:Channel[pid:33603] request() [method:transport.produce, id:9] +95ms
mediasoup:Channel[pid:33603] request succeeded [method:transport.produce, id:9] +1ms
mediasoup:Producer constructor() +0ms
mediasoup:worker[pid:33603] RTC::IceServer::HandleTuple() | transition from state 'new' to 'connected' +4m
mediasoup:worker[pid:33603] RTC::WebRtcTransport::OnIceServerSelectedTuple() | ICE selected tuple +0ms
mediasoup:worker[pid:33603] RTC::WebRtcTransport::OnIceServerConnected() | ICE connected +1ms
mediasoup:worker[pid:33603] RTC::WebRtcTransport::MayRunDtlsTransport() | running DTLS transport in local role 'client' +0ms
mediasoup:worker[pid:33603] RTC::WebRtcTransport::OnDtlsTransportConnecting() | DTLS connecting +0ms
mediasoup:worker[pid:33603] RTC::DtlsTransport::Run() | running [role:client] +0ms
mediasoup:worker[pid:33603] RTC::DtlsTransport::OnSslInfo() | DTLS handshake start +0ms
mediasoup:worker[pid:33603] RTC::DtlsTransport::OnSslInfo() | [role:client, action:'before SSL initialization'] +1ms
mediasoup:worker[pid:33603] RTC::DtlsTransport::OnSslInfo() | [role:client, action:'SSLv3/TLS write client hello'] +0ms
mediasoup:worker[pid:33603] RTC::DtlsTransport::OnSslInfo() | role: client, waiting:'SSLv3/TLS write client hello'] +0ms
mediasoup:Transport consume() +9ms
mediasoup:Channel[pid:33603] request() [method:transport.consume, id:10] +8ms
mediasoup:worker[pid:33603] RTC::SimpleConsumer::CreateRtpStream() | [ssrc:374000672, payloadType:100] +3ms
mediasoup:worker[pid:33603] RTC::SimpleConsumer::CreateRtpStream() | in band FEC enabled +0ms
mediasoup:Channel[pid:33603] request succeeded [method:transport.consume, id:10] +0ms
mediasoup:Consumer constructor() +0ms
mediasoup:WebRtcTransport connect() +115ms
mediasoup:Channel[pid:33603] request() [method:transport.connect, id:11] +11ms
mediasoup:Channel[pid:33603] request succeeded [method:transport.connect, id:11] +1ms
mediasoup:worker[pid:33603] RTC::IceServer::HandleTuple() | transition from state 'new' to 'connected' +166ms
mediasoup:worker[pid:33603] RTC::WebRtcTransport::OnIceServerSelectedTuple() | ICE selected tuple +2ms
mediasoup:worker[pid:33603] RTC::WebRtcTransport::OnIceServerConnected() | ICE connected +0ms
mediasoup:worker[pid:33603] RTC::WebRtcTransport::MayRunDtlsTransport() | running DTLS transport in local role 'server' +0ms
mediasoup:worker[pid:33603] RTC::WebRtcTransport::OnDtlsTransportConnecting() | DTLS connecting +2ms
mediasoup:worker[pid:33603] RTC::DtlsTransport::Run() | running [role:server] +0ms
mediasoup:worker[pid:33603] RTC::DtlsTransport::OnSslInfo() | DTLS handshake start +0ms
mediasoup:worker[pid:33603] RTC::DtlsTransport::OnSslInfo() | [role:server, action:'before SSL initialization'] +1ms
mediasoup:worker[pid:33603] RTC::DtlsTransport::OnSslInfo() | role: server, waiting:'before SSL initialization'] +0ms
mediasoup:worker[pid:33603] RTC::DtlsTransport::OnSslInfo() | [role:server, action:'before SSL initialization'] +0ms
mediasoup:worker[pid:33603] RTC::DtlsTransport::OnSslInfo() | [role:server, action:'SSLv3/TLS read client hello'] +0ms
mediasoup:worker[pid:33603] RTC::DtlsTransport::OnSslInfo() | [role:server, action:'SSLv3/TLS write server hello'] +1ms
mediasoup:worker[pid:33603] RTC::DtlsTransport::OnSslInfo() | [role:server, action:'SSLv3/TLS write certificate'] +0ms
mediasoup:worker[pid:33603] RTC::DtlsTransport::OnSslInfo() | [role:server, action:'SSLv3/TLS write key exchange'] +0ms
mediasoup:worker[pid:33603] RTC::DtlsTransport::OnSslInfo() | [role:server, action:'SSLv3/TLS write certificate request'] +0ms
mediasoup:worker[pid:33603] RTC::DtlsTransport::OnSslInfo() | [role:server, action:'SSLv3/TLS write server done'] +0ms
mediasoup:worker[pid:33603] RTC::DtlsTransport::OnSslInfo() | role: server, waiting:'SSLv3/TLS write server done'] +1ms
mediasoup:worker[pid:33603] RTC::DtlsTransport::OnSslInfo() | [role:server, action:'SSLv3/TLS write server done'] +0ms
mediasoup:worker[pid:33603] RTC::DtlsTransport::OnSslInfo() | [role:server, action:'SSLv3/TLS read client certificate'] +0ms
mediasoup:worker[pid:33603] RTC::DtlsTransport::OnSslInfo() | [role:server, action:'SSLv3/TLS read client key exchange'] +0ms
mediasoup:worker[pid:33603] RTC::DtlsTransport::OnSslInfo() | [role:server, action:'SSLv3/TLS read certificate verify'] +1ms
mediasoup:worker[pid:33603] RTC::DtlsTransport::OnSslInfo() | [role:server, action:'SSLv3/TLS read change cipher spec'] +0ms
mediasoup:worker[pid:33603] RTC::DtlsTransport::OnSslInfo() | [role:server, action:'SSLv3/TLS read finished'] +0ms
mediasoup:worker[pid:33603] RTC::DtlsTransport::OnSslInfo() | [role:server, action:'SSLv3/TLS write change cipher spec'] +4ms
mediasoup:worker[pid:33603] RTC::DtlsTransport::OnSslInfo() | [role:server, action:'SSLv3/TLS write finished'] +0ms
mediasoup:worker[pid:33603] RTC::DtlsTransport::OnSslInfo() | DTLS handshake done +1ms
mediasoup:worker[pid:33603] RTC::DtlsTransport::CheckRemoteFingerprint() | valid remote fingerprint +0ms
mediasoup:worker[pid:33603] RTC::DtlsTransport::GetNegotiatedSrtpProfile() | chosen SRTP profile: SRTP_AES128_CM_SHA1_80 +0ms
mediasoup:worker[pid:33603] RTC::WebRtcTransport::OnDtlsTransportConnected() | DTLS connected +0ms
mediasoup:worker[pid:33603] RTC::IceServer::HandleTuple() | transition from state 'connected' to 'completed' +36ms
mediasoup:worker[pid:33603] RTC::WebRtcTransport::OnIceServerCompleted() | ICE completed +0ms
mediasoup:worker[pid:33603] RTC::DtlsTransport::OnSslInfo() | [role:client, action:'SSLv3/TLS write client hello'] +183ms
mediasoup:worker[pid:33603] RTC::DtlsTransport::OnSslInfo() | [role:client, action:'SSLv3/TLS read server hello'] +0ms
mediasoup:worker[pid:33603] RTC::DtlsTransport::OnSslInfo() | [role:client, action:'SSLv3/TLS read server certificate'] +0ms
mediasoup:worker[pid:33603] RTC::DtlsTransport::OnSslInfo() | [role:client, action:'SSLv3/TLS read server key exchange'] +0ms
mediasoup:worker[pid:33603] RTC::DtlsTransport::OnSslInfo() | [role:client, action:'SSLv3/TLS read server certificate request'] +1ms
mediasoup:worker[pid:33603] RTC::DtlsTransport::OnSslInfo() | [role:client, action:'SSLv3/TLS read server done'] +0ms
mediasoup:worker[pid:33603] RTC::DtlsTransport::OnSslInfo() | [role:client, action:'SSLv3/TLS write client certificate'] +0ms
mediasoup:worker[pid:33603] RTC::DtlsTransport::OnSslInfo() | [role:client, action:'SSLv3/TLS write client key exchange'] +0ms
mediasoup:worker[pid:33603] RTC::DtlsTransport::OnSslInfo() | [role:client, action:'SSLv3/TLS write certificate verify'] +1ms
mediasoup:worker[pid:33603] RTC::DtlsTransport::OnSslInfo() | [role:client, action:'SSLv3/TLS write change cipher spec'] +0ms
mediasoup:worker[pid:33603] RTC::DtlsTransport::OnSslInfo() | [role:client, action:'SSLv3/TLS write finished'] +0ms
mediasoup:worker[pid:33603] RTC::DtlsTransport::OnSslInfo() | role: client, waiting:'SSLv3/TLS write finished'] +0ms
mediasoup:worker[pid:33603] RTC::IceServer::HandleTuple() | transition from state 'connected' to 'completed' +0ms
mediasoup:worker[pid:33603] RTC::WebRtcTransport::OnIceServerCompleted() | ICE completed +0ms
mediasoup:worker[pid:33603] RTC::DtlsTransport::OnSslInfo() | role: client, waiting:'SSLv3/TLS write finished'] +0ms
mediasoup:worker[pid:33603] RTC::DtlsTransport::OnSslInfo() | role: client, waiting:'SSLv3/TLS write finished'] +1ms
mediasoup:worker[pid:33603] RTC::DtlsTransport::OnSslInfo() | role: client, waiting:'SSLv3/TLS write finished'] +0ms
mediasoup:worker[pid:33603] RTC::DtlsTransport::OnSslInfo() | [role:client, action:'SSLv3/TLS write finished'] +14ms
mediasoup:worker[pid:33603] RTC::DtlsTransport::OnSslInfo() | [role:client, action:'SSLv3/TLS read change cipher spec'] +1ms
mediasoup:worker[pid:33603] RTC::DtlsTransport::OnSslInfo() | [role:client, action:'SSLv3/TLS read finished'] +0ms
mediasoup:worker[pid:33603] RTC::DtlsTransport::OnSslInfo() | DTLS handshake done +0ms
mediasoup:worker[pid:33603] RTC::DtlsTransport::CheckRemoteFingerprint() | valid remote fingerprint +0ms
mediasoup:worker[pid:33603] RTC::DtlsTransport::GetNegotiatedSrtpProfile() | chosen SRTP profile: SRTP_AES128_CM_SHA1_80 +0ms
mediasoup:worker[pid:33603] RTC::WebRtcTransport::OnDtlsTransportConnected() | DTLS connected +0ms
mediasoup:worker[pid:33603] RTC::Producer::CreateRtpStream() | [ssrc:1569528685, rid:, payloadType:111] +461ms
mediasoup:worker[pid:33603] RTC::Producer::CreateRtpStream() | in band FEC enabled +0ms
mediasoup:worker[pid:33603] RTC::SimpleConsumer::SendRtpPacket() | sending sync packet [ssrc:374000672, seq:1, ts:1884254750] from original [seq:15894] +1ms
mediasoup:worker[pid:33603] RTC::RtpStreamRecv::GetRtcpReceiverReport() | using worst remote fraction lost:1 +9s
Unsuccessful:
mediasoup:Router createWebRtcTransport() +18s
mediasoup:Channel[pid:33604] request() [method:router.createWebRtcTransport, id:6] +18s
mediasoup:Channel[pid:33604] request succeeded [method:router.createWebRtcTransport, id:6] +1ms
mediasoup:Transport constructor() +18s
mediasoup:WebRtcTransport constructor() +18s
mediasoup:WebRtcTransport setMaxIncomingBitrate() [bitrate:1500000] +0ms
mediasoup:Channel[pid:33604] request() [method:transport.setMaxIncomingBitrate, id:7] +0ms
mediasoup:Channel[pid:33604] request succeeded [method:transport.setMaxIncomingBitrate, id:7] +1ms
mediasoup:WebRtcTransport connect() +235ms
mediasoup:Channel[pid:33604] request() [method:transport.connect, id:8] +234ms
mediasoup:Channel[pid:33604] request succeeded [method:transport.connect, id:8] +0ms
mediasoup:Transport produce() +256ms
mediasoup:Channel[pid:33604] request() [method:transport.produce, id:9] +21ms
mediasoup:Channel[pid:33604] request succeeded [method:transport.produce, id:9] +1ms
mediasoup:Producer constructor() +2m
mediasoup:worker[pid:33604] RTC::IceServer::HandleTuple() | transition from state 'new' to 'connected' +17m
mediasoup:worker[pid:33604] RTC::WebRtcTransport::OnIceServerSelectedTuple() | ICE selected tuple +0ms
mediasoup:worker[pid:33604] RTC::WebRtcTransport::OnIceServerConnected() | ICE connected +1ms
mediasoup:worker[pid:33604] RTC::WebRtcTransport::MayRunDtlsTransport() | running DTLS transport in local role 'client' +1ms
mediasoup:worker[pid:33604] RTC::WebRtcTransport::OnDtlsTransportConnecting() | DTLS connecting +0ms
mediasoup:worker[pid:33604] RTC::DtlsTransport::Run() | running [role:client] +0ms
mediasoup:worker[pid:33604] RTC::DtlsTransport::OnSslInfo() | DTLS handshake start +0ms
mediasoup:worker[pid:33604] RTC::DtlsTransport::OnSslInfo() | [role:client, action:'before SSL initialization'] +0ms
mediasoup:worker[pid:33604] RTC::DtlsTransport::OnSslInfo() | [role:client, action:'SSLv3/TLS write client hello'] +0ms
mediasoup:worker[pid:33604] RTC::DtlsTransport::OnSslInfo() | role: client, waiting:'SSLv3/TLS write client hello'] +0ms
mediasoup:Transport consume() +7ms
mediasoup:Channel[pid:33604] request() [method:transport.consume, id:10] +6ms
mediasoup:worker[pid:33604] RTC::SimpleConsumer::CreateRtpStream() | [ssrc:967834319, payloadType:100] +3ms
mediasoup:worker[pid:33604] RTC::SimpleConsumer::CreateRtpStream() | in band FEC enabled +0ms
mediasoup:Channel[pid:33604] request succeeded [method:transport.consume, id:10] +1ms
mediasoup:Consumer constructor() +3m
mediasoup:worker[pid:33604] RTC::DtlsTransport::OnSslInfo() | [role:client, action:'SSLv3/TLS write client hello'] +5ms
mediasoup:worker[pid:33604] RTC::DtlsTransport::OnSslInfo() | [role:client, action:'SSLv3/TLS read server hello'] +1ms
mediasoup:worker[pid:33604] RTC::DtlsTransport::OnSslInfo() | [role:client, action:'SSLv3/TLS read server certificate'] +0ms
mediasoup:worker[pid:33604] RTC::DtlsTransport::OnSslInfo() | [role:client, action:'SSLv3/TLS read server key exchange'] +1ms
mediasoup:worker[pid:33604] RTC::DtlsTransport::OnSslInfo() | [role:client, action:'SSLv3/TLS read server certificate request'] +0ms
mediasoup:worker[pid:33604] RTC::DtlsTransport::OnSslInfo() | [role:client, action:'SSLv3/TLS read server done'] +0ms
mediasoup:worker[pid:33604] RTC::DtlsTransport::OnSslInfo() | [role:client, action:'SSLv3/TLS write client certificate'] +0ms
mediasoup:worker[pid:33604] RTC::DtlsTransport::OnSslInfo() | [role:client, action:'SSLv3/TLS write client key exchange'] +1ms
mediasoup:worker[pid:33604] RTC::DtlsTransport::OnSslInfo() | [role:client, action:'SSLv3/TLS write certificate verify'] +0ms
mediasoup:worker[pid:33604] RTC::DtlsTransport::OnSslInfo() | [role:client, action:'SSLv3/TLS write change cipher spec'] +1ms
mediasoup:worker[pid:33604] RTC::DtlsTransport::OnSslInfo() | [role:client, action:'SSLv3/TLS write finished'] +0ms
mediasoup:worker[pid:33604] RTC::DtlsTransport::OnSslInfo() | role: client, waiting:'SSLv3/TLS write finished'] +0ms
mediasoup:worker[pid:33604] RTC::IceServer::HandleTuple() | transition from state 'connected' to 'completed' +519ms
mediasoup:worker[pid:33604] RTC::WebRtcTransport::OnIceServerCompleted() | ICE completed +1ms
mediasoup:worker[pid:33604] RTC::DtlsTransport::OnSslInfo() | role: client, waiting:'SSLv3/TLS write finished'] +0ms
mediasoup:worker[pid:33604] RTC::DtlsTransport::OnSslInfo() | role: client, waiting:'SSLv3/TLS write finished'] +0ms
mediasoup:worker[pid:33604] RTC::DtlsTransport::OnSslInfo() | role: client, waiting:'SSLv3/TLS write finished'] +0ms
mediasoup:worker[pid:33604] RTC::DtlsTransport::OnSslInfo() | [role:client, action:'SSLv3/TLS write finished'] +0ms
mediasoup:worker[pid:33604] RTC::DtlsTransport::OnSslInfo() | [role:client, action:'SSLv3/TLS read change cipher spec'] +0ms
mediasoup:worker[pid:33604] RTC::DtlsTransport::OnSslInfo() | [role:client, action:'SSLv3/TLS read finished'] +0ms
mediasoup:worker[pid:33604] RTC::DtlsTransport::OnSslInfo() | DTLS handshake done +0ms
mediasoup:worker[pid:33604] RTC::DtlsTransport::CheckRemoteFingerprint() | valid remote fingerprint +0ms
mediasoup:worker[pid:33604] RTC::DtlsTransport::GetNegotiatedSrtpProfile() | chosen SRTP profile: SRTP_AES128_CM_SHA1_80 +0ms
mediasoup:worker[pid:33604] RTC::WebRtcTransport::OnDtlsTransportConnected() | DTLS connected +0ms
mediasoup:WebRtcTransport connect() +604ms
mediasoup:Channel[pid:33604] request() [method:transport.connect, id:11] +576ms
mediasoup:Channel[pid:33604] request succeeded [method:transport.connect, id:11] +1ms
mediasoup:worker[pid:33604] RTC::IceServer::HandleTuple() | transition from state 'new' to 'connected' +199ms
mediasoup:worker[pid:33604] RTC::WebRtcTransport::OnIceServerSelectedTuple() | ICE selected tuple +0ms
mediasoup:worker[pid:33604] RTC::WebRtcTransport::OnIceServerConnected() | ICE connected +1ms
mediasoup:worker[pid:33604] RTC::WebRtcTransport::MayRunDtlsTransport() | running DTLS transport in local role 'server' +1ms
mediasoup:worker[pid:33604] RTC::WebRtcTransport::OnDtlsTransportConnecting() | DTLS connecting +0ms
mediasoup:worker[pid:33604] RTC::DtlsTransport::Run() | running [role:server] +0ms
mediasoup:worker[pid:33604] RTC::DtlsTransport::OnSslInfo() | DTLS handshake start +0ms
mediasoup:worker[pid:33604] RTC::DtlsTransport::OnSslInfo() | [role:server, action:'before SSL initialization'] +1ms
mediasoup:worker[pid:33604] RTC::DtlsTransport::OnSslInfo() | role: server, waiting:'before SSL initialization'] +0ms
mediasoup:worker[pid:33604] RTC::DtlsTransport::OnSslInfo() | [role:server, action:'before SSL initialization'] +0ms
mediasoup:worker[pid:33604] RTC::DtlsTransport::OnSslInfo() | [role:server, action:'SSLv3/TLS read client hello'] +0ms
mediasoup:worker[pid:33604] RTC::DtlsTransport::OnSslInfo() | [role:server, action:'SSLv3/TLS write server hello'] +0ms
mediasoup:worker[pid:33604] RTC::DtlsTransport::OnSslInfo() | [role:server, action:'SSLv3/TLS write certificate'] +0ms
mediasoup:worker[pid:33604] RTC::DtlsTransport::OnSslInfo() | [role:server, action:'SSLv3/TLS write key exchange'] +0ms
mediasoup:worker[pid:33604] RTC::DtlsTransport::OnSslInfo() | [role:server, action:'SSLv3/TLS write certificate request'] +1ms
mediasoup:worker[pid:33604] RTC::DtlsTransport::OnSslInfo() | [role:server, action:'SSLv3/TLS write server done'] +0ms
mediasoup:worker[pid:33604] RTC::DtlsTransport::OnSslInfo() | role: server, waiting:'SSLv3/TLS write server done'] +0ms
mediasoup:worker[pid:33604] RTC::DtlsTransport::OnSslInfo() | [role:server, action:'SSLv3/TLS write server done'] +0ms
mediasoup:worker[pid:33604] RTC::DtlsTransport::OnSslInfo() | [role:server, action:'SSLv3/TLS read client certificate'] +0ms
mediasoup:worker[pid:33604] RTC::DtlsTransport::OnSslInfo() | [role:server, action:'SSLv3/TLS read client key exchange'] +0ms
mediasoup:worker[pid:33604] RTC::DtlsTransport::OnSslInfo() | [role:server, action:'SSLv3/TLS read certificate verify'] +0ms
mediasoup:worker[pid:33604] RTC::DtlsTransport::OnSslInfo() | [role:server, action:'SSLv3/TLS read change cipher spec'] +0ms
mediasoup:worker[pid:33604] RTC::DtlsTransport::OnSslInfo() | [role:server, action:'SSLv3/TLS read finished'] +0ms
mediasoup:worker[pid:33604] RTC::DtlsTransport::OnSslInfo() | [role:server, action:'SSLv3/TLS write change cipher spec'] +0ms
mediasoup:worker[pid:33604] RTC::DtlsTransport::OnSslInfo() | [role:server, action:'SSLv3/TLS write finished'] +0ms
mediasoup:worker[pid:33604] RTC::DtlsTransport::OnSslInfo() | DTLS handshake done +0ms
mediasoup:worker[pid:33604] RTC::DtlsTransport::CheckRemoteFingerprint() | valid remote fingerprint +1ms
mediasoup:worker[pid:33604] RTC::DtlsTransport::GetNegotiatedSrtpProfile() | chosen SRTP profile: SRTP_AES128_CM_SHA1_80 +0ms
mediasoup:worker[pid:33604] RTC::WebRtcTransport::OnDtlsTransportConnected() | DTLS connected +0ms
mediasoup:worker[pid:33604] RTC::IceServer::HandleTuple() | transition from state 'connected' to 'completed' +44ms
mediasoup:worker[pid:33604] RTC::WebRtcTransport::OnIceServerCompleted() | ICE completed +0ms
Hi @mkh. Honestly I was not asking for as more logs as possible. I was just indicating that, by checking mediasoup provided logs and RTC producer stats, you should be able to figure out what happens.
In those logs there are 2 WebRTC connections, audio/video producers and consumers. I don’t know what is going on there regarding just audio sent by iOS Safari.
Connect a simple iOS Safari client to mediasoup, just enable audio sending, and check audioProducer.getStats()
in the server.
But it’s just audio . One producer and one consumer. Which part of the log indicates it’s a video producer?
Regarding audioProducer.getStats()
it returns an empty array!
Ok, it’s just that honestly I do not want to check logs. They are there for users to check them
If getStats()
returns empty array it means that no RTP has been received. So that’s an issue in iOS/Safari. I have no idea.
I discovered that closing and re-opening the browser (Safari here) fixes the problem. But only for the first call and further attempts to produce fail. There is a bug saying iOS calling getUserMedia() again kills video display of first getUserMedia() but not sure if is related since it’s about video not audio.
Update: hard reload or clearing the cache has the same effect.
It seems to be an issue in iOS Safari then.
It turned out that if the audio stream be in use some how, then the next call to getUserMedia()
will not return proper audio (iOS only).
I am using Hark for detecting the speaker user and apparently it does not release the stream even after calling track.stop()
. And I wonder why reloading the page does not help, but deep reload!
It seems that that explains the issue (which is an iOS issue, not mediasoup related).
I’ve reported two similar issues here indeed and I was thinking that they are the same, which I was wrong. In the first one, that happens rarely, bytes are produced and transferred but in the second one, that happens only on iOS, no bytes are produced/transferred.
About the first issue I’m not sure if it is related to mediasoup or not and the worse is that I still don’t know how to reproduce it .
Hard to figure out what happens in those cases. No iOS right now to check.