iOS 15 Safari WebRTC Issue

We’re encountering an issue on the iOS 15 Beta when establishing a WebRTC connection through Safari, where we are not receiving the remote streams, either video or audio. This has been working in iOS 14 with no issues, and a build of WebRTC (from commit c830bd627f519b9dff95b04b6ac8c104f088e1ce) continues to work within our App, but not through either the Safari App or when launched as a SFSafariViewController.  The issue is present in Beta 8, however has been present since at least Beta 2, and presumably prior to that as well.

We have run the below test cases through http://www.appr.tc/, encountering the following results:

  • iOS 15b8 iPhone Safari to iOS 15b8 iPad Safari: Connected, no remote stream visible.
  • iOS 15b8 iPhone Chrome to iOS 15b8 iPad Chrome: Connected, no remote stream visible.
  • MacOS Monterey Safari to iOS 15b8 iPad: Connected, both streams visible on iMac, no remote stream on iPad.
  • macOS Big Sur Safari to iOS 15b8 iPhone: Connected, both streams visible on iMac, no remote stream on iPhone.
  • macOS Big Sur Chrome to iOS 15b8 iPhone: Connected, both streams visible on iMac, no remote stream on iPhone.
  • macOS Big Sur Chrome to iOS 15b8 iPhone Simulator: Connected, both streams visible on iMac, no remote stream on Simulator.

The above results mirror the issue we’ve been encountering in our own product where the stream from the device is sent to the remote, but the remote stream is not being shown on the device. Whether this is an issue with Safari or with the version of WebRTC used therein we aren’t sure.

It does seem that if we change the default Safari experimental settings below in Beta 8 we are seeing success:

  • “VP9 SW Decoder on Battery” - Enabled
  • “VP9 Decoder” - Disabled

Given the above, we suspect this issue may be related to Safari now using VP9?

AppRTC source: https://github.com/webrtc/apprtc

I have the same problem on the final release with my iPhone XS Max. Please give us an update about this problem

We require WebRTC for a huge broadcast event in Toronto ON Canada over the next few weeks, and everything was working great on 14.8, and now that 15 has dropped, all of our iOS devices will NOT work on LTE/5G. Friends at Apple.. please help!

We have the same (or similar) problem with iOS 15. iOS 14.8 worked fine, but under iOS 15, WebRTC video and audio aren't getting delivered to the remote peers.

A fix that worked for us was to have the user turn off "WebRTC Platform UDP Sockets" in the iOS Safari -> Advanced -> Experimental Features.

We also experimented with the "VP9 Decoder", "VP9 SW Decoder on Battery", and "VP8 Decoder" experimental features, but no combination seemed to work.

We're experiencing similar issues with our WebRTC App in iOS 15. Previous iOS version worked great, iOS 15 does not publish any video feeds. We've spent a considerable amount of time playing with the "Advanced Experimental Feature" settings on an iPhone 8 and none of them seem to correct the issue. Is there any official documentation from Apple on what is causing this problem and how to correct it?

The low volume audio issue is being tracked as a webkit bug: https://bugs.webkit.org/show_bug.cgi?id=230902

It has been assigned to an Apple engineer - but I'm thinking the more comments are added on that webkit bug the more noticeable it will get.

We just re-tested with the newly released 15.1 and the issue is still there with low audio with a WebRTC audio stream. Tested on an iPhone XS. Our users will need to refrain from installing 15.x until this is resolved.

This update is going to heavily impact me as I rely on video broadcasting through Safari on my phone for my job. Without this, it will be a major **** to my income and I am afraid to update my phone until then.

15.2 is the same. Still not receiving or decoding the webrtc stream.

I've experienced the issue where streams aren't starting w/ Safari 15x (both Mac and iOS), and discovered that it seems to fix itself (in my project, at least) if stopping the outgoing stream (per audio / video kind), then restarting the stream (i.e. making a new gUM [getUserMedia] call).

The "restart" method I just mentioned seems to also work if choosing an entirely different capture device, of the same audio / video kind, on the second attempt. i.e. first microphone capture fails for one device, starting another device works.

Even stranger, for me, is my project is based in React, and I've worked around this w/o doing the restart method in development mode, but in production, it is persistent, and for the life of me I can't figure out what's changed.

My problem was slightly different but this might help.

WebRTC stream was delivered but the framerate was very low.

Disabling WebRTC H264 LowLatency fixed the problem.

iPhone 12 Mini / iOs 15.4.1

please guys fix it .i was going to publish an app this week but the webrtc is not working on ios 15.this is disaster

So what is the status of this? I am having issues with WebRTC streaming video on iOS. Works great on PC but not on iPhone or iPad.

Anyone know the official word?

Thanks.

I have THE solution ! Install firefox and the rtc player will worke like apparently apple have done an other time a feature and not a bug whith safari...

For calendar, prefer sabre.io at apple calendar like this you could do proper injection inside them in PHP ( a possibilty in apple few years ago....but a feature now, and not a bug too)

I am having the same problem. WebRTC works correctly using the following configurations:

  • PC - PC (Linux - Mac - Win)

note: on Mac, Safari doesn't work, you only see the local video but you don't get the remote stream. Also local video is not sent. Using Firefox and Chrome it works perfectly.

  • PC - Android
  • Android - Android.

With iOS devices it's not possible to send the local video stream under any circumstances and remote stream can only be viewed if the ios device joins conversation after other parties and using Chrome or Firefox (Safari doesn't work)

Hi, I found what the problem was. I was using a method (.addStream) which has been removed from the standard and is no longer implemented on Apple devices. (but still recognized in other platforms) I changed my code to something like this:

// pc.addStream(localStream);  OLD METHOD NO MORE IMPLEMENTED

localStream.getTracks().forEach(track => pc.addTrack(track, localStream));

Everything seems to be ok right now

Cheers, Andrea

iOS 15 Safari WebRTC Issue
 
 
Q