Inconsistent connection issue on iOS 17

Hello.

We have noticed inconsistent connection issue on iOS 17 devices.

When connecting or switching camera in an ongoing session with one or more participants, sometimes the camera feed from iOS 17 device does not reach other participants in the session. iOS 17 participants video element goes grey for other participants and after a while they receive NO_STREAM_PLAYING_EVENT event. For the iOS 17 participant, there are no errors and everything stays normal: video feed from subscribers and publisher keeps streaming as expected. If the iOS 17 participant changes camera or reconnects again, video feed starts flowing to other participants normally.

We have analysed OpenVidu logs from Kibana, but there are no errors or warnings when this issues occurs. When compared to successful camera change or session connect, the unsuccessful connection logs are missing the video flow events that the successful connection haves. From the OpenVidu Inspector’s media info list, there are six (6) events for the unsuccessful connection, and nine (9) events for the successful one. Also when this issues occurs, weirdly the logs from Kibana say that the iOS 17 participant “Is now publishing video” and that the other participant(s) “Is now receiving video from” the iOS 17 participant.

This issue only seems to occur on iOS 17 devices. We have tested with different desktop and mobile browsers on Linux and Android devices. One of the test iPhones we have did not have this issue on iOS 16, but right after the update to iOS 17 this issue started to happen. Video settings (frame rate and resolution) and network conditions does not seem to have affect on this. We have tested different iPhone variants on different networks. Also, we briefly tested the OpenVidu Call app, but camera change from the settings did not cause this issue. Not sure if and how the Call app utilises openvidu-browser.

Do you have any ideas or thoughs on this? We can provide more technical details and logs from the browser and elastic if that would ease the investigation process for you.

The setup and versions we are using:

Frontend

  • SPA React application
  • Uses openvidu-browser 2.29.1

Backend

  • Used for token handling
  • Uses openvidu-java-client 2.29.0

OpenVidu installation

  • Master node 2.29.0
  • Media node 2.29.0
  • Coturn server 4.6.2

BR,
Jere

Update:

For the the OpenVidu setup we are working with, the issue was resolved by forcing participants to use VP8 media codec. Not sure why this fixed the issue for us, but there might be something unstable or broken in iOS 17 WebRTC functionality. It could also be that there is some type of miss configuration in the OpenVidu installation we are working with.

OpenVidu media codec documentation: Media Codecs - OpenVidu Docs

Where did you forced the codec? In the iOS app or in OpenVidu Server?

We handle the codec forcing with OpenVidu Java Client (client app backend). At the moment the codec forcing is set to every connection, so every device is getting that configuration.