| 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 | |