H264 RTSP from live555 generated media gives "SDP missing mandatory information" error

1,253 views
Skip to first unread message

daniel

unread,
May 28, 2019, 6:13:00 PM5/28/19
to meetecho-janus
Hi,

I want to use the RTSP streaming config. Janus is running on my localhost computer fine, admin UI has been started. RTSP stream is opened at least I see it from the CL when I start Janus.
RTSP stream is playing in VLC without issues.

However, upon actually starting the playback in the browser (Firefox 64 on ubuntu 18LTS), Janus on the CL prints:

[ERR] [sdp.c:janus_sdp_process:351] [4431169589714920] SDP missing mandatory information
[ERR] [sdp.c:janus_sdp_process:352] [4431169589714920] (nil), (nil), 0x7f570801d660, 0x7f570801c800
[ERR] [janus.c:janus_process_incoming_request:1269] Error processing SDP


My SDP is here:
v=0
o
=- 1559081105958468 1 IN IP4 [a.b.c.d]
s
=Mountpoint 99
t
=0 0
a
=group:BUNDLE video
a
=msid-semantic: WMS janus
m
=video 9 UDP/TLS/RTP/SAVPF 96
c
=IN IP4 [a.b.c.d]
a
=sendonly
a
=mid:video
a
=rtcp-mux
a
=ice-ufrag:[yyy]
a
=ice-pwd:[xxx]
a
=ice-options:trickle
a
=fingerprint:sha-256 [FINGERPRINT]
a
=setup:actpass
a
=rtpmap:96 H264/90000
a
=fmtp:96 profile-level-id=ffffc028;sprop-parameter-sets=Z0LAKJ2oHgCJ+WEAAAMAAQAAAwAyhA==,aO48gA==
a
=rtcp-fb:96 nack
a
=rtcp-fb:96 nack pli
a
=rtcp-fb:96 goog-remb
a
=ssrc:484996940 cname:janus
a
=ssrc:484996940 msid:janus janusv0
a
=ssrc:484996940 mslabel:janus
a
=ssrc:484996940 label:janusv0
a
=candidate:1 1 udp 2013266431 192.168.2.121 41393 typ host
a
=end-of-candidates


What shall I try next to resolve this problem?

PS.: there might be some topic with a solution however I was not able to find it based on the CL error text. In this case, sorry.
Hope someone could guide me to the right direction with this.

Thanks!

Lorenzo Miniero

unread,
May 29, 2019, 4:43:13 AM5/29/19
to meetecho-janus
Janus is complaining about the remote SDP (the one coming from the browser), not its own or the one coming from RTSP. The one you pasted is the offer from Janus, and from the log (the nil things) it's missing the ICE credentials apparently. 

L.

daniel

unread,
May 29, 2019, 6:48:43 AM5/29/19
to meetecho-janus
So the ICE credentials are missing from the remote SDP (the one coming from the browser)? How can I force the browser to send those credentials?

Lorenzo Miniero

unread,
May 29, 2019, 6:51:08 AM5/29/19
to meetecho-janus
Try sharing the browser SDP (in a gist/pastebin, not inline) so we can check if that's the case. ICE credentials are automatically added, nothing you have to do.

L.

daniel

unread,
May 29, 2019, 12:26:14 PM5/29/19
to meetecho-janus
Okay, I'll do it certainly, but where shall I find the browser's SDP? Is it not availabel in the Admin/Monitor?

Thx!

daniel

unread,
May 29, 2019, 12:40:47 PM5/29/19
to meetecho-janus
Never mind, I think I found it.

Here is the log of my whole operation on the client side:

Thank you very much for your help!

Lorenzo Miniero

unread,
May 29, 2019, 12:45:46 PM5/29/19
to meetecho-janus
There's no ICE credentials and no fingerprints because Firefox is rejecting your video stream (0-port in m-line, a=inactive) for some reason. In theory it should still put ICE/DTLS stuff in that case as well (you may want to ask on mozilla.dev.media why that's not happening) but it isn't, and so Janus complains because it expects stuff that isn't there.

L.

Lorenzo Miniero

unread,
May 29, 2019, 12:47:34 PM5/29/19
to meetecho-janus
Partial correction: the fingerprint is there, the ICE credentials aren't. Besides, the answer refers to a non-existing 120 payload type and uses VP8 as a codec, when you're offering H.264 as 96. No idea what Firefox is doing there: better ask on the group I mentioned in my previous post.

L.

daniel

unread,
May 29, 2019, 5:00:59 PM5/29/19
to meetecho-janus
Okay, I was googling around and found FF does not like the profile-level-id of the h264 stream which is ffffc028. (Honestly I haven't found any resources for identifying this profile-level-id).
Google Chrome fails to stream it as well: "WebRTC error: DOMException: Failed to execute 'setRemoteDescription' on 'RTCPeerConnection': Failed to set remote offer sdp: Failed to set remote video description send parameters."

If I force the profile-level-id to something else, FF crashes, Chrome works.

Can you help me to identify this profile-level-id by any chance?

Thanks!

Lorenzo Miniero

unread,
May 29, 2019, 5:18:33 PM5/29/19
to meetecho-janus
It's a commonly asked question here, so I'm sure the search button will give you some results,

L.

Brian Koblenz

unread,
May 29, 2019, 5:24:00 PM5/29/19
to Lorenzo Miniero, meetecho-janus
I had a problem with my camera giving an invalid profile-level-id (but not starting with 0xff) and here was a comment I added to my code:

// Camera returns an illegal profile-level-id
// map 4d00 (base) to 4d80 (constrained baseline)
// https://www.iana.org/assignments/media-types/video/H264-SVC
// tried 4d001e->42e01f but this seems closer
jsep['sdp'] = jsep['sdp'].replace('profile-level-id=4D00', 'profile-level-id=4D80');



Virus-free. www.avg.com

--
You received this message because you are subscribed to the Google Groups "meetecho-janus" group.
To unsubscribe from this group and stop receiving emails from it, send an email to meetecho-janu...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/meetecho-janus/1474d2bd-ed37-4b75-b985-f76c0878bff2%40googlegroups.com.

Virus-free. www.avg.com

Lorenzo Miniero

unread,
May 29, 2019, 5:28:32 PM5/29/19
to meetecho-janus
When using the Streaming plugin, profile-id can be overridden with a custom videofmtp creating the mountpoint, no need to do that in JS. The configuration file explains how.

L.
To unsubscribe from this group and stop receiving emails from it, send an email to meetecho-janus+unsubscribe@googlegroups.com.

Virus-free. www.avg.com

Dániel Körmendi

unread,
May 29, 2019, 5:51:56 PM5/29/19
to Lorenzo Miniero, meetecho-janus
Yepp, profile-level-ID can be overridden from the config file.

Let me ask one extra question which might be a bit unrelated:
If I want to stream more cameras images' on a website with janus, which is more appropriate?
A.) put janus on each camera and create a 3rd party website which connects to all januses?
B.) put janus on a 3rd party server which would also host a website, and the website connects to the only janus which defines more streaming channels through the conf file? One channel for each cam.

Thx!

To unsubscribe from this group and stop receiving emails from it, send an email to meetecho-janu...@googlegroups.com.

Virus-free. www.avg.com

--
You received this message because you are subscribed to the Google Groups "meetecho-janus" group.
To unsubscribe from this group and stop receiving emails from it, send an email to meetecho-janu...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/meetecho-janus/73d848c8-8225-441d-ad7a-206b6b98f37f%40googlegroups.com.
Reply all
Reply to author
Forward
0 new messages