I don't have experience using a filter, and haven't used the JS api since early prototyping, so I can't speak to that, but there are a couple of things you can check:
- check the logging in the kurento server instance and make sure you're seeing something like "pair selected" to indicate the gathering part really connected. You may need to up the logging level to do so. 'tail -f /var/log/kurent*/media*20*' to watch, edit /etc/defaults/kurento-media-server to change, higher numbers is more logging. The log in general is useful.
- the rtpendpoint should connect right away IIRC so you can use either tcpdump or netstat to see if the connection is made. In my case it was audio and video on 6990 and 6992 so RTCP connects on 6991 and 6993 right away, even before the webrtc flow starts (something like 'sudo tcpdump -n udp ' or 'netstat -na --udp | grep 699')
You should probably show your rtp SDP offer.
IF you're trying to connect to something like AWS mediaLive it won't work - mediaLive is expecting a m2ts stream, both audio and video on one port, and kurento does not output that. Maybe with a gstreamer plugin but I haven't had a chance to look at this yet. I've successfully connected to wowza via RTP, or to ffmpeg and then to mediaLive.
(Just reading I think you're right that the example is flawed, and your version is more correct. Connecting webrtcendpoint to itself doesn't make sense).
Re, the filter, we've used webrtc constraints to set an ideal framerate and have seen vastly varying rates from 1-3fps (some configurations, fixed by switching to Firefox) to a reported 48fps (looked like a decoder bug actually) but maybe remove the filter until you've got the basic pipeline working.
later, j