IntroHello WebRTC Community!
This is my first post :) I would be super grateful for any help with a particular issue that I am experiencing with WebRTC
The Problem
I have a web app that streams video from a CCTV camera.
This always works over wifi and works most of the time on 4G connection except for certain mobile phones on certain network.
Not working:
iPhone using EE sim card (UK)
iPhone using Three network (UK)
iPhone using AT&T sim card (US)
Google Pixel using EE sim card (UK)
Google Pixel using Three sim card (UK)
H

We have done lots of testing and we can verify that streaming always works over Wifi and it does not work over the above mentioned devices / networks.
The investigationWe investigated the entire webRTC flow to try and figure out where the problem happens and what the problem is causing live video to stop working.
We verified ice connectivity and that the camera and phone are able to communicate with each other and that the peer to peer connection is established successfully

We verified that everything on the camera is working as expected:
- The Hikvision CCTV camera uses an implementation of libnice to do ICE connection and video streaming
- We verified that the camera sends video over the peer to peer connection and arriving at the phone
Camera sending video data (captured on wireshark)
We can see the video data arrive at the phone

(we used wireshark on android and rvictl on iPhone)
We also looked at WebRTC internals in Chrome to verify this as well

So we know that the footage is arriving at the phone but still we can not play live video.
We spent a lot of time looking at WebRTC internals to try and compare working cases vs non working cases and we found the following:
No codec selected in non working caseWhen working over Wifi we always get live video and we see the following on the RTCInboundRTPVideoStream object:

When we compare this with a non working case (iPhone using EE sim card) we can see that there is no codec selected

This is the only conclusion I can make as to why our live video stream isn't working.
I have no idea why the codec is not being selected in this non working case but is always selected on wifi and some other networks.
Is there anyone that can possibly help me make sense of this as I am not sure how the underlying webRTC engine decides how and when to add the codec to decode the video arriving at the phone.
Sincerely
Carl