October 19, 2016

Warm-up with dummy tracks and replaceTrack

Contributed by Jan-Ivar Bruaroey,

If you’ve looked at the WebRTC spec over the last year, you’ll find a gap between what it says and what browsers have implemented so far. The big difference is the spec talks about senders and receivers of tracks, whereas most browsers still operate with streams.

Firefox is the only browser so far to have pivoted to tracks, the stuff streams are made of. This opens up exciting possibilities like sender.replaceTrack(). It lets you switch out an already-sending track without needing to renegotiate, and still see the change reflected remotely. We’re not fully done with senders and receivers, and we have more to do (like transports), but replaceTrack works.

The spec, however, goes even further, defining transceivers, a pairing of a sender and a receiver. Even Firefox hasn’t implemented that yet. The spec shows an example of connection warm-up using transceivers to set up a connection before media is ready. This means you can send media the instant it becomes available. Quite neat, and a benefit of the spec moving to objects that can exist before media is added.

But it turns out we don’t have to wait for transceivers to do warm-up, which is what we’re going to show here! (more…)

September 26, 2016

Just Begin Again (ICE Restart)

Contributed by Michael Froman, crossing IP communication streams since 2005

Where do we, well, start? First a quick word about ICE itself. ICE stands for Interactive Connectivity Establishment, and, at its root, is how your browser discovers exactly how to connect to other computers through a NAT for WebRTC calls. ICE restart becomes necessary when network conditions change such as when transitioning from WiFi to a cellular network, or between two different WiFi networks.

OK. I hear you asking, “How does this affect me?” Or maybe more likely, “I think this is affecting me! How can I tell?”. I’m glad you asked. (more…)

1 3 4 5