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 13:00]
romain
installation_d_une_plateforme_de_stream_sur_serveur_sme_9 [2016/02/23 21:01] (current)
romain
Line 68: Line 68:
  
 <​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.1453118426.txt.gz · Last modified: 2016/01/18 13:00 by romain