New codelab: Realtime communication with WebRTC

WebRTC samples

This is a repository for the WebRTC Javascript code samples. The source for these samples is available at github.com/webrtc/samples.

Some of the samples use new browser features. They may only work in Chrome Canary, Firefox Beta or Microsoft Edge (available with Windows 10), and may require flags to be set.

Most of the samples use adapter.js, a shim to insulate apps from spec changes and prefix differences. (In fact, the standards and protocols used for WebRTC implementations are highly stable, and there are only a few prefixed names. For full interop information, see webrtc.org/web-apis/interop.)

In Chrome and Opera, all samples that use getUserMedia() must be run from a server. Calling getUserMedia() from a file:// URL will work in Firefox, but fail silently in Chrome and Opera.

webrtc.org/testing lists command line flags useful for development and testing with Chrome.

For more information about WebRTC, we maintain a list of resources at g.co/webrtc. If you've never worked with WebRTC, we recommend you start with the 2013 Google I/O WebRTC presentation.

Patches and issues welcome! See CONTRIBUTING.md for instructions. The Developer's Guide for this repo has more information about code style, structure and validation. Head over to test/README.md and get started developing.

Warning: some of these demos will result in loud feedback if used without headphones.

The demos

getUserMedia

Basic getUserMedia demo

Use getUserMedia with canvas

Use getUserMedia with canvas and CSS filters

Choose camera resolution

Audio-only getUserMedia() output to local audio element

Audio-only getUserMedia() displaying volume

Face tracking, using getUserMedia and canvas

Record stream

Stream capture

Stream from a canvas element to a video element

Stream from a canvas element to a peer connection

Devices

Choose camera, microphone and speaker

Choose media source and audio output

RTCPeerConnection

Basic peer connection demo

Audio-only peer connection demo

Change bandwidth on the fly

Multiple peer connections at once

Forward the output of one PC into another

Munge SDP parameters

Use pranswer when setting up a peer connection

Constraints and stats

Display createOffer output for various scenarios

Use RTCDTMFSender

Display peer connection states

ICE candidate gathering from STUN/TURN servers

Do an ICE restart

Web Audio output as input to peer connection

Peer connection as input to Web Audio

RTCDataChannel

Transmit text

Transfer a file

Transfer data

Video chat

AppRTC video chat client powered by Google App Engine

AppRTC URL parameters

github.com/webrtc/samples