webrtc-tools

WebRTC / Python / GStreamer

Needs:

gstreamer1.0 gstreamer1.0-plugins-good gstreamer1.0-nice
gstreamer1.0-plugins-bad gir1.2-gstreamer-1.0

Depends on WebRTC GStreamer elements found here:

https://code.google.com/p/kurento/source/checkout?repo=gst-plugins-webrtc

Also this Python websocket client library:

https://pypi.python.org/pypi/websocket-client/

Signalling is based on peacock's JSON protocol:

http://readmes.numm.org/peacock/

Currently works only with SDES (Chrome) and not DTLS (Firefox and Chrome).

https://bugzilla.gnome.org/show_bug.cgi?id=697907
https://bugzilla.gnome.org/show_bug.cgi?id=697908
https://bugzilla.gnome.org/show_bug.cgi?id=697909
http://cgit.collabora.com/git/user/tester/gst-plugins-bad.git/log/?h=dtls
http://cgit.collabora.com/git/user/tester/glib-networking.git/log/?h=dtls
http://cgit.collabora.com/git/user/tester/glib.git/log/?h=datagram

Here are some cool environment variables:

GST_DEBUG_DUMP_DOT_DIR=`pwd`
G_DEBUG=fatal-criticals
GST_DEBUG=3,webrtcbin:5
GST_PLUGIN_PATH=.../kurento.gst-plugins-webrtc/src/.libs

We implement a simple signaling server that provides access to recorded streams.

1 - WEBUSER connects to /_record
2 - SIG_SERV signals to RECORDER a new connection
3 - RECORDER makes an offer to WEBUSER (via SIG_SERV)
4 - WEBUSER makes an answer to RECORDER (via SIG_SERV)
5 - ICECANDIDATES are exchanged between RECORDER and WEBUSER (via SIG_SERV)
[now we have a direct connection, and RECORDER dumps the a/v stream to disk]
6 - eos/disconnect communicated from WEBUSER to RECORDER (via SIG_SERV)

To enable this, we provide support for the following messages:

RECORDER -> WEBUSER (via SIG_SERV)
{type: "offer", to:, data:}
{type: "icecandidate", to:, data:}

WEBUSER -> RECORDER (via SIG_SERV)
{type: "answer", data:, id:}
{type: "icecandidate", data:, id:}

{type: "eos", id:}

SIG_SERV -> RECORDER
{type: "userjoin", id:}

RECORDER -> SIG_SERV
{type: "recorder", (secret:)}

git clone git://git.numm.org/webrtc-tools

snapshot: webrtc-tools.zip

files