User Tools

Site Tools


installation_d_une_plateforme_de_stream_sur_serveur_sme_9

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
installation_d_une_plateforme_de_stream_sur_serveur_sme_9 [2016/01/18 12:49]
romain
installation_d_une_plateforme_de_stream_sur_serveur_sme_9 [2016/02/23 21:01] (current)
romain
Line 32: Line 32:
  
 Sur un serveur SME 9 fraichement installé nous allons commencer par installer [[ https://​rtcmulticonnection.herokuapp.com/​ |RTCMultiConnection-v3.0]]. Sur un serveur SME 9 fraichement installé nous allons commencer par installer [[ https://​rtcmulticonnection.herokuapp.com/​ |RTCMultiConnection-v3.0]].
- 
- 
--Nous téléchargeons les sources : 
-<​code>​mkdir RTCMultiConnection-v3.0 && cd RTCMultiConnection-v3.0 
-wget http://​dl.webrtc-experiment.com/​rtcmulticonnection-v3.tar.gz 
-tar -zxvf rtcmulticonnection-v3.tar.gz 
-ls -a 
-</​code>​ 
  
 -Nous installons nodejs : -Nous installons nodejs :
Line 63: Line 55:
 Puis nodejs : Puis nodejs :
 <​code>​yum --enablerepo=epel install nodejs</​code>​ <​code>​yum --enablerepo=epel install nodejs</​code>​
 +
 +
 +-Nous téléchargeons les sources rtcMulticonnexion:​
 +
 +<​code>​mkdir RTCMultiConnection-v3.0 && cd RTCMultiConnection-v3.0
 +wget http://​dl.webrtc-experiment.com/​rtcmulticonnection-v3.tar.gz
 +tar -zxvf rtcmulticonnection-v3.tar.gz
 +ls -a
 +</​code>​
  
 Et on démarre le serveur en fond de tâche sur le port 9001: Et on démarre le serveur en fond de tâche sur le port 9001:
  
 <​code>​nohup nodejs server.js > /dev/null 2>&1 &</​code>​ <​code>​nohup nodejs server.js > /dev/null 2>&1 &</​code>​
 +
 +
 +
 +On install le codec opus :
 +<​code>​
 +
 +  ###    l i b o g g 
 +curl  ftp://​downloads.xiph.org/​pub/​xiph/​releases/​ogg/​libogg-1.3.1.tar.xz ​   >​libogg-1.3.1.tar.xz;​
 +xz -d   ​libogg-1.3.1.tar.xz ​ ;  ​
 +tar  -xvf libogg-1.3.1.tar ​ ;  ​
 +cd  libogg-1.3.1;​
 +./​configure ​ ;
 +make   &&​ make check && make install ;
 +
 +  ###    o p u s
 +wget http://​downloads.xiph.org/​releases/​opus/​opus-1.1.2.tar.gz
 +tar -xvf opus-1.1.2.tar.gz ; 
 +cd opus-1.1.2 ; 
 +./configure ;
 +make  && ​ make check  && ​ make install ;
 +
 +  ###  f l a c
 +curl  http://​downloads.xiph.org/​releases/​flac/​flac-1.3.0.tar.xz ​ >  flac-1.3.0.tar.xz ;
 +xz -d flac-1.3.0.tar.xz ;
 +tar -x  flac-1.3.0.tar ;
 +cd  flac-1.3.0 ;
 +./configure ;
 +make  && ​ make check  && ​ make install ;
 +
 + ### ​  o p u s     t o o l s
 +curl  http://​downloads.xiph.org/​releases/​opus/​opus-tools-0.1.7.tar.gz ​ >   ​opus-tools-0.1.7.tar.gz;​
 +gzip -d     ​opus-tools-0.1.7.tar.gz ​ ; 
 +tar -xvf    opus-tools-0.1.7.tar ​ ;
 +cd   ​opus-tools-0.1.7 ​  ;
 +./configure ;
 +make  && make install ;
 +
 +</​code>​
 +
 +Une fois installé on l'​active comme ceci dans sa page html :
 +<​code>​
 + connection.processSdp = function(sdp) {
 +        sdp = remove_vp8_codecs(sdp);​
 +        sdp = prefer_opus (sdp);
 +        sdp = use_maxaveragebitrate(sdp);​
 +        return sdp;
 +        };
 +</​code>​
 +
 +Et on "​force"​ le bitrate à la valeur que l'on souhaite (ici 192):
 +<​code>​
 +
 +var BandwidthHandler = connection.BandwidthHandler;​
 +connection.bandwidth = {
 +    audio: 128,
 +    video: 256,
 +    screen: 300
 +};
 +connection.processSdp = function(sdp) {
 +    sdp = BandwidthHandler.setApplicationSpecificBandwidth(sdp,​ connection.bandwidth,​ !!connection.session.screen);​
 +    sdp = BandwidthHandler.setVideoBitrates(sdp,​ {
 +        min: connection.bandwidth.video,​
 +        max: connection.bandwidth.video
 +    });
 +
 +    sdp = BandwidthHandler.setOpusAttributes(sdp);​
 +
 +    sdp = BandwidthHandler.setOpusAttributes(sdp,​ {
 +        '​stereo':​ 1,
 +        //'​sprop-stereo':​ 1,
 +        '​maxaveragebitrate':​ connection.bandwidth.audio * 1000 * 8,
 +        '​maxplaybackrate':​ connection.bandwidth.audio * 1000 * 8,
 +        //'​cbr':​ 1,
 +        //'​useinbandfec':​ 1,
 +        // '​usedtx':​ 1,
 +        '​maxptime':​ 3
 +    });
 +
 +    return sdp;
 +};
 +</​code>​
 +
 +
 +=== Utilisation de appRTC ====
 +
 +Une autre utilisation de webrtc est appRTC.
 +
 +On peut trouver une démo ici : 
 +
 +[[https://​apprtc.appspot.com/​|Demo AppRTC]]
 +
 +Les parametres audio et video sont modifiables via l'url ainsi pour changer le bitrate d'​envoie on ajoute :
 +
 +<​code>​asbr=128</​code>​
 +
 +"​asbr"​ pour Audio Send Bit Rate donc pour le receveur ​
 +
 +"​arbr"​ Audio Receive Bit Rate ....
 +
 +On peut également changer les paramètres video, choisir les codecs ...
 +
 +Ainsi pour un flux audio sans video avec le codec opus à 44100 hz et bitrate à 128 send et receive on à une url de ce type :
 +
 +<​code>​https://​apprtc.appspot.com/?​audio=true&​asc=opus/​44100&​arc=opus/​44100&​asbr=128000&​arbr=128000&​video=false</​code>​
 +
 +Ici les références : [[http://​gingertech.net/​2014/​03/​19/​apprtc-googles-webrtc-test-app-and-its-parameters/​|Paramètres]]
 +
 +
 +=== Installation de appRTC sur le serveur ====
 +
 +On se crée un dossier streamserver et appengine dans le repertoire www :
 +<​code>​
 +sudo su
 +cd /​var/​www/​html
 +mkdir streamserver
 +cd streamserver
 +</​code>​
 +
 +Vous avez besoin d'​installer Google App Engine SDK for Python :
 +
 +<​code>​
 +mkdir appengine
 +cd appengine
 +wget https://​storage.googleapis.com/​appengine-sdks/​featured/​google_appengine_1.9.32.zip
 +unzip google_appengine_1.9.32.zip
 +export PATH=$PATH:/​path/​to/​google_appengine/</​code>​
 +Soyez sur d'​avoir la version 2.7 de python d'​installée :
 +
 +<​code>/​usr/​bin/​env python -V</​code>​
 +
 +Puis le serveur :
 +
 +
 +<​code>​
 +cd /​var/​www/​html/​streamserver/​
 +apt-get install nodejs npm git python-webtest nodejs-legacy
 +npm install -g npm
 +npm -g install grunt-cli
 +git clone https://​github.com/​webrtc/​apprtc.git
 +cd apprtc
 +npm install
 +grunt build</​code>​
 +
 +Pour démarrer le serveur ​
 +
 +<​code>​
 +cd /​var/​www/​html/​streamserver/​apprtc
 +/​var/​www/​html/​streamserver/​appengine/​google_appengine/​dev_appserver.py ./​out/​app_engine
 +</​code>​
 +
 +Et on se rend à l'​adresse du serveur port 8080 exemple si c'est sur la même machine :
 +
 +[[http://​localhost:​8080]]
 +
  
installation_d_une_plateforme_de_stream_sur_serveur_sme_9.1453117747.txt.gz · Last modified: 2016/01/18 12:49 by romain