safari can not play H264 video

Hi ,

I’m now using mediaSoup-demo and got an “Strange” thing.

I set Server side H264 codec parameter " level-asymmetry-allowed=1;packetization-mode=1;profile-level-id = 42e01f " , i think it will help Server has maximum compatibility .

Everything seems ok ,except mobile safari browser version 12 (not version 12.1).
There’s 3 type device in the H264 room, Desktop Chrome 75 , Android Mobile Chrome , Mobile Safari 12 , all is browser.

Chrome client will see all the video streams ,include from safari. But ,safari client Can’t see streams published by chrome.

Any advise will be appreciate .


1 Like

Check this:

1 Like

Thank you , Castillo.slowly , Google make money With evil …

In My case , i had set the profile-level-id to OpenH264 (profile-level-id = 42e01f ) . And i also forced “useSimulcast = true;” in app/lib/RoomClient.js , So , we can expect :

  1. OpenH264 encoder (profile-level-id=42e01f selected):
  • If simulcast is enabled, Chrome sends N streams and adds frame-marking to packets (with s=1 and i=1 for key frames).

I tested again , But my IOS safari 12 still Can’t see streams published by chrome. Is that because of safari start Simulcast support from 12.1 ??

Anyway , What is your suggestion for now , for “H264 only” Room?

I don’t know if your issue happens due to any of the Chrome issues I referenced. Try without simulcast just to see what happens.

Regarding iOS, honestly I don’t know which exact iOS Safari versions do properly support H264 negotiation. Anyway, the receivers do not receive H264 simulcast but a single H264 stream, so simulcast support in Safari XX is not the problem here.

Anyway , What is your suggestion for now , for “H264 only” Room?

I don’t have a magic response, sorry. I know that H264 interop between WebRTC endpoints is a pain.

Thank you , Big boss ,

From the view of Safari , it seems there’s no “I frame” send to safari client, even i tried “request key(??) frame” .

Anyway , I will try deeper ,maybe ,i miss something or make wrong config. Thank you , from my heart.

I really referenced somes issue for a reason :slight_smile:


Thank @ibc for link about issue on Chrome but why Safari Mac OS (or Firefox) a also the issue, they use same webrtc lib as Chrome ?

But I think it’s a specific Safari iOS issue : with Safari / Mac OS, no issue like that : Safari Mac OS play well video.

Tested mediasoup-demo v3, mediasoup v2 with stable iOS and iOS beta. With other client : Chrome, Firefox, Safari Mac OS. Always same issue on iOS : video freezing.

On Safari iOS, even with last iOS beta, video is freezing with H264 and also with VP8. So seems a iOS specific issue (and issue seems to be not specific to H264).

Only working mediasoup-demo with iOS (video + sound) is old mediasoup-demo v2 with 2.0.9 mediasoup-server (but unable to make a new installation working … dont know why maybe a node dependency or something related to planB). Removing track.stop() to get sound working.

Available to make test on iOS beta or stable as usually.

Honestly no idea. But I expect that, by enabling full debug and tags in mediasoup, something should show up. I cannot check that right now.

I can send you logs if it can help.

What is the best option to get full debug from client ?

I have read the doc but I’m not sure if it’s good :

window.localStorage.setItem('debug', '* -engine* -socket* -RIE* *WARN* *ERROR* *DEBUG*');

or :

window.localStorage.setItem('debug', 'mediasoup-client:WARN* mediasoup-client:ERROR* mediasoup-client:DEBUG*');

server side log is pretty verbose :slight_smile: there a some error but I’m not sure that they are specific to iOS client. Will continue to search the error log specific to iOS.

I mean logs in server side. But honestly I don’t want to read them without being able to test the environment. What I meant is that mediasoup is supposed to provide details logs to figure out what the issue is (and not that just us can figure out it) :slight_smile: