Got webRTC publishing to work with Safari in BroadcastLiveVideo.com solution (can be tested in live demo at VideoNow.Live).
Publishing works (received on server) and is available for playback over RTMP or HLS / MPEG DASH after transcoding but does not work directly in WebRTC.
Publisher JS reports correctly configured profile-level-id 42e01f (Constrained Baseline) in SDP:
a=fmtp:96 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f
Playback JS reports incorrect profile-level-id in SDP:
a=fmtp:97 packetization-mode=1;profile-level-id=64C029
And results in error:
OperationError: Failed to set remote offer sdp: Session error code: ERROR_CONTENT. Session error description: Failed to set remote video description send parameters..
The RTSP stream accessible on server seems to have High profile when publishing with Safari:
h264 (High), yuv420p(progressive), 640x480, 30 tbr, 90k tbn, 180k tbc
When publishing with Chrome is Constrained Baseline:
h264 (Constrained Baseline), yuv420p(progressive), 640x480, 30 tbr, 90k tbn, 180k tbc
Same code works fine when broadcasting from Chrome:
a=fmtp:125 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f
And Chrome stream plays fine in all browsers, including in Safari:
a=fmtp:97 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f
The issue seem to be related to Safari publishing stream with High 64C029 profile instead of Constrained Baseline 42e01f.
The question: Is there something that can be done in JS code or Wowza configuration for Safari WebRTC stream to playback using WebRTC directly (without transcoding), similar to how Chrome streams work?