| | 1 | = webrtc2sip = |
| | 2 | |
| | 3 | == Overview == |
| | 4 | |
| | 5 | The [http://www.webrtc2sip.org/ webrtc2sip project] provides server components necessary to work with [https://code.google.com/p/sipml5/ sipml5] (the html5 sip library). sipml5 allows us to have a fully functional SIP client built in a web page using html5. We use that library to provide our [wiki:freeswitch-mexcla-html5-admin mexcla interpretation conference call system]. |
| | 6 | |
| | 7 | In particular, we depend on it to provide: |
| | 8 | |
| | 9 | * [https://code.google.com/p/webrtc2sip/#SIP_Proxy sip proxy] which converts communication from [https://en.wikipedia.org/wiki/Websocket Websocket] (which is how all html5 audio/video apps communicate) into [https://en.wikipedia.org/wiki/Session_Initiation_Protocol SIP] (which is the protocol used by our [wiki:freeswitch freeswitch] server, that handles the conference call). |
| | 10 | * [https://code.google.com/p/webrtc2sip/#RTCWeb_Breaker RTC Web breaker] which provides server side support for [https://en.wikipedia.org/wiki/Interactive_Connectivity_Establishment ICE] (the way clients get around NAT) and DTLS/SRTP (secure real time protocol and secure UDP). These protocols are mandatory in html5 applications, but are not supported natively by freeswitch, so webrtc2sip handles that part of the communication. |
| | 11 | * [https://code.google.com/p/webrtc2sip/#Media_Coder Media coder] which provides codec support and conversion for opus and g.711 (freeswitch actually supports both codecs so we don't really need this one). |
| | 12 | |
| | 13 | == Installation == |
| | 14 | |
| | 15 | webrtc2sip is not [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=711863 yet] in Debian. |
| | 16 | |
| | 17 | The following packages are not required for building webrtc2sip, but is required to properly run a client: |
| | 18 | |
| | 19 | {{{ |
| | 20 | apt-get install resiprocate-turn-server |
| | 21 | }}} |
| | 22 | |
| | 23 | To install the components: |
| | 24 | |
| | 25 | * Ensure you are running wheezy (squeeze would probably work but I didn't try) |
| | 26 | |
| | 27 | * Install debian dependencies. As root: |
| | 28 | {{{ |
| | 29 | apt-get install make libtool autoconf subversion git wget libogg-dev gcc gobjc++ libsrtp0-dev libsrtp0 srtp-utils openssl libspeex-dev libspeexdsp-dev libspeex1 libspeexdsp1 yasm libvpx-dev libvpx1 libopus-dev libopus0 libopencore-amrnb-dev libopencore-amrwb-dev libopencore-amrwb0 libopencore-amrnb0 libgsmme-dev libgsmme1c2a libgsm1-dev libgsm1 libgsm0710-dev libgsm0710-0 libgsm0710mux-dev libxml2-dev libxml2 libopal3.10.4 libavcodec-dev |
| | 30 | }}} |
| | 31 | |
| | 32 | Note: we are not supporting codecs/libraries not shipped with debian (libyuv, g.729, ilbc, h264, h263, MP4V-ES) |
| | 33 | |
| | 34 | * As root, create the target directory and chown to your non-priv user: |
| | 35 | {{{ |
| | 36 | mkdir /usr/local/src/doubango |
| | 37 | chown <user>:<user> /usr/local/src/doubango |
| | 38 | }}} |
| | 39 | * As non-priv user, Checkout the framework source code: |
| | 40 | {{{ |
| | 41 | cd /usr/local/src/ |
| | 42 | svn checkout http://doubango.googlecode.com/svn/branches/2.0/doubango doubango |
| | 43 | }}} |
| | 44 | * As non-priv user, build the framework source code: |
| | 45 | {{{ |
| | 46 | cd doubango |
| | 47 | ./autogen.sh && ./configure --with-ssl --with-srtp |
| | 48 | make |
| | 49 | }}} |
| | 50 | * As root, install (will install in /usr/local) |
| | 51 | {{{ |
| | 52 | make install |
| | 53 | ldconfig |
| | 54 | }}} |
| | 55 | * As root user, create the target directories: |
| | 56 | {{{ |
| | 57 | mkdir /usr/local/src/webrtc2sip |
| | 58 | chown <user>:<user> /usr/local/src/webrtc2sip |
| | 59 | }}} |
| | 60 | * As non-priv user, checkout the webrtc2sip code: |
| | 61 | {{{ |
| | 62 | cd /usr/local/src/ |
| | 63 | svn checkout http://webrtc2sip.googlecode.com/svn/trunk webrtc2sip |
| | 64 | }}} |
| | 65 | * As non-priv user, build: |
| | 66 | {{{ |
| | 67 | cd webrtc2sip |
| | 68 | ./autogen.sh && ./configure --with-doubango=/usr/local --prefix=/usr/local |
| | 69 | make clean && make |
| | 70 | }}} |
| | 71 | * As root, install: |
| | 72 | {{{ |
| | 73 | make install |
| | 74 | }}} |
| | 75 | * As root, copy config file to /etc/ and create symlink: |
| | 76 | {{{ |
| | 77 | mkdir /etc/webrtc2sip |
| | 78 | cp -f ./config.xml /etc/webrtc2sip |
| | 79 | }}} |
| | 80 | * To run: |
| | 81 | {{{ |
| | 82 | export LD_LIBRARY_PATH=/usr/local/lib |
| | 83 | /usr/local/sbin/webrtc2sip --config=/etc/webrtc2sip/config.xml |
| | 84 | }}} |
| | 85 | |
| | 86 | |