Anybody tested Janus on Safari and/or iOS?

3,586 views
Skip to first unread message

Lorenzo Miniero

unread,
Jun 7, 2017, 5:14:36 AM6/7/17
to meetecho-janus
Hi there,

as you may have heard, Safari 11 supports WebRTC now. Anyway, I don't have access to a Mac or an iPhone to test if that works with Janus. Anybody played with it already? I've read it only does H.264, so you may have to change the configuration of some of the demos (e.g., an H.264 VideoRoom or an H.264 Streaming mountpoint) like it happened when testing Edge, but apart from that I'm mostly interested in whether janus.js and the WebRTC core in Janus do work with that.

Looking forward to some feedback!
Lorenzo

Ju Ju

unread,
Jun 7, 2017, 3:00:21 PM6/7/17
to meetecho-janus
sorry I ve just seen your message lol

so I have answered in another post.

Not my developper Johnny, has tried on ios11 and got also an error but with no logs

I can provide you the logs you want on safari/sierra

kr,

J-

Lorenzo Miniero

unread,
Jun 8, 2017, 3:19:28 AM6/8/17
to Julien Godier, meetecho-janus
Logs might help, thanks. My guess is that it's simply a matter of onaddstream​ which we're still using (a recent PR to fix that didn't work with Firefox) so fixing that should fix it for Safari too.

L.

--
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-janus+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Igor Khomenko

unread,
Jun 8, 2017, 3:20:14 AM6/8/17
to meetecho-janus
Hi Lorenzo, 

it's now possible to try with Safari Technology Preview
https://developer.apple.com/safari/download/

I played a little bit with it and with VideoRoom demo sample here https://janus.conf.meetecho.com/videoroomtest.html

Sometimes it works, sometimes it hangs at "Publishing.." like this

I checked logs and see that there is no 'webrtcup' signal came from server

also, I got this when someone else was joining
WebRTC error... {"code":34,"name":"OperationError","message":"Failed to set remote offer sdp: Session error code: ERROR_CONTENT. Session error description: Failed to set remote video description send parameters.."}

Mirko Brankovic

unread,
Jun 8, 2017, 3:25:38 AM6/8/17
to Igor Khomenko, meetecho-janus
Probably ICE is failing on some occasions.
Maybe you have a lot of virtual networks, vbox, docker, lxc,...?

--
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-janus+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.



--
Regards,
Mirko

Igor Khomenko

unread,
Jun 8, 2017, 3:30:22 AM6/8/17
to meetecho-janus, ig...@quickblox.com
I do not think so, 
it works fine with Chrome/FF
To unsubscribe from this group and stop receiving emails from it, send an email to meetecho-janu...@googlegroups.com.

For more options, visit https://groups.google.com/d/optout.



--
Regards,
Mirko

Lorenzo Miniero

unread,
Jun 8, 2017, 4:44:43 AM6/8/17
to meetecho-janus, ig...@quickblox.com
I don't see how Safari Technology Preview can help, I don't own a Mac at all :-)

That error seems related to codecs. Are you using an H.264 room instead of VP8? Safari doesn't support VP8, and that's what the default VideoRoom demo forces on all participants.

L.

Ju Ju

unread,
Jun 8, 2017, 5:05:22 AM6/8/17
to meetecho-janus, ig...@quickblox.com
Hello Lorenzo,

Ok as promised here some feedback.

What I have done : using videoroom demo

I set up log level to 7
I force videoroom.cfg to use H264 for video codec and OPUS for audio
I start connecting a first participant with chrome and I unpublish to remove all log about this users

than i connect another participant using Safari 11.0



result:


- video is displayed on chrome client but no sound. the video format is 640x480 but I asked 720p
- I have no sound (should I tried another audio codec ?) 
- On safari the local video is not displayed

on safari console I have this error log

[Error] WebRTC error: – {code: undefined, name: "TypeError", message: "Type error"}
error
error (videoroomtest.js:355)
(anonymous function) (janus.js:1661:82)
promiseReactionJob

full janus log here: https://pastebin.com/9Wt96QBX


Now If I do the opposite: publishing with Chrome while Safari is just listening:

I have a spinning wheel instead of video display with this error in the browser

[Error] TypeError: Type error
createObjectURL (janus.js:147)
attachMediaStream (janus.js:147)
onremotestream (videoroomtest.js:496)
onaddstream (janus.js:1301)

J-

Mirko Brankovic

unread,
Jun 8, 2017, 5:26:41 AM6/8/17
to meetecho-janus
make sure you test from 2 different devices, since chrome will lock the mic and camera as resources, then safary wont  be able to use it.

chome probably has a 'hacky' way of allowing multiple tabs to have resources at same time

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

For more options, visit https://groups.google.com/d/optout.



--
Regards,
Mirko

Lorenzo Miniero

unread,
Jun 8, 2017, 5:37:39 AM6/8/17
to meetecho-janus, ig...@quickblox.com
[Error] TypeError: Type error
createObjectURL (janus.js:147)
attachMediaStream (janus.js:147)
onremotestream (videoroomtest.js:496)
onaddstream (janus.js:1301)


Yeah so as I thought it's simply a matter of onaddstream vs. onaddtrack (Safari doesn't ship onaddstream at all), which might explain which both local and remote stream rendering fails.

L. 

Ju Ju

unread,
Jun 8, 2017, 5:51:10 AM6/8/17
to meetecho-janus
Hello Mirko,

Ok I didn't know but  I didn't use webcam and mic in the same time so i don't think it was the issue.

Besides I can use firefox and chrome in the same time using the same webcam without any issue ;)

J-


Ju Ju

unread,
Jun 8, 2017, 5:52:03 AM6/8/17
to meetecho-janus, ig...@quickblox.com



Yeah so as I thought it's simply a matter of onaddstream vs. onaddtrack (Safari doesn't ship onaddstream at all), which might explain which both local and remote stream rendering fails.

Ok So you was telling there is already a PR for that ? Maybe I could try it or you plan to do another one ?

You don't need more info ?

J- 

Lorenzo Miniero

unread,
Jun 8, 2017, 5:57:19 AM6/8/17
to meetecho-janus, ig...@quickblox.com
which I merged and then reverted as it broke Firefox for us for some reason. You may want to see the file differences to see what it did with respect to onaddstream, try applying the changes to your janus.js manually, and check if that helps on Safari. Still didn't have time to look into the ontrack stuff mysef as I'm awfully busy, so any help on that is welcome.

L.


J- 

Igor Khomenko

unread,
Jun 8, 2017, 6:00:11 AM6/8/17
to meetecho-janus, ig...@quickblox.com
well I'm not sure it's related to codecs
because at least I can join a VideoRoom from Safari sometimes and it works.
so it means that connection is OK between Janus and Safari. 

As I understand you have VP8 setup here https://janus.conf.meetecho.com/videoroomtest.html

Lorenzo Miniero

unread,
Jun 8, 2017, 6:05:31 AM6/8/17
to meetecho-janus, ig...@quickblox.com
Successfully establishing a connection ICE/DTLS wise means nothing. If you didn't change the codecs, you're probably receiving a m=video 0 in the answer to your publisher. Trying to subscribe to a VP8 publisher (Chrome) will fail as Safari doesn't support it, and hence the "Failed to set remote video description send parameters" error. You need to change the videocodec of room 1234 to h264 if you want to test that with Safari.

L.

Ju Ju

unread,
Jun 8, 2017, 12:20:39 PM6/8/17
to meetecho-janus, ig...@quickblox.com
hello lorenzo,

I applied the 3 commit of that PR, checked they were fully applied and compil & install

good news -> chrome and firefox still work

bad news -> didn't fix the issue with safari 11

error is still here when publishing

[Error] WebRTC error: – {code: undefined, name: "TypeError", message: "Type error"}
error
error (videoroomtest.js:355)
(anonymous function) (janus.js:1661:82)
promiseReactionJob



error when displaying published stream by safari in another safari tab

[Error] TypeError: Type error
createObjectURL (janus.js:147)
attachMediaStream (janus.js:147)
onremotestream (videoroomtest.js:496)
onaddstream (janus.js:1301)


The safari stream is displayed by firefox and chrome with no obvious pb but in 640x480

J

Josh Dickson

unread,
Jun 8, 2017, 10:31:40 PM6/8/17
to meetecho-janus, ig...@quickblox.com
I'm going to start looking at this shortly. I still have not been able to figure out why the video issue persists in Firefox, the PR appears to be following FF's spec but as you say it obviously doesn't work.

I haven't been able to figure out if the Safari release contains support for data channels, has anybody seen any information about that?

Josh Dickson

unread,
Jun 8, 2017, 11:42:24 PM6/8/17
to meetecho-janus, ig...@quickblox.com
So I also had the {code: undefined, name: "TypeError", message: "Type error"}  issue. This was due to missing a diff with Janus.attachMediaStream in janus.js which fixes that error.

As of right now the echo test sort of works (it does work, but has been finicky to get working 100% of the time) on the demo site, but I seem to have some issues with my own implementation.

Josh Dickson

unread,
Jun 9, 2017, 12:44:16 AM6/9/17
to meetecho-janus, ig...@quickblox.com
Okay, I've been able to play around with my test Janus instance, Safari Technology Preview (which I'm running on the current version of macOS, Sierra, *not* the preview of that), and the demos.

So far, the echo test on the public demo website works about 10-20% of the time and I'm seeing similar issues on my own echo test implementation (does not use video). When I try the echo test, things sort of seem to work temporarily, and then ultimately fail after a few seconds. Due to previous issues, I actually check for valid, non-zero audio packets flowing locally and via remote as a condition to allow folks into my application. I've been seeing some OK local packets, but for the most part it looks like all the remote packets are full of 0's which triggers my application to fail and display a warning.

My audio bridge tests have worked without incident so far. I can't say much about video as I am not a video user.

I am attaching a dump below of the output from Janus.js attempting a failed echo test. My test is identical to that on the demo site outside of 1) not using video and 2) for testing, I unmuted everything just as an additional marker about what's going on. I temporarily hear the audio work for a second or two, and then it stops.

Unfortunately I don't have more time tonight, so this is what I've been able to check out so far!

Lorenzo Miniero

unread,
Jun 9, 2017, 2:56:05 AM6/9/17
to meetecho-janus, ig...@quickblox.com
Thanks for the detailed test! From your log, the browser seems to be receiving a "hangup" event with an "RTCP BYE" cause. Janus is apparently receiving (or thinks it is) an RTCP BYE from the browser, which for Janus acts as a DTLS alert and thus hangs the PeerConnection up. This seems similar to what Ancor described happening for his Firefox 52 users: https://groups.google.com/forum/#!topic/meetecho-janus/4XtfbYB7Jvc

You can try commenting the RTCP BYE detection here:

to see if that fixes it, or if it's a red herring; Safari may indeed be sending an RTCP BYE to close a session for some reason, and so things may still fail, meaning we should figure out what makes it think it needs to wrap up.

L.

Ju Ju

unread,
Jun 9, 2017, 3:04:05 AM6/9/17
to meetecho-janus, ig...@quickblox.com
hello,

I commented out this in ice.c

     /*      if(janus_rtcp_has_bye(buf, buflen)) {

                                        JANUS_LOG(LOG_VERB, "[%"SCNu64"] Got RTCP BYE on stream %"SCNu16" (component %"SCNu16"), closing...\n", handle->handle_id, stream->stream_id, component->component_id);

                                        janus_flags_set(&handle->webrtc_flags, JANUS_ICE_HANDLE_WEBRTC_CLEANING);

                                        if(!janus_flags_is_set(&handle->webrtc_flags, JANUS_ICE_HANDLE_WEBRTC_ALERT)) {

                                                janus_flags_set(&handle->webrtc_flags, JANUS_ICE_HANDLE_WEBRTC_ALERT);

                                                if(handle->iceloop)

                                                        g_main_loop_quit(handle->iceloop);

                                                janus_plugin *plugin = (janus_plugin *)handle->app;

                                                if(plugin != NULL) {

                                                        JANUS_LOG(LOG_VERB, "[%"SCNu64"] Telling the plugin about it (%s)\n", handle->handle_id, plugin->get_name());

                                                        if(plugin && plugin->hangup_media)

                                                                plugin->hangup_media(handle->app_handle);

                                                        janus_ice_notify_hangup(handle, "RTCP BYE");

                                                }

                                        }

                                        return;

                                }*/



didn't change anything for me

J-

Lorenzo Miniero

unread,
Jun 9, 2017, 3:08:19 AM6/9/17
to meetecho-janus, ig...@quickblox.com
Please stop pasting long lines of text inline... anyway, that's way too many lines, we recently made this much more compact and, more importantly, more resistant to hangup race conditions. Are you still on an older commit?

L.

Ju Ju

unread,
Jun 9, 2017, 3:15:26 AM6/9/17
to meetecho-janus, ig...@quickblox.com
sorry on my screen it was not a 'hugh bunch of text'.

anyway I m on master but detached since yesterday I tried josh PR

* (détaché de 3d98871)

  master


J-

Ju Ju

unread,
Jun 9, 2017, 3:23:28 AM6/9/17
to meetecho-janus, ig...@quickblox.com
Ok I reverted back to the main branch, up to date
now I have only the few lines regarding the RTCP BYE. I just commented out theses lines and test -> didn't change anything, the remote local stream still doesn't show up


Lorenzo Miniero

unread,
Jun 9, 2017, 3:26:11 AM6/9/17
to meetecho-janus, ig...@quickblox.com
Try only incorporating those 2-3 changes in janus.js that related to ontrack, that should be enough to check if that's the cause (which is what I think Josh did too).

L.

Josh Dickson

unread,
Jun 9, 2017, 3:31:26 AM6/9/17
to Lorenzo Miniero, meetecho-janus, ig...@quickblox.com
Yeah I meant to note that in my original comment - I’m running janus.js with my PR applied. I’m pretty sure his error is not on that though, it’s going to be Janus.attachMediaStream being old.



--
You received this message because you are subscribed to a topic in the Google Groups "meetecho-janus" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/meetecho-janus/Jx0CHJyWcvU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to meetecho-janu...@googlegroups.com.

Lorenzo Miniero

unread,
Jun 9, 2017, 9:03:35 AM6/9/17
to meetecho-janus, lmin...@gmail.com, ig...@quickblox.com
Just managed to get access to a Sierra machine with a Safari Technology Preview browser. The EchoTest on our demo site works normally: audio, video, data channels, and no sudden hangup as it was happening to you. The VideoRoom works too, but audio only as of course the video line is rejected because there's no VP8. I didn't touch anything, I just opened the public demo site, so not sure why it's not working for you guys.

One thing worth mentioning is that the js code on the demo site is not really up-to-date: the adapter reference, for instance, still points to an older version. Maybe something we added later on broke support. I'll try with a local "master" Janus instance, later, to see if the results are different.

Lorenzo
To unsubscribe from this group and all its topics, send an email to meetecho-janus+unsubscribe@googlegroups.com.

Lorenzo Miniero

unread,
Jun 9, 2017, 9:34:17 AM6/9/17
to meetecho-janus, lmin...@gmail.com, ig...@quickblox.com
Ok, with the stuff in master I do see a {code: undefined, name: "TypeError", message: "Type error"}. I initially thought it was a capture thing, as it happens within navigator.mediaDevices.getUserMedia (the error is triggered at line 1667), but this turned out to be a red herring, as the catch in the promise is triggered by a problem happening in the echotest.js code that is executed by the success callback. As Josh said, the problem was in Janus.attachMediaStream, and more specifically because of the code we have that tracks Safari:


This was a change somebody contributed to get it working with iPhone, and more precisely with cordova-plugin-iosrtc:


I guess that, now that Safari supports WebRTC out of the box, we can remove those lines.

Removing those lines, the EchoTest from Safari to a Janus master installed on my Linux laptop worked flawlessly. No RTCP BYE issue or anything like that. I'm going to remove those lines and call it a win, for now: we can try to figure out what causes hangups later (maybe some other uncaught exception?)

L.

Julien Godier

unread,
Jun 9, 2017, 9:40:35 AM6/9/17
to Lorenzo Miniero, meetecho-janus, ig...@quickblox.com
Ok good news

So do I wait you change the actual master and remove those unnecessary lines or I have ton pply the PR 808 ?

Julien
To unsubscribe from this group and all its topics, send an email to meetecho-janu...@googlegroups.com.

Lorenzo Miniero

unread,
Jun 9, 2017, 9:46:08 AM6/9/17
to meetecho-janus, lmin...@gmail.com, ig...@quickblox.com
I already pushed the change: https://github.com/meetecho/janus-gateway/commit/f194e8ecff244283d5ca74ffe14c124efa72a32a
So yeah, updating to master should work. I'm currently in an H.264 videoroom (me Safari, my colleagues with Chrome and Firefox) and everything works just fine for me.

L.

Lorenzo Miniero

unread,
Jun 9, 2017, 10:18:02 AM6/9/17
to meetecho-janus, lmin...@gmail.com, ig...@quickblox.com

Ju Ju

unread,
Jun 9, 2017, 10:24:22 AM6/9/17
to Lorenzo Miniero, meetecho-janus, ig...@quickblox.com
Nice. I will try it asap

Did you check the video resolution ? Opus is working ?

J-


To unsubscribe from this group and all its topics, send an email to meetecho-janu...@googlegroups.com.

Ju Ju

unread,
Jun 9, 2017, 10:48:14 AM6/9/17
to Lorenzo Miniero, meetecho-janus, ig...@quickblox.com
Don’t understand. I m on the main branch. I apply your commit (I check the lines were well removed)

And still get this error 

[Error] WebRTC error: – {code: undefined, name: "TypeError", message: "Type error"}
error
error (videoroomtest.js:355)
(anonymous function) (janus.js:1661:82)
promiseReactionJob

Any idea ?

J-

Lorenzo Miniero

unread,
Jun 9, 2017, 11:38:28 AM6/9/17
to meetecho-janus, lmin...@gmail.com, ig...@quickblox.com
Just use a clean master revision and you'll be fine (probably something got messed up in between the experiments above).

L.

Ju Ju

unread,
Jun 9, 2017, 12:15:52 PM6/9/17
to Lorenzo Miniero, meetecho-janus, ig...@quickblox.com
I have done a clean install and still no luck :(

root@OMS-WEBRTC0:/opt/janus-gateway# git checkout
Votre branche est à jour avec 'origin/master'.
root@OMS-WEBRTC0:/opt/janus-gateway# git pull
Already up-to-date.
root@OMS-WEBRTC0:/opt/janus-gateway# date
vendredi 9 juin 2017, 18:14:26 (UTC+0200)

Still this error

Lorenzo Miniero

unread,
Jun 9, 2017, 12:21:16 PM6/9/17
to meetecho-janus, lmin...@gmail.com, ig...@quickblox.com
Are you updating the janus.js from the repo too in the webserver that's shipping it?

L.

Ju Ju

unread,
Jun 9, 2017, 12:30:42 PM6/9/17
to Lorenzo Miniero, meetecho-janus, ig...@quickblox.com
Good catch thx !

Now both echo test and videoroom are working !

There is some limitation and issue for me :

No audio (admin API tells me audio is set to true (has audio)

In the remote SDP I have
a=mid:audio
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=sendrecv
-> Safari issue or ?

The resolution is not good: I ask 1024x720 , I got 640x360
-> is it a Safari limitation ?



Josh Dickson

unread,
Jun 9, 2017, 1:18:42 PM6/9/17
to Ju Ju, Lorenzo Miniero, meetecho-janus, ig...@quickblox.com
I was going to say… the line number on your error is definitely what I had mentioned being wrong :).

Lorenzo, what’s the most helpful way to capture the echo test behavior that I’ve seen? Do you want a higher level log from Janus and the browser together?

Lorenzo Miniero

unread,
Jun 9, 2017, 1:25:04 PM6/9/17
to meetecho-janus, trank...@gmail.com, lmin...@gmail.com, ig...@quickblox.com
Not sure the Janus logs would help. They'd just tell you got an RTCP BYE. Capturing the traffic would be ideal, but the RTCP packet would be encrypted anyway. Maybe the JavaScript logs have something to tell. Not sure if Safari has some sort of webrtc-internals that tracks events that occurred on the PeerConnection, e.g., ICE or DTLS state changes and things like that. Detailed browser logs may help us spot some issue/exception that may lead to the web page hanging up the call.

L.

Kaplan

unread,
Jun 9, 2017, 2:32:22 PM6/9/17
to meetecho-janus, lmin...@gmail.com, ig...@quickblox.com
WOW, thanks to all of you for this!
Reading the comments above, Safari only supports H264, so I guess If we want to support screenshare on a video room, the only way to do it would be to share from FF on an h264 room? then it would play on Safari/Chrome?
To unsubscribe from this group and all its topics, send an email to meetecho-janu...@googlegroups.com.

Ju Ju

unread,
Jun 9, 2017, 2:40:30 PM6/9/17
to Kaplan, meetecho-janus, lmin...@gmail.com, ig...@quickblox.com
Screensharing is working well under chrome, didn’t work for safari 11 for me (crash the tab with a forever spinning wheel)

J- 

Kaplan

unread,
Jun 9, 2017, 2:42:41 PM6/9/17
to meetecho-janus, bell...@gmail.com, lmin...@gmail.com, ig...@quickblox.com
does Chrome even support screenshare in h264? I thought it just supported vp8/vp9

Ju Ju

unread,
Jun 9, 2017, 2:47:55 PM6/9/17
to Kaplan, meetecho-janus, Lorenzo Miniero, ig...@quickblox.com
Yes just test it working fine at 1680x1050


Lorenzo Miniero

unread,
Jun 9, 2017, 2:49:32 PM6/9/17
to Kaplan, meetecho-janus, ig...@quickblox.com
Yeah that's how we did it for a quick test. Kinda lame because I'm of course 100% pro-VP8, and having to use a proprietario codec like H264 only because Microsoft and Apple didn't bother to ship it sucks.

L.

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-janus+unsubscribe@googlegroups.com.

Lorenzo Miniero

unread,
Jun 9, 2017, 2:50:11 PM6/9/17
to Kaplan, meetecho-janus, ig...@quickblox.com
I think it treats it just like any other video stream, but I may be wrong.

L.

--
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-janus+unsubscribe@googlegroups.com.

Ju Ju

unread,
Jun 9, 2017, 2:55:40 PM6/9/17
to Lorenzo Miniero, Kaplan, meetecho-janus, ig...@quickblox.com



Yeah that's how we did it for a quick test. Kinda lame because I'm of course 100% pro-VP8, and having to use a proprietario codec like H264 only because Microsoft and Apple didn't bother to ship it sucks.

When google is offering you something like his video codec, it is not without having something in mind like trying to impose their codec as standard…
So what is sad it is that VP8 is giving the best picture quality to my pov
J-

Mirko Brankovic

unread,
Jun 9, 2017, 3:20:17 PM6/9/17
to meetecho-janus
Yeah but they bought the rights for h264 and are earning money when devices wants to use it, so it is normal that thay want to use own dog shi...food

--

Kaplan

unread,
Jun 9, 2017, 3:35:22 PM6/9/17
to meetecho-janus, bell...@gmail.com, ig...@quickblox.com
So I create an h264 video room, then I can use the Janus webrtc screenshare extension, and share from Chrome, and it will do h264???? sweeeeet..
To unsubscribe from this group and stop receiving emails from it, send an email to meetecho-janu...@googlegroups.com.

Josh Dickson

unread,
Jun 9, 2017, 3:54:14 PM6/9/17
to Kaplan, meetecho-janus, bell...@gmail.com, ig...@quickblox.com
I’m trying to do some additional testing with the echo test demo on the website… in Safari Technology Preview (yes, I’ve really made sure I’m in that and not the latest stable Safari version, 10) I’m now getting "No WebRTC support…"

Anything change on that overnight? Nothing meaningful in the logs.

Ju Ju

unread,
Jun 10, 2017, 3:51:23 AM6/10/17
to meetecho-janus, bell...@gmail.com, ig...@quickblox.com
Did you try on your own janus server or did you use the demo provided by meetheco ?


Lorenzo Miniero

unread,
Jun 10, 2017, 3:53:07 AM6/10/17
to meetecho-janus, bell...@gmail.com, ig...@quickblox.com
We haven't updated the demos online yet, but IIRC they didn't have tha Safari line either (in fact they worked for me, my local setup was the one that didn't).

L.
To unsubscribe from this group and all its topics, send an email to meetecho-janus+unsubscribe@googlegroups.com.

Ju Ju

unread,
Jun 10, 2017, 4:03:29 AM6/10/17
to Lorenzo Miniero, meetecho-janus, Kaplan, ig...@quickblox.com
Lorenzo

You didn’t answer for the audio nor the pictures resolution

For the audio, all my level seems to be mute

With only safari publishing I have 

[Sat Jun 10 10:02:56 2017] [rtp.c:janus_rtp_header_extension_parse_audio_level:155] ff --> v=1, level=127
[Sat Jun 10 10:02:56 2017] [rtp.c:janus_rtp_header_extension_parse_audio_level:155] ff --> v=1, level=127
[Sat Jun 10 10:02:56 2017] [rtp.c:janus_rtp_header_extension_parse_audio_level:155] ff --> v=1, level=127
[Sat Jun 10 10:02:56 2017] [rtp.c:janus_rtp_header_extension_parse_audio_level:155] ff --> v=1, level=127
[...


J-

Lorenzo Miniero

unread,
Jun 10, 2017, 4:04:40 AM6/10/17
to meetecho-janus, lmin...@gmail.com, bell...@gmail.com, ig...@quickblox.com
Audio works for me. No idea on the capture constraints, Safari just came out and I have no idea.

L.

Ju Ju

unread,
Jun 10, 2017, 4:11:39 AM6/10/17
to meetecho-janus
or maybe it is because H264 is hardware accelerated (and so save some battery consumption) when VP8 is not in most of CPU/GPU

Lorenzo Miniero

unread,
Jun 10, 2017, 4:19:08 AM6/10/17
to meetecho-janus
I don't care, still a proprietary codec hindering openness. And I never bought the openh264 argument, as if I want to be protected I have to download the proprietary library from Cisco for each of my encoders, building it myself from the source would break the Cisco agreement and not grant me a license. Anyway, Apple and Microsoft are breaking RFC7742, as H.264 is mandated but so is VP8: https://tools.ietf.org/html/rfc7742#section-5

L. 

Lorenzo Miniero

unread,
Jun 10, 2017, 4:21:07 AM6/10/17
to meetecho-janus
(although Edge may support VP8 now, I really haven't followed).

L.

Ju Ju

unread,
Jun 12, 2017, 12:00:58 PM6/12/17
to meetecho-janus
They do it again with H265 instead of the free codec (AB1 or something I don't remember)? you will be mad :)

Ju Ju

unread,
Jun 12, 2017, 12:03:43 PM6/12/17
to meetecho-janus, lmin...@gmail.com, bell...@gmail.com, ig...@quickblox.com
Ok I can tell you there is a serious bug with audio :

If you publish something with safari -> all is ok

If you are just "listening" with safari the audio is stuttering like hell, the video is ok. 

Video can be display in HD in Safari if the publisher has used this size but Safari cannot encode in HD AFAIN (oticed)


Maybe it is because it is still in beta...
J-


Ju Ju

unread,
Jul 3, 2017, 10:14:09 AM7/3/17
to meetecho-janus, lmin...@gmail.com, bell...@gmail.com, ig...@quickblox.com
Hi,

I have the feeling, the last safari update has maybe broken something

Now with the "echotest" I have this error message

message: "config.pc.addStream is not a function. (In 'config.pc.addStream(stream)', 'config.pc.addStream' is undefined)"

I'm on the master branch, update latest 1 week ago

J-

Binod Dokania

unread,
Jul 4, 2017, 3:15:01 AM7/4/17
to meetecho-janus
After following the discussion on this thread, i have used Janus.js and adapter.js from master branch and tried to run videoroom on safari 11 but i am getting an error (for local stream at safari) at config.pc = new RTCPeerConnection(pc_config, pc_constraints);

Code: Undefined, Type error, unable to create Peer connection.

So my question :is it necessary to build Janus server completely from scratch using master branch or only janus.js and adapter.js from master branch will do?
if only Janus.js and Adapter.js is sufficient then what could be possible reason of this error?

On Wednesday, June 7, 2017 at 2:44:36 PM UTC+5:30, Lorenzo Miniero wrote:
Hi there,

as you may have heard, Safari 11 supports WebRTC now. Anyway, I don't have access to a Mac or an iPhone to test if that works with Janus. Anybody played with it already? I've read it only does H.264, so you may have to change the configuration of some of the demos (e.g., an H.264 VideoRoom or an H.264 Streaming mountpoint) like it happened when testing Edge, but apart from that I'm mostly interested in whether janus.js and the WebRTC core in Janus do work with that.

Looking forward to some feedback!
Lorenzo

Lorenzo Miniero

unread,
Jul 4, 2017, 3:21:49 AM7/4/17
to meetecho-janus, lmin...@gmail.com, bell...@gmail.com, ig...@quickblox.com
We probably have to start using addTrack instead. There was a pull request recently to switch from streams to tracks, but it seemed not to work as expected, so more work will be needed.

L.

Lorenzo Miniero

unread,
Jul 4, 2017, 3:22:44 AM7/4/17
to meetecho-janus
Il giorno martedì 4 luglio 2017 09:15:01 UTC+2, Binod Dokania ha scritto:
After following the discussion on this thread, i have used Janus.js and adapter.js from master branch and tried to run videoroom on safari 11 but i am getting an error (for local stream at safari) at config.pc = new RTCPeerConnection(pc_config, pc_constraints);



There is no adapter.js in the master branch, it's imported externally.

L.

Ju Ju

unread,
Jul 4, 2017, 12:48:27 PM7/4/17
to meetecho-janus, lmin...@gmail.com, bell...@gmail.com, ig...@quickblox.com
Hello lorenzo,

I now have a idevice under ios11 and I could test demos on your website:

neither echotest nor videoroom are working.

On safari preview the local stream is not working but the remote one is working (stick at VGA resolution)

J-

Lorenzo Miniero

unread,
Jul 4, 2017, 12:51:08 PM7/4/17
to meetecho-janus, lmin...@gmail.com, bell...@gmail.com, ig...@quickblox.com
Yeah, as I said, Safari probably only supports working on tracks. I started messing with that a few days ago, and hopefully will find some time to work on a PR soon. Can't promise anything on speed though...

L.

Lorenzo Miniero

unread,
Jul 4, 2017, 1:35:46 PM7/4/17
to meetecho-janus, lmin...@gmail.com, bell...@gmail.com, ig...@quickblox.com

Ju Ju

unread,
Jul 4, 2017, 2:02:15 PM7/4/17
to Lorenzo Miniero, meetecho-janus, bell...@gmail.com, ig...@quickblox.com
Hi Lorenzo,

Not working for me. I start with the echotest and got this error

[Error] Unhandled Promise Rejection: TypeError: Argument 1 ('options') to RTCPeerConnection.createOffer must be a dictionary
(anonymous function)
rejectPromise
reject
createOffer (janus.js:1750)
streamsDone (janus.js:1333)
(anonymous function) (janus.js:1673)
promiseReactionJob

J-


Lorenzo Miniero

unread,
Jul 4, 2017, 2:13:23 PM7/4/17
to Julien Godier, Kaplan, meetecho-janus, ig...@quickblox.com
I don't have a mac os available so you'll have to tweak janus.js yourself. If you get it working please let me know which changes will be needed.

L.

To unsubscribe from this group and all its topics, send an email to meetecho-janus+unsubscribe@googlegroups.com.

For more options, visit https://groups.google.com/d/optout.

--
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-janus+unsubscribe@googlegroups.com.

Binod Dokania

unread,
Jul 5, 2017, 12:47:37 AM7/5/17
to meetecho-janus
Yeah..i have included this externally but still i am not able to get videoroom working because of exception mentioned.

Lorenzo Miniero

unread,
Jul 5, 2017, 2:45:29 AM7/5/17
to Binod Dokania, meetecho-janus
As I said, I don't have a Mac or Safari, so for now you'll have to try and debug the cause of the exception yourself. Any feedback will be more than welcome!

L.

--

Lorenzo Miniero

unread,
Jul 5, 2017, 3:28:07 AM7/5/17
to meetecho-janus, binod....@gmail.com
PS: make sure you're using the latest version of my PR, as I removed a bundlePolicy default we had that may or may not cause issues on Safari.

L.

Ju Ju

unread,
Jul 5, 2017, 5:53:21 AM7/5/17
to Lorenzo Miniero, meetecho-janus, binod....@gmail.com
Hi Lorenzo,

As you know my JS skills are close to null.
So little help is welcome, the message error , create offer must be a dictionary is not very helpful as it could be anything went wrong before

So I tried to compare the echotest with chrome:

I notice the problem is here, just after the creation of peer connection

Chrome (working):

isAudioSendEnabled: Object {data: true}
echotest.js:104 isVideoSendEnabled: Object {data: true}
janus.js:2166 isAudioSendEnabled: Object {data: true}
janus.js:2199 isVideoSendEnabled: Object {data: true}
janus.js:2177 isAudioSendRequired: Object {data: true}
janus.js:2210 isVideoSendRequired: Object {data: true}

janus.js:1241 streamsDone: MediaStream {id: "3XeqmEW6OXWkQN4t2V49HscwkDfYYJTAhiGs", active: true, onaddtrack: null, onremovetrack: null, onactive: null…}active: trueid: « ...
janus.js:1257 Creating PeerConnection
janus.js:1258 Object {optional: Array(1)}optional: ...

janus.js:1260 RTCPeerConnection {localDescription: RTCSessionDescription, remoteDescription: RTCSessionDescription, signalingState: "stable", iceGatheringState: "new", iceConnectionState: "new"…}


Safari 11:
[Debug] isAudioSendEnabled: – {data: true} (janus.js, line 2118)
[Debug] isVideoSendEnabled: – {data: true} (janus.js, line 2151)
[Debug] isAudioSendEnabled: – {data: true} (janus.js, line 2118)
[Debug] isVideoSendEnabled: – {data: true} (janus.js, line 2151)
[Debug] isAudioSendRequired: – {data: true} (janus.js, line 2129)
[Debug] isVideoSendRequired: – {data: true} (janus.js, line 2162)


[Debug] streamsDone: – MediaStream {id: "d4f8e1a6-c235-4ccd-b280-64a4b13e55d6", active: true, onaddtrack: null, …} (janus.js, line 1240)
[Log] Creating PeerConnection (janus.js, line 1256)
[Debug] {optional: [{DtlsSrtpKeyAgreement: true}]} (janus.js, line 1257)

[Debug] RTCPeerConnection {localDescription: null, currentLocalDescription: null, pendingLocalDescription: null, remoteDescription: null, currentRemoteDescription: null, …} (janus.js, line 1259)



I have no idea why everything is null as no error is thrown before…


J-

You received this message because you are subscribed to a topic in the Google Groups "meetecho-janus" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/meetecho-janus/Jx0CHJyWcvU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to meetecho-janu...@googlegroups.com.

Ju Ju

unread,
Jul 5, 2017, 6:28:14 AM7/5/17
to Lorenzo Miniero, meetecho-janus, binod....@gmail.com
Update :

Echotest is working now on Safari 11 preview but not on IOS11.

I had a browser cache bug on Safari preview but on IOS11 the issue seems different: the Datachanel is working so the Perso is up. The issue is with the local and remote video stream.
I will try to have some log (never debug on iOS device)

J-

Lorenzo Miniero

unread,
Jul 5, 2017, 8:35:37 AM7/5/17
to meetecho-janus, lmin...@gmail.com, binod....@gmail.com
Maybe Safari only supports the promise-based createOffer? Try using a more recent adapter, e.g., 4.1.0 instead of the 3.4.3 the demos currently load, to see if that fixes it (maybe the adapter shims createOffer to still allow the callback based approach):

L.

Ju Ju

unread,
Jul 5, 2017, 9:52:44 AM7/5/17
to meetecho-janus, lmin...@gmail.com, binod....@gmail.com
I made the change in my echotest.hml but unfortunately, it didn't solve the issue

I have tons of logs without any error, hard to debug !

Here the log of the browser during the echotest

and the same on janus side:

J-

Lorenzo Miniero

unread,
Jul 5, 2017, 10:15:58 AM7/5/17
to meetecho-janus, lmin...@gmail.com, binod....@gmail.com
I don't see any problem there, the JS logs clearly state that the negotiation went fine, and that media is flowing. You may want to have a look at the Admin API just to confirm that incoming and outgoing audio/video packets/bytes increase. If so, it's just a rendering issue.

L.

Ju Ju

unread,
Jul 5, 2017, 10:38:51 AM7/5/17
to Lorenzo Miniero, meetecho-janus, binod....@gmail.com
Hi Lorenzo 

Ok I can check the admin API but I already did a tcpdump and the RTP packets are sent

So I think yes maybe it is a rendering issue but the stream is not display in a chrome browser on another device ! And the other device didn’t detect the ios11 device when joining the same room.
The ios11 device can see others device but cannot display their streams neither

J-


Lorenzo Miniero

unread,
Jul 5, 2017, 10:40:40 AM7/5/17
to meetecho-janus, lmin...@gmail.com, binod....@gmail.com
Maybe a codec issue then. Have you tried iOS to iOS?

L.
To unsubscribe from this group and all its topics, send an email to meetecho-janus+unsubscribe@googlegroups.com.

Ju Ju

unread,
Jul 5, 2017, 12:51:36 PM7/5/17
to Lorenzo Miniero, meetecho-janus, binod....@gmail.com
A codec issue in the echo test ? So you mean the iPhone would encode using a coding scheme it can’t decode ?

By the way the issue is the same in the video room : I have only 1 iPhone under ios11 but I assume safari 11 under macOS would use a codec the iPhone could decode and vice versa

J-


To unsubscribe from this group and all its topics, send an email to meetecho-janu...@googlegroups.com.

Lorenzo Miniero

unread,
Jul 5, 2017, 12:56:27 PM7/5/17
to meetecho-janus, lmin...@gmail.com, binod....@gmail.com
You mentioned devices not being able to see each other, so I thought you were using the VideoRoom.

If media is flowing and nothing is rendered, there's not much I can do to help. One thing you can try to do is enable recording, and then use janus-pp-rec to convert the mjr file to an mp4 and see if that plays. Apart from that, you should ask the Safari developers or check if Safari has a debug mode that allows you to see if there's something it doesn't like.

L.

Ju Ju

unread,
Jul 6, 2017, 6:01:15 AM7/6/17
to Lorenzo Miniero, meetecho-janus, binod....@gmail.com


You mentioned devices not being able to see each other, so I thought you were using the VideoRoom.
Actually I test both to try to understand what ’s happen. I also notice in video room I don’t have in echo test (the error about the dictionary)


If media is flowing and nothing is rendered, there's not much I can do to help. One thing you can try to do is enable recording, and then use janus-pp-rec to convert the mjr file to an mp4 and see if that plays.
I did and I have well the video and the audio fine. One thing to notice: the video has a wrong orientation and need a 90° rotation. I don’t think it is why nothing is displayed but it could be an issue later.

Apart from that, you should ask the Safari developers or check if Safari has a debug mode that allows you to see if there's something it doesn't like.
-> I m using the « real device method »

I’m also afraid , safari developers don’t car much about janus users. They could claim having the most compatible WEBRTC browser working well with popular webrtc app:

We could wait the final and stable IOS 11 version but I’m afraid the issues we have now remain later…

J-


To unsubscribe from this group and all its topics, send an email to meetecho-janu...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages