This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revision | |||
installation_d_une_plateforme_de_stream_sur_serveur_sme_9 [2016/02/23 20:50] – romain | installation_d_une_plateforme_de_stream_sur_serveur_sme_9 [2016/02/23 21:01] (current) – romain | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | === Stream ==== | ||
+ | |||
+ | Après avoir fait quelques tests utilisateurs avec [[https:// | ||
+ | Lors de l' | ||
+ | Un peu too much pour notre utilisation. De plus d' | ||
+ | |||
+ | Je suis donc reparti de la conception initiale en revoyant les besoins: | ||
+ | |||
+ | -Une connexion audio-stream point à point ou multicast via le réseau Internet. | ||
+ | |||
+ | -Une possibilité de changer certains paramètres du signal audio. | ||
+ | |||
+ | -Une Interface web avec connexion à la carte son de la machine. | ||
+ | |||
+ | -Possibilté de placer une vidéo, un chat, ... | ||
+ | |||
+ | |||
+ | Avec Html5 et [[https:// | ||
+ | Sur Linux il n'est cependant pas possible d' | ||
+ | Après quelques recherches j'ai trouvé cette utilisation de webrtc : | ||
+ | |||
+ | https:// | ||
+ | |||
+ | Développée en html et javascript les nombreuses démos se sont révélées correspondre à notre besoin. | ||
+ | |||
+ | Installons les sources sur notre serveur. | ||
+ | |||
+ | |||
+ | |||
+ | === Installation de RTCMultiConnection-v3.0 ==== | ||
+ | |||
+ | |||
+ | Sur un serveur SME 9 fraichement installé nous allons commencer par installer [[ https:// | ||
+ | |||
+ | -Nous installons nodejs : | ||
+ | |||
+ | Installation des dépots epel : | ||
+ | |||
+ | < | ||
+ | / | ||
+ | Name 'Epel - EL6' \ | ||
+ | BaseURL ' | ||
+ | MirrorList ' | ||
+ | EnableGroups no \ | ||
+ | GPGCheck yes \ | ||
+ | GPGKey http:// | ||
+ | Exclude perl-Razor-Agent \ | ||
+ | Visible no \ | ||
+ | status disabled | ||
+ | </ | ||
+ | |||
+ | Update : | ||
+ | < | ||
+ | |||
+ | Puis nodejs : | ||
+ | < | ||
+ | |||
+ | |||
+ | -Nous téléchargeons les sources rtcMulticonnexion: | ||
+ | |||
+ | < | ||
+ | wget http:// | ||
+ | tar -zxvf rtcmulticonnection-v3.tar.gz | ||
+ | ls -a | ||
+ | </ | ||
+ | |||
+ | Et on démarre le serveur en fond de tâche sur le port 9001: | ||
+ | |||
+ | < | ||
+ | |||
+ | |||
+ | |||
+ | On install le codec opus : | ||
+ | < | ||
+ | |||
+ | ### l i b o g g | ||
+ | curl ftp:// | ||
+ | xz -d | ||
+ | tar -xvf libogg-1.3.1.tar | ||
+ | cd libogg-1.3.1; | ||
+ | ./ | ||
+ | make && | ||
+ | |||
+ | ### o p u s | ||
+ | wget http:// | ||
+ | tar -xvf opus-1.1.2.tar.gz ; | ||
+ | cd opus-1.1.2 ; | ||
+ | ./configure ; | ||
+ | make && | ||
+ | |||
+ | ### f l a c | ||
+ | curl http:// | ||
+ | xz -d flac-1.3.0.tar.xz ; | ||
+ | tar -x flac-1.3.0.tar ; | ||
+ | cd flac-1.3.0 ; | ||
+ | ./configure ; | ||
+ | make && | ||
+ | |||
+ | ### | ||
+ | curl http:// | ||
+ | gzip -d | ||
+ | tar -xvf opus-tools-0.1.7.tar | ||
+ | cd | ||
+ | ./configure ; | ||
+ | make && make install ; | ||
+ | |||
+ | </ | ||
+ | |||
+ | Une fois installé on l' | ||
+ | < | ||
+ | connection.processSdp = function(sdp) { | ||
+ | sdp = remove_vp8_codecs(sdp); | ||
+ | sdp = prefer_opus (sdp); | ||
+ | sdp = use_maxaveragebitrate(sdp); | ||
+ | return sdp; | ||
+ | }; | ||
+ | </ | ||
+ | |||
+ | Et on " | ||
+ | < | ||
+ | |||
+ | var BandwidthHandler = connection.BandwidthHandler; | ||
+ | connection.bandwidth = { | ||
+ | audio: 128, | ||
+ | video: 256, | ||
+ | screen: 300 | ||
+ | }; | ||
+ | connection.processSdp = function(sdp) { | ||
+ | sdp = BandwidthHandler.setApplicationSpecificBandwidth(sdp, | ||
+ | sdp = BandwidthHandler.setVideoBitrates(sdp, | ||
+ | min: connection.bandwidth.video, | ||
+ | max: connection.bandwidth.video | ||
+ | }); | ||
+ | |||
+ | sdp = BandwidthHandler.setOpusAttributes(sdp); | ||
+ | |||
+ | sdp = BandwidthHandler.setOpusAttributes(sdp, | ||
+ | ' | ||
+ | //' | ||
+ | ' | ||
+ | ' | ||
+ | //' | ||
+ | //' | ||
+ | // ' | ||
+ | ' | ||
+ | }); | ||
+ | |||
+ | return sdp; | ||
+ | }; | ||
+ | </ | ||
+ | |||
+ | |||
+ | === Utilisation de appRTC ==== | ||
+ | |||
+ | Une autre utilisation de webrtc est appRTC. | ||
+ | |||
+ | On peut trouver une démo ici : | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | Les parametres audio et video sont modifiables via l'url ainsi pour changer le bitrate d' | ||
+ | |||
+ | < | ||
+ | |||
+ | " | ||
+ | |||
+ | " | ||
+ | |||
+ | 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 : | ||
+ | |||
+ | < | ||
+ | |||
+ | Ici les références : [[http:// | ||
+ | |||
+ | |||
+ | === Installation de appRTC sur le serveur ==== | ||
+ | |||
+ | On se crée un dossier streamserver et appengine dans le repertoire www : | ||
+ | < | ||
+ | sudo su | ||
+ | cd / | ||
+ | mkdir streamserver | ||
+ | cd streamserver | ||
+ | </ | ||
+ | |||
+ | Vous avez besoin d' | ||
+ | |||
+ | < | ||
+ | mkdir appengine | ||
+ | cd appengine | ||
+ | wget https:// | ||
+ | unzip google_appengine_1.9.32.zip | ||
+ | export PATH=$PATH:/ | ||
+ | Soyez sur d' | ||
+ | |||
+ | < | ||
+ | |||
+ | Puis le serveur : | ||
+ | |||
+ | |||
+ | < | ||
+ | cd / | ||
+ | apt-get install nodejs npm git python-webtest nodejs-legacy | ||
+ | npm install -g npm | ||
+ | npm -g install grunt-cli | ||
+ | git clone https:// | ||
+ | cd apprtc | ||
+ | npm install | ||
+ | grunt build</ | ||
+ | |||
+ | Pour démarrer le serveur | ||
+ | |||
+ | < | ||
+ | cd / | ||
+ | / | ||
+ | </ | ||
+ | |||
+ | Et on se rend à l' | ||
+ | |||
+ | [[http:// | ||
+ | |||