Issue by tomka
Wednesday Jan 08, 2014 at 02:42 GMT
Originally opened as palavatv/palava-client#2
Hi,
I've got the problem that I can't get neither a video nor an audio stream from some people. In such a situation both the other participant and I see our own video, but not the other one. Instead of the video of the other person one sees a white surface and the small size video on the right is just a light grayish box with a small dark gray dot in the center.
Apparently, this network settings of the participants isn't the root of the problem: I (A) have tested with two other people (B and C), where I knew it worked with B. B and C could see each other, but I could only see B and not C.
I've set up my own palava-machine server instance to make further tests, but can't find anything suspicious in it's output. According to a short discussion on IRC, the problem is more likely to be in the client. Looking at the JavaScript console, I see the following when I enter an empty room:
21:05:44.856 Unknown property '-moz-border-radius'. Declaration dropped. all-e4ccc770.css:9
21:05:44.856 Expected 'none' or URL but found 'progid'. Error in parsing value for 'filter'. Declaration dropped. all-e4ccc770.css:9
21:05:44.856 Expected declaration but found '*'. Skipped to next declaration. all-e4ccc770.css:9
21:05:44.856 Unknown property '-moz-box-shadow'. Declaration dropped. all-e4ccc770.css:9
21:05:44.857 Error in parsing value for 'background-image'. Declaration dropped. all-e4ccc770.css:9
21:05:44.857 Expected end of value but found '\9 '. Error in parsing value for 'background-color'. Declaration dropped. all-e4ccc770.css:9
21:05:44.857 Unknown pseudo-class or pseudo-element '-ms-input-placeholder'. Ruleset ignored due to bad selector. all-e4ccc770.css:9
21:05:44.857 Unknown pseudo-class or pseudo-element '-webkit-input-placeholder'. Ruleset ignored due to bad selector. all-e4ccc770.css:9
21:05:44.857 Unknown property '-moz-border-radius-bottomleft'. Declaration dropped. all-e4ccc770.css:9
21:05:44.857 Unknown property '-moz-border-radius-topleft'. Declaration dropped. all-e4ccc770.css:9
21:05:44.857 Unknown property '-moz-border-radius-topright'. Declaration dropped. all-e4ccc770.css:9
21:05:44.857 Unknown property '-moz-border-radius-bottomright'. Declaration dropped. all-e4ccc770.css:9
21:05:44.857 Expected 'none' or URL but found 'alpha('. Error in parsing value for 'filter'. Declaration dropped. all-e4ccc770.css:9
21:05:44.857 Unknown property '-moz-background-clip'. Declaration dropped. all-e4ccc770.css:9
21:05:44.858 Unknown property 'zoom'. Declaration dropped. all-e4ccc770.css:9
21:05:44.858 Unknown property 'box-sizing'. Declaration dropped. all-e4ccc770.css:9
21:05:44.858 Unknown property '-moz-background-size'. Declaration dropped. all-e4ccc770.css:9
21:05:44.858 Unknown property 'hyphens'. Declaration dropped. all-e4ccc770.css:9
21:05:44.858 Unknown pseudo-class or pseudo-element 'selection'. Ruleset ignored due to bad selector. all-e4ccc770.css:9
21:05:44.858 Error in parsing value for 'background'. Declaration dropped. all-e4ccc770.css:9
21:05:44.858 Expected color but found 'top'. Error in parsing value for 'background'. Declaration dropped. all-e4ccc770.css:9
21:05:44.859 Error in parsing value for 'font-size'. Declaration dropped. all-e4ccc770.css:9
21:05:44.860 TypeError: anonymous function does not always return a value palava-f6e1cdc0.js:624
21:05:44.860 TypeError: anonymous function does not always return a value palava-f6e1cdc0.js:663
21:05:44.861 TypeError: anonymous function does not always return a value palava-f6e1cdc0.js:824
21:05:44.861 TypeError: anonymous function does not always return a value palava-f6e1cdc0.js:908
21:05:44.861 TypeError: anonymous function does not always return a value palava-f6e1cdc0.js:992
21:05:44.861 TypeError: anonymous function does not always return a value palava-f6e1cdc0.js:1089
21:05:44.861 SyntaxError: test for equality (==) mistyped as assignment (=)? palava-f6e1cdc0.js:1123
21:05:44.861 TypeError: anonymous function does not always return a value palava-f6e1cdc0.js:1121
21:05:44.861 TypeError: anonymous function does not always return a value palava-f6e1cdc0.js:1116
21:05:44.862 TypeError: anonymous function does not always return a value palava-f6e1cdc0.js:1334
21:05:44.862 TypeError: anonymous function does not always return a value palava-f6e1cdc0.js:1392
21:05:44.862 SyntaxError: test for equality (==) mistyped as assignment (=)? palava-f6e1cdc0.js:1429
21:05:44.862 TypeError: anonymous function does not always return a value palava-f6e1cdc0.js:1434
21:05:44.862 TypeError: anonymous function does not always return a value palava-f6e1cdc0.js:1411
21:05:44.891 TypeError: function u does not always return a value all-e6445a34.js:14
21:05:44.891 SyntaxError: test for equality (==) mistyped as assignment (=)? all-e6445a34.js:14
21:05:44.891 TypeError: function O does not always return a value all-e6445a34.js:14
21:05:44.891 SyntaxError: test for equality (==) mistyped as assignment (=)? all-e6445a34.js:14
21:05:44.892 SyntaxError: test for equality (==) mistyped as assignment (=)? all-e6445a34.js:24
21:05:44.892 TypeError: anonymous function does not always return a value all-e6445a34.js:24
21:05:44.893 SyntaxError: test for equality (==) mistyped as assignment (=)? all-e6445a34.js:24
21:05:44.893 TypeError: anonymous function does not always return a value all-e6445a34.js:24
21:05:44.894 SyntaxError: test for equality (==) mistyped as assignment (=)? all-e6445a34.js:24
21:05:44.894 TypeError: anonymous function does not always return a value all-e6445a34.js:24
21:05:44.895 TypeError: anonymous function does not always return a value all-e6445a34.js:25
21:05:44.898 SyntaxError: test for equality (==) mistyped as assignment (=)? all-e6445a34.js:25
21:05:44.898 TypeError: anonymous function does not always return a value all-e6445a34.js:25
21:05:44.899 TypeError: anonymous function does not always return a value all-e6445a34.js:26
21:05:44.899 TypeError: function U does not always return a value all-e6445a34.js:26
21:05:44.900 TypeError: function st does not always return a value all-e6445a34.js:26
21:05:44.900 TypeError: function ht does not always return a value all-e6445a34.js:26
21:05:44.900 SyntaxError: test for equality (==) mistyped as assignment (=)? all-e6445a34.js:26
21:05:44.900 TypeError: function yt does not always return a value all-e6445a34.js:26
21:05:44.900 TypeError: anonymous function does not always return a value all-e6445a34.js:26
21:05:44.900 TypeError: variable e redeclares argument all-e6445a34.js:26
21:05:44.900 TypeError: anonymous function does not always return a value all-e6445a34.js:26
21:05:44.902 TypeError: function h does not always return a value all-e6445a34.js:27
21:05:44.903 TypeError: anonymous function does not always return a value all-e6445a34.js:27
21:05:44.903 SyntaxError: test for equality (==) mistyped as assignment (=)? all-e6445a34.js:27
21:05:44.903 TypeError: anonymous function does not always return a value all-e6445a34.js:27
21:05:44.903 SyntaxError: test for equality (==) mistyped as assignment (=)? all-e6445a34.js:27
21:05:44.905 TypeError: anonymous function does not always return a value all-e6445a34.js:27
21:05:44.907 TypeError: anonymous function does not always return a value all-e6445a34.js:46
21:05:44.907 TypeError: anonymous function does not always return a value all-e6445a34.js:100
21:05:44.907 TypeError: anonymous function does not always return a value all-e6445a34.js:136
21:05:44.908 TypeError: anonymous function does not always return a value all-e6445a34.js:209
21:05:44.909 TypeError: anonymous function does not always return a value all-e6445a34.js:263
21:05:44.910 SyntaxError: mistyped ; after conditional? all-e6445a34.js:263
21:05:44.910 TypeError: anonymous function does not always return a value all-e6445a34.js:263
21:05:44.930 ReferenceError: reference to undefined property [][1] all-e6445a34.js:27
21:05:44.932 ReferenceError: reference to undefined property p.delegateType all-e6445a34.js:24
21:05:44.933 ReferenceError: reference to undefined property e.selector all-e6445a34.js:14
21:05:44.978 Unknown property 'box-sizing'. Declaration dropped. test3
21:05:44.979 ReferenceError: reference to undefined property this[xt(...)] all-e6445a34.js:28
21:05:44.985 ReferenceError: reference to undefined property [][1] all-e6445a34.js:27
21:05:44.986 ReferenceError: reference to undefined property r[n] all-e6445a34.js:24
21:05:44.988 ReferenceError: reference to undefined property w[d] all-e6445a34.js:26
21:05:44.990 ReferenceError: reference to undefined property ot.event.triggered all-e6445a34.js:25
21:05:44.992 ReferenceError: reference to undefined property r[gt.expando] all-e6445a34.js:25
21:05:44.992 ReferenceError: reference to undefined property s.title all-e6445a34.js:30
21:05:44.994 ReferenceError: reference to undefined property e.headers all-e6445a34.js:27
21:05:44.994 ReferenceError: reference to undefined property t.params all-e6445a34.js:27
21:05:44.994 ReferenceError: reference to undefined property e.n all-e6445a34.js:26
21:05:45.000 ReferenceError: reference to undefined property ot.event.triggered all-e6445a34.js:24
21:05:45.001 Use of getPreventDefault() is deprecated. Use defaultPrevented instead. all-e6445a34.js:25
21:05:45.001 ReferenceError: reference to undefined property e.result all-e6445a34.js:25
21:05:45.197 ReferenceError: reference to undefined property n[i] all-e6445a34.js:26
21:05:45.215 ReferenceError: reference to undefined property u[i] all-e6445a34.js:24
21:05:45.219 ReferenceError: reference to undefined property s.room all-e6445a34.js:41
21:05:45.219 ReferenceError: reference to undefined property s.userMediaTitles all-e6445a34.js:30
21:05:49.975 ReferenceError: reference to undefined property i[o] all-e6445a34.js:25
21:05:52.423 "DEBUG" [object Arguments] all-e6445a34.js:27
21:05:52.541 ReferenceError: reference to undefined property c.assign all-e6445a34.js:263
21:05:52.536 "DEBUG" [object Arguments] all-e6445a34.js:27
21:05:52.545 "DEBUG" [object Arguments] all-e6445a34.js:27
If a participant joins, independent of whether it eventually works or not, I get the following additional lines:
21:07:37.742 "DEBUG" [object Arguments] all-e6445a34.js:27
21:07:41.734 Unhandled state type: 1
21:07:41.826 remoteStreams is deprecated!
21:07:41.834 ReferenceError: reference to undefined property s.name all-e6445a34.js:52
21:07:41.826 "DEBUG" [object Arguments] all-e6445a34.js:27
the first debug object of the second log snipped says "peer joined" and the second says "peer stream ready". When I look at the peerConnection property of the debug object's field '1' I also get:
21:14:13.312 localStreams is deprecated!
21:14:13.312 remoteStreams is deprecated!
21:14:13.312 readyState is deprecated!
However, one property of the peerConnection object that is different between the working and non working case is iceConnectionState
. It reads 'connected' for the working and 'closed' for the non working case. There is also readyState
'active' vs. 'closed' and and for signalingState
'stable' vs. 'closed'. Consequently, remoteStream
is an object in the working and null in the non working case.
This log was generated in Firefox 26.0. In the working case the participant had Iron 31.0.1700.0, but I got it also working when the participant had Firefox 25 and 26. So apparently the problem is not the browsers, but the ICE discovery, right?
According to http://www.html5rocks.com/en/tutorials/webrtc/basics/#ice for the discovery several things are tried. Can palava give some information which step exactly fails? Is it possible to involve a TURN server?
Edit: I just installed turnserver and replaced line 543 of palava-f6e1cdc0.js with (IP and pass removed):
new palava.browser.PeerConnection({
iceServers: [
{url: "stun:stun.l.google.com:19302"},
{url: "turn:[email protected]:3478", credential: "PASSWORD"}
]
});
However, when having the TURN line in there, palava tells me my browser doesn't support WebRTC. It seems to me that there isn't even an exception thrown (nothing is shown if I add console output in the catch block). This happens only in Firefox, in Chrome the test works. Any idea why this happens?