Organisation des émissions en direct à partir de caméras IP en ligne

À la page


Organisation des émissions en direct à partir de caméras IP en ligne

tâche

Envisager la tâche d'organiser une diffusion vidéo en ligne en direct ip caméra.

Notre stand se compose de trois éléments:

  • camera ip
  • serveur multimédia
  • lecteur flash dans le navigateur sur le côté client

Sélection de caméra IP

Pour le rendre confortable à prendre avec le courant de la caméra, il devrait soutenir la diffusion de la vidéo en direct (généralement sur le protocole RTSP ). Il y a une autre option lorsque l'appareil photo à tout moment, vous pouvez prendre JPEG avec l'image actuelle en utilisant le protocole HTTP, mais il est pas si commode. D'Link DCS-2121 Par conséquent, l'appareil a été sélectionné prend en charge RTSP.

media Server

La partie la plus difficile de la configuration, car il allongea les fonctions d'une vidéo avec la caméra sont convertis en clients format, la mise en cache et de distribution nécessaires. À l'avenir, je dirai que loin de donner dans ce cas il est conseillé de soit le protocole RTMP adobovskomu, qui est supporté nativement par Flash Player, ou sur HTTP.

Pour RTMP il existe des solutions payées: le FMS , le Wowza (dernière libre lorsque le nombre de connexions simultanées de dix) et libre ( red5 et rtmpd ).

Si vous donnez pour HTTP, les options encore plus, puisque le problème est divisé en deux sous-tâches:

  1. conversion vidéo
  2. distribution de vidéo

Bien entendu, le nombre de combinaisons augmente. Pour la distribution peut être utilisé, par exemple, apache ou lighthttpd. Pour convertir - ffmpeg.

Dans mon cas, il était nécessaire de faire tout

  1. sous Linux
  2. libre
  3. juste

Donc , je me suis arrêté à la, à mon avis, un mode de réalisation simple, dans lequel un serveur, nous avons besoin d' un seul programme - le lecteur vidéo VLC , que nous, mais nous allons configurer et compiler nos besoins. Ce lecteur vidéo est pas encore support normale RTMP, donc nous allons donner les fichiers flv via HTTP.

lecteur flash dans le navigateur sur le côté client

En principe, toute approche devrait, mais je, pour une raison quelconque, et a échoué à mettre en place le lecteur JW Get . fichier FLV a été téléchargé sans cesse client, et en mémoire tampon ne soit pas terminée. Le temps passait et a changé joueur sur le lecteur de flux , avec le résultat que le problème a disparu.

réglage

les variables

Pour effectuer une réservation sur, nous supposerons que mon serveur adresse ip - 10.0.0.2, appareil photo - 10.0.0.3, masque 255.0.0.0 et la passerelle 10.0.0.1, sous Linux , je travaille en tant qu'utilisateur de l' utilisateur, toutes les commandes nécessaires fonctionnent via sudo .

Configuration de la caméra

Configurer la caméra via l'interface web, nous définissons les paramètres réseau nécessaires: adresse IP, masque, passerelle, régler l'heure. En outre, nous avons besoin de spécifier le port sur lequel la caméra donnera flux RTSP (standarno utilise le port 554, il je suis parti).

Dans la section «Audio et Vidéo» demandent les caractéristiques de la vidéo que nous avons besoin. Dans tous les cas, nous pouvons changer le débit binaire et la taille de l'image plus tard sur le serveur lors de la conversion, mais que tout a été soigneusement remarquer immédiatement ici. Nous allons utiliser MPEG4 640x480, 15 fps, le débit binaire de 512kb.

Ici aussi, vous devez spécifier l'adresse URL RTSP qui sera utilisé lors de la prise de retour du courant de la caméra, nous sommes tenus de spécifier uniquement le nom du fichier. Je présenté camera1.sdp. En conséquence, le flux sera disponible sur le lien rtsp: //10.0.0.3: 554 / camera1.sdp

Configuration du serveur

Vous pouvez utiliser tout Linux, j'isoplzovat Debian Lenny. Créez un dossier dans la maison, dans laquelle nous allons travailler:

  1. mkdir ~ user / install
  2. cd ~ user / install

Nous aurons besoin de télécharger les codecs, donc connecter le référentiel debian-multimedia:

  1. http wget: // www.debian-multimedia.org / piscine / / d / debian-multimedia-keyring / debian-multimedia-keyring_2008.10.16_all.deb principale
  2. dpkg -i. / Debian-multimédia-keyring_2008.10.16_all.deb

Ajoutez la ligne dans /etc/apt/sources.list

  1. deb http: // www.debian-multimedia.org stable principale non -freel.deb

Nous aurons besoin d'installer un grand nombre de paquets avant d'aller directement à VLC. J'ai essayé d'énumérer tout ici, mais peut-être quelque chose ne suffira pas dans ce cas, il sera nécessaire de fournir les disparus.

  1. apt-get update
  2. apt-get install yasm faire subversion xcb libxcb1-dev libxcb-shm0-dev libxcb-keysyms0-dev \
  3. libavformatcvs51 libavcodeccvs51 libavcodeccvs51-dev libavformatcvs51-dev libavutilcvs49-dev \
  4. autoconf g ++ gcc liba52-0.7.4-dev libdvbpsi3 -dev libdvbpsi3 libfaad-dev libfaac-dev libfribidi-dev \
  5. libavutilcvs49 libavahi-client3 libavahi-common-dev libpostproccvs51-dev libswscalecvs0-dev \
  6. libswscalecvs0 libxvidcore4-dev libxvidcore4 libx264-dev libx264- 54 automake1.9 libgcrypt11-dev \
  7. liblame-dev liblua5.1- 0 -dev libmad0-dev libmpeg2- 4 -dev libogg-dev libvorbis-dev zlib1g -dev \
  8. libvcdinfo-dev libiso9660-dev libcddb2-dev libflac-dev libx264-dev x264

Tout le reste sera mis de la source pour pouvoir activer ou désactiver certaines options. Commençons par la dernière version de ffmpeg:

  1. svn checkout svn: // svn.ffmpeg.org / ffmpeg / trunk ffmpeg
  2. cd ffmpeg
  3. . / configure
  4. faire
  5. make install
  6. cd ..

Si vous envisagez de travailler avec le h264 codec, vous pouvez configurer ffmpeg avec des options

./configure --enable-libx264 --enable-gpl

Ensuite, nous avons besoin d'une bibliothèque LIVE555 très utile multimédia en continu, il est grâce à notre lecteur VLC, il travaillera avec RTSP.

  1. wget http: // www.live555.com / LiveMedia / publique / LIVE555-latest.tar.gz
  2. tar zxvf. / LIVE555-latest.tar.gz
  3. live cd
  4. . / GenMakefiles linux
  5. faire
  6. cd ..

Maintenant, nous allons le lecteur VLC très. Allez http://download.videolan.org/pub/videolan/vlc/latest/ et voir ce que la dernière version, puis pomper et décompresser la source. Dans mon sluche il ressemblait à ceci:

  1. http wget: // download.videolan.org / pub / videolan / vlc / latest / vlc-1.1.0.tar.bz2
  2. bzip2 -d vlc-1.1.0.tar.bz2
  3. tar xvf. / Vlc-1.1.0.tar
  4. cd vlc-1.1.0
Configuration de VLC - la partie la plus créative, nous allons essayer de le faire c'est ce dont nous avons besoin et rien de plus.
  1. . / Configurer --enable-release --enable-faad --disable-dbus --disable-hal \
  2. --disable-remoteosd --disable-qt4 --disable- skins2 --disable-activex \
  3. --disable-v4l2 --disable-libv4l2 --disable- x11 --disable-xvideo --disable-glx \
  4. --disable- --disable-visuel --disable-opengl nls --disable-mozilla \
  5. --enable-realrtsp --enable-flac --disable- lua --prefix = / usr \
  6. --with-LIVE555-tree = / home / user / install --with-ffmpeg-tree / live = / home / user / install / ffmpeg

Dans la dernière ligne, nous spécifions le chemin vers le ffmpeg source et LIVE555, nous avons travaillé avec dans les étapes précédentes. Si vous envisagez de travailler le joueur en tant que root, vous devez ajouter un si les h264 codec --enable-x264 --enable-run-as-racine, clé

Ensuite, nous compilons et mettre le joueur. Cette procédure prend un temps assez long. Dans mon cas, pour compiler toujours quelque chose qui manque, j'ai essayé perichislit toutes les bibliothèques nécessaires, mais en tout cas, d'une version à tout peut changer, donc attention aux erreurs et d'offrir ce qu'il demande.

  1. faire
  2. make install

L'installation du logiciel est terminée, tout ce qui reste - est de lancer le lecteur avec les paramètres nécessaires. Généralement, le lecteur VLC est unique dans la flexibilité de svoee.

Le joueur devra travailler en deux flux simultanés: le premier sera obtenir la vidéo sur RTSP caméras multiplexé en MPEG TS et donner à localhost: 8001, et le second prendra le résultat du localhost: 8001, pincée, codé, emballé dans un contenant FLV et de donner le HTTP sur le port 8080.Sdelaem 2 fichier pour exécuter ces flux respectivement:

  1. mkdir ~ utilisateur / scripts
  2. toucher ~ user / scripts / stream1.sh
  3. toucher ~ user / scripts / stream2.sh

Dans stream1.sh insérez les lignes:

  1. #! / Bin / sh
  2. vlc -vv rtsp: // 10.0.0.3: 554 / camera1.sdp --rtsp-caching = 100000 --no-sout-audio --sout \
  3. '#std {Access = http, dst = 127.0.0.1: 8001, mux = ts}'

Ici, nous avons indiqué le joueur, quoi et où jouer. Comme la source est un flux avec la caméra rtsp: //10.0.03: 554 / camera1.sdp, la taille de la mémoire tampon spécifiée, et une fois que la première étape n'a pas fait notre film muet (--no-sout-audio). Le résultat sera donné à ce flux à http://127.0.0.1:8001В stream2.sh insérez les lignes:

  1. #! / Bin / sh
  2. vlc -vv http: // 127.0.0.1: 8001 --loop --http-cache = 10000 --sout \
  3. '#transcode {Vcodec = FLV1, vb = 512, fps = 15}: {std access = http { mime = video / x-flv}, dst =: 8080 / view01.flv, mux = ffmpeg {mux = flv}} '

Le second courant prend http://127.0.0.1:8001, a son propre cache, lui pincé (vb - bitrate, fps - fps) et le distribue via HTTP sur le port 8080 comme le fichier view01.flv. Si le serveur dispose de plusieurs interfaces, vous pouvez utiliser l'adresse IP dst comme une adresse spécifique de l'interface sur laquelle vous voulez distribuer.

Dans l'exploitation commerciale des flux doivent exécuter fond et sans référence à la console, comme dans notre exemple, nous allons les lancer en seulement deux consoles. vlc a besoin de temps pour remplir le tampon, puis passer en mode normal. Remplir la durée dépend de la taille du cache (--rtsp-cache et --http-caching respectivement) .Nam besoin de créer une page avec le lecteur. Par souci de simplicité, nous allons le faire sur le même serveur.

  1. apt-get install apache2
Personnaliser le player
  1. cd / var / www /

Ensuite, télécharger le lecteur de flux. Le développeur de site dispose d'un assistant de configuration pour l'utiliser, vous devez vous inscrire. Disponible maître à http://flowplayer.org/setup/index.html .

Puisque nous avons un flux en direct et l'appareil photo affiche l'heure actuelle dans la bonne image du joueur est d'être minimaliste. Désactivation de tous, mais le bouton «Fullscreen», télécharger le lecteur et extraire le contenu de l'archive dans le dossier / var / www sur notre serveur.

Pour tout était parfait, je suis de plus renommé des fichiers swf et js dans player.swf et player.js respectivement. Je ne serais pas en train d'écrire sur ce fait, si d'oublier comme on les appelait auparavant. Par conséquent, dans le texte, je vais aussi utiliser leurs nouveaux noms. Donc, créer une page html

  1. touch / var / www / index.html
Le maintenir dans le texte suivant:
  1. <Html> <head>
  2. <Meta http-equiv = "content type" content = "text / html; charset = UTF - 8"> <script type = "text / javascript" src = "/player.js"> </ script>
  3. <Titre> Voir photo 1 </ title>
  4. </ Head>
  5. <Body>
  6. <H1> numéro de la caméra 1 </ h1>
  7. <a
  8. href = "http://stream.kubsu.ru:8080/view01.flv"
  9. style = "display: block; width : 520px; height: 330px; margin: 10px auto;"
  10. id = "joueur">
  11. </ A>
  12. <Script>
  13. flowplayer ( "lecteur", "/player.swf");
  14. </ Script>
  15. </ Body> </ html>

Tout est prêt, allez à votre navigateur et regarder http://10.0.0.2/ diffusion.