This page has been robot translated, sorry for typos if any. Original content here.

Organisation de la diffusion en direct depuis une caméra ip sur le site

Sur la page


Organisation de la diffusion en direct depuis une caméra ip sur le site

Tâche

Réfléchissez à la tâche d’organiser une diffusion vidéo en direct à partir d’une caméra ip sur le site.

Notre stand est composé de trois composants:

  • caméra ip
  • serveur multimédia
  • Flash Player dans le navigateur côté client

Sélectionnez ip camera

Afin d'être à l'aise pour capter le flux de la caméra, celle-ci doit prendre en charge la transmission vidéo en direct (généralement via le protocole RTSP ). Il existe une autre option lorsque vous pouvez capturer un fichier JPEG avec le cadre actuel via HTTP depuis l'appareil photo à tout moment, mais ce n'est pas si pratique. Par conséquent, la caméra D'Link DCS-2121 avec support RTSP a été sélectionnée.

Serveur multimédia

La partie la plus difficile de la configuration est due au fait que les fonctions consistant à extraire la vidéo de la caméra, à la convertir au format requis, à la mise en cache et à la distribution aux clients s’y glissent. Dans l’avenir, je dirai qu’il est opportun de distribuer dans ce cas, soit via le protocole adobe RTMP, qui est pris en charge de manière native par des lecteurs Flash, soit via HTTP.

Pour RTMP, il existe des solutions payantes: FMS , Wowza (ce dernier est libre avec un nombre de connexions simultanées inférieur à dix) et libre ( red5 et rtmpd ).

Si vous distribuez via HTTP, il y a encore plus d'options, car la tâche est divisée en deux sous-tâches:

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

Naturellement, le nombre de combinaisons augmente. Pour la distribution, vous pouvez utiliser, par exemple, Apache ou Lighthttpd. Pour convertir - ffmpeg.

Dans mon cas, tout devait être fait.

  1. sous linux
  2. gratuitement
  3. juste

Par conséquent, je me suis arrêté à la version simple, selon moi, dans laquelle, sur le serveur, nous n'avons besoin que d'un programme - le lecteur vidéo VLC , que nous allons d'ailleurs configurer et compiler pour nos besoins. Ce lecteur vidéo ne prend pas encore en charge le format RTMP, nous allons donc donner le fichier flv via HTTP.

Flash Player dans le navigateur côté client

En principe, tout le monde devrait s’approcher, mais pour une raison quelconque, je n’ai pas réussi à installer JW Player . Le fichier FLV a été téléchargé infiniment sur le client et la mise en mémoire tampon n'a pas pris fin. La date limite a été pressée et le lecteur a été remplacé par le lecteur Flow , ce qui a permis de faire disparaître ce problème.

Personnalisation

Variables

Afin de ne plus faire de réservations, nous supposerons que j'ai l'adresse IP du serveur - 10.0.0.2, caméras - 10.0.0.3, masque 255.0.0.0 et passerelle 10.0.0.1, sous Linux, je travaille sous l'utilisateur utilisateur, toutes les commandes nécessaires sont exécutées via sudo .

Configuration de la caméra

Nous allons configurer la caméra via l'interface Web, définir les paramètres de réseau nécessaires: adresse IP, masque, passerelle, régler l'heure. Nous devons également spécifier le port sur lequel la caméra transmettra le flux RTSP (le port standard 554 est utilisé et je l’ai laissé).

Dans la section "Audio et vidéo", nous définirons les caractéristiques de la vidéo dont nous avons besoin. Dans tous les cas, nous pouvons modifier le débit binaire et la taille de l'image ultérieurement sur le serveur lors de la conversion, mais pour que tout soit soigné, nous le signalerons ici et maintenant. Nous utiliserons MPEG4 640x480, 15 fps, 512kb.

Ici aussi, il est nécessaire de spécifier l’URL RTSP. Cette adresse sera utilisée lors de la récupération du flux de la caméra, nous ne devons spécifier que le nom du fichier. Je suis entré dans camera1.sdp. En conséquence, le flux sera disponible via le lien rtsp: //10.0.0.3: 554 / camera1.sdp

Configuration du serveur

Tout Linux fera l'affaire, j'ai utilisé Debian Lenny. Créez un dossier à la maison dans lequel nous allons travailler:

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

Nous aurons besoin de télécharger des codecs, nous connectons donc le référentiel debian-multimedia:

  1. wget http: // www.debian-multimedia.org / pool / main / d / debian-multimedia-keyring / debian-multimedia-keyring_2008.10.16_all.deb dpkg -i . / debian-multimedia-keyring_2008.10.16_all.deb
  2. wget http: // www.debian-multimedia.org / pool / main / d / debian-multimedia-keyring / debian-multimedia-keyring_2008.10.16_all.deb dpkg -i . / debian-multimedia-keyring_2008.10.16_all.deb

Ajouter une ligne à /etc/apt/sources.list

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

Nous devrons installer beaucoup de paquets avant de passer directement à VLC. J'ai essayé de tout énumérer ici, mais peut-être que quelque chose ne suffit pas, dans ce cas, les manquants devront être livrés.

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

Tout le reste sera défini à partir 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 cd ffmpeg . / configure make make install cd ..
  2. svn checkout svn : // svn.ffmpeg.org / ffmpeg / trunk ffmpeg cd ffmpeg . / configure make make install cd ..
  3. svn checkout svn : // svn.ffmpeg.org / ffmpeg / trunk ffmpeg cd ffmpeg . / configure make make install cd ..
  4. svn checkout svn : // svn.ffmpeg.org / ffmpeg / trunk ffmpeg cd ffmpeg . / configure make make install cd ..
  5. svn checkout svn : // svn.ffmpeg.org / ffmpeg / trunk ffmpeg cd ffmpeg . / configure make make install cd ..
  6. svn checkout svn : // svn.ffmpeg.org / ffmpeg / trunk ffmpeg cd ffmpeg . / configure make make install cd ..

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

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

Ensuite, nous avons besoin d’une bibliothèque de média live555 très nécessaire pour le streaming, avec laquelle notre lecteur VLC fonctionnera avec RTSP.

  1. wget http: // www.live555.com / liveMedia / public / live555-latest.tar.gz tar zxvf . / live555-latest.tar.gz cd live . / genMakefiles linux make cd ..
  2. wget http: // www.live555.com / liveMedia / public / live555-latest.tar.gz tar zxvf . / live555-latest.tar.gz cd live . / genMakefiles linux make cd ..
  3. wget http: // www.live555.com / liveMedia / public / live555-latest.tar.gz tar zxvf . / live555-latest.tar.gz cd live . / genMakefiles linux make cd ..
  4. wget http: // www.live555.com / liveMedia / public / live555-latest.tar.gz tar zxvf . / live555-latest.tar.gz cd live . / genMakefiles linux make cd ..
  5. wget http: // www.live555.com / liveMedia / public / live555-latest.tar.gz tar zxvf . / live555-latest.tar.gz cd live . / genMakefiles linux make cd ..
  6. wget http: // www.live555.com / liveMedia / public / live555-latest.tar.gz tar zxvf . / live555-latest.tar.gz cd live . / genMakefiles linux make cd ..

Maintenant, allez au lecteur VLC lui-même. Allez sur http://download.videolan.org/pub/videolan/vlc/latest/ et voyez quelle est la version la plus récente, puis téléchargez et décompressez le code source. Dans mon cas, cela ressemblait à ceci:

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

Dans la dernière ligne, nous indiquons les chemins d'accès aux sources ffmpeg et live555, avec lesquelles nous avons travaillé aux étapes précédentes. Si vous prévoyez d’exécuter le lecteur en tant que root, vous devez ajouter la clé --enable-run-as-root , si le codec h264 est --able -x264.

Ensuite, compilez et installez le lecteur. Cette procédure prend beaucoup de temps. Dans mon cas, il manquait toujours quelque chose à compiler, j’essayais d’énumérer toutes les bibliothèques nécessaires, mais dans tous les cas, tout pouvait changer d’une version à l’autre, alors surveillez les erreurs et livrez ce qu’il vous demande.

  1. make make install
  2. make make install

L'installation du logiciel est terminée, tout ce que nous avons à faire est de lancer le lecteur avec les paramètres nécessaires. En général, le lecteur VLC est unique par sa flexibilité.

Le joueur travaillera pour nous dans deux flux simultanés: le premier recevra la vidéo de la caméra via RTSP, multiplexera-le dans MPEG TS et l'enverra à localhost: 8001, le second prendra le résultat de localhost: 8001, compressera, encodera, conditionnera dans un conteneur FLV HTTP sur le port 8080. Nous créons 2 fichiers pour exécuter ces flux, respectivement:

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

Collez les lignes dans stream1.sh:

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

Ici nous avons indiqué au joueur quoi perdre. Le flux de la caméra rtsp: //10.0.03: 554 / camera1.sdp a été sélectionné comme source, a indiqué la taille de la mémoire tampon et a immédiatement rendu la première étape de notre film muette ( --no-sud-audio ). Le résultat sera donné à ce flux à l'adresse http://127.0.0.1:8001V stream2.sh, insérez les lignes suivantes:

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

Le second flux prend http://127.0.0.1:8001, dispose de son propre cache, le remplace (vb-bitrate, fps-FPS) et le distribue via HTTP sur le port 8080 en tant que fichier view01.flv. S'il existe plusieurs interfaces sur le serveur, vous pouvez également spécifier dans dst l'adresse IP spécifique de l'interface sur laquelle vous souhaitez distribuer.

En exploitation industrielle, les flux doivent être exécutés en arrière-plan et sans référence à la console. Dans notre exemple, nous les lancerons simplement dans deux consoles. vlc devrait remplir le tampon un certain temps, puis passer en mode normal. La durée du remplissage dépend de la taille du cache ( --rtsp-cache et --http-cache, respectivement). Nous devrons créer une page avec le lecteur. Pour plus de simplicité, nous le ferons sur le même serveur.

  1. apt-get install apache2
Paramètres du joueur
  1. cd / var / www /

Ensuite, téléchargez Flow Player. Le site du développeur dispose d’un assistant de configuration qui vous permet de vous enregistrer. L'assistant est disponible à l' adresse http://flowplayer.org/setup/index.html .

Étant donné que nous avons un flux en direct et que la caméra affiche l'heure actuelle directement dans l'image, le lecteur doit être minimaliste. Désactivez tout sauf le bouton “Fullscreen”, téléchargez le lecteur et décompressez le contenu de l'archive dans le dossier / var / www de notre serveur.

Pour que tout soit parfait, j'ai également renommé les fichiers swf et js en player.swf et player.js, respectivement. Je n'écrirais pas ce fait si je n'avais pas oublié comment ils s'appelaient auparavant. Par conséquent, dans le texte, j'utiliserai également mes nouveaux noms. Donc, nous créons une page html

  1. touch / var / www / index.html
Nous enregistrons le texte suivant:
  1. < html >< head > < meta http-equiv = "content-type" content = "text/html; charset=UTF-8" >< script type = "text/javascript" src = "/player.js" >< / script > < title > Просмотр камеры 1 < / title > < / head > < body > < h1 > Камера № 1 < / h1 > < a href = "http://stream.kubsu.ru:8080/view01.flv" style = "display:block;width:520px;height:330px;margin:10px auto;" id = "player" > < / a > < script > flowplayer("player", "/player.swf"); < / script > < / body >< / html >
  2. < html >< head > < meta http-equiv = "content-type" content = "text/html; charset=UTF-8" >< script type = "text/javascript" src = "/player.js" >< / script > < title > Просмотр камеры 1 < / title > < / head > < body > < h1 > Камера № 1 < / h1 > < a href = "http://stream.kubsu.ru:8080/view01.flv" style = "display:block;width:520px;height:330px;margin:10px auto;" id = "player" > < / a > < script > flowplayer("player", "/player.swf"); < / script > < / body >< / html >
  3. < html >< head > < meta http-equiv = "content-type" content = "text/html; charset=UTF-8" >< script type = "text/javascript" src = "/player.js" >< / script > < title > Просмотр камеры 1 < / title > < / head > < body > < h1 > Камера № 1 < / h1 > < a href = "http://stream.kubsu.ru:8080/view01.flv" style = "display:block;width:520px;height:330px;margin:10px auto;" id = "player" > < / a > < script > flowplayer("player", "/player.swf"); < / script > < / body >< / html >
  4. < html >< head > < meta http-equiv = "content-type" content = "text/html; charset=UTF-8" >< script type = "text/javascript" src = "/player.js" >< / script > < title > Просмотр камеры 1 < / title > < / head > < body > < h1 > Камера № 1 < / h1 > < a href = "http://stream.kubsu.ru:8080/view01.flv" style = "display:block;width:520px;height:330px;margin:10px auto;" id = "player" > < / a > < script > flowplayer("player", "/player.swf"); < / script > < / body >< / html >
  5. < html >< head > < meta http-equiv = "content-type" content = "text/html; charset=UTF-8" >< script type = "text/javascript" src = "/player.js" >< / script > < title > Просмотр камеры 1 < / title > < / head > < body > < h1 > Камера № 1 < / h1 > < a href = "http://stream.kubsu.ru:8080/view01.flv" style = "display:block;width:520px;height:330px;margin:10px auto;" id = "player" > < / a > < script > flowplayer("player", "/player.swf"); < / script > < / body >< / html >
  6. < html >< head > < meta http-equiv = "content-type" content = "text/html; charset=UTF-8" >< script type = "text/javascript" src = "/player.js" >< / script > < title > Просмотр камеры 1 < / title > < / head > < body > < h1 > Камера № 1 < / h1 > < a href = "http://stream.kubsu.ru:8080/view01.flv" style = "display:block;width:520px;height:330px;margin:10px auto;" id = "player" > < / a > < script > flowplayer("player", "/player.swf"); < / script > < / body >< / html >
  7. < html >< head > < meta http-equiv = "content-type" content = "text/html; charset=UTF-8" >< script type = "text/javascript" src = "/player.js" >< / script > < title > Просмотр камеры 1 < / title > < / head > < body > < h1 > Камера № 1 < / h1 > < a href = "http://stream.kubsu.ru:8080/view01.flv" style = "display:block;width:520px;height:330px;margin:10px auto;" id = "player" > < / a > < script > flowplayer("player", "/player.swf"); < / script > < / body >< / html >
  8. < html >< head > < meta http-equiv = "content-type" content = "text/html; charset=UTF-8" >< script type = "text/javascript" src = "/player.js" >< / script > < title > Просмотр камеры 1 < / title > < / head > < body > < h1 > Камера № 1 < / h1 > < a href = "http://stream.kubsu.ru:8080/view01.flv" style = "display:block;width:520px;height:330px;margin:10px auto;" id = "player" > < / a > < script > flowplayer("player", "/player.swf"); < / script > < / body >< / html >
  9. < html >< head > < meta http-equiv = "content-type" content = "text/html; charset=UTF-8" >< script type = "text/javascript" src = "/player.js" >< / script > < title > Просмотр камеры 1 < / title > < / head > < body > < h1 > Камера № 1 < / h1 > < a href = "http://stream.kubsu.ru:8080/view01.flv" style = "display:block;width:520px;height:330px;margin:10px auto;" id = "player" > < / a > < script > flowplayer("player", "/player.swf"); < / script > < / body >< / html >
  10. < html >< head > < meta http-equiv = "content-type" content = "text/html; charset=UTF-8" >< script type = "text/javascript" src = "/player.js" >< / script > < title > Просмотр камеры 1 < / title > < / head > < body > < h1 > Камера № 1 < / h1 > < a href = "http://stream.kubsu.ru:8080/view01.flv" style = "display:block;width:520px;height:330px;margin:10px auto;" id = "player" > < / a > < script > flowplayer("player", "/player.swf"); < / script > < / body >< / html >
  11. < html >< head > < meta http-equiv = "content-type" content = "text/html; charset=UTF-8" >< script type = "text/javascript" src = "/player.js" >< / script > < title > Просмотр камеры 1 < / title > < / head > < body > < h1 > Камера № 1 < / h1 > < a href = "http://stream.kubsu.ru:8080/view01.flv" style = "display:block;width:520px;height:330px;margin:10px auto;" id = "player" > < / a > < script > flowplayer("player", "/player.swf"); < / script > < / body >< / html >
  12. < html >< head > < meta http-equiv = "content-type" content = "text/html; charset=UTF-8" >< script type = "text/javascript" src = "/player.js" >< / script > < title > Просмотр камеры 1 < / title > < / head > < body > < h1 > Камера № 1 < / h1 > < a href = "http://stream.kubsu.ru:8080/view01.flv" style = "display:block;width:520px;height:330px;margin:10px auto;" id = "player" > < / a > < script > flowplayer("player", "/player.swf"); < / script > < / body >< / html >
  13. < html >< head > < meta http-equiv = "content-type" content = "text/html; charset=UTF-8" >< script type = "text/javascript" src = "/player.js" >< / script > < title > Просмотр камеры 1 < / title > < / head > < body > < h1 > Камера № 1 < / h1 > < a href = "http://stream.kubsu.ru:8080/view01.flv" style = "display:block;width:520px;height:330px;margin:10px auto;" id = "player" > < / a > < script > flowplayer("player", "/player.swf"); < / script > < / body >< / html >
  14. < html >< head > < meta http-equiv = "content-type" content = "text/html; charset=UTF-8" >< script type = "text/javascript" src = "/player.js" >< / script > < title > Просмотр камеры 1 < / title > < / head > < body > < h1 > Камера № 1 < / h1 > < a href = "http://stream.kubsu.ru:8080/view01.flv" style = "display:block;width:520px;height:330px;margin:10px auto;" id = "player" > < / a > < script > flowplayer("player", "/player.swf"); < / script > < / body >< / html >
  15. < html >< head > < meta http-equiv = "content-type" content = "text/html; charset=UTF-8" >< script type = "text/javascript" src = "/player.js" >< / script > < title > Просмотр камеры 1 < / title > < / head > < body > < h1 > Камера № 1 < / h1 > < a href = "http://stream.kubsu.ru:8080/view01.flv" style = "display:block;width:520px;height:330px;margin:10px auto;" id = "player" > < / a > < script > flowplayer("player", "/player.swf"); < / script > < / body >< / html >

Tout est prêt, allez sur le navigateur à l'adresse http://10.0.0.2/ et regardez l'émission.