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

Organisation von Live-Übertragungen von IP-Kameras Online

auf Seite


Organisation von Live-Übertragungen von IP-Kameras Online

Aufgabe

Betrachten wir das Problem der Organisation auf einem Live-Video-Übertragung von IP-Kameras.

Unser Stand setzt sich aus drei Komponenten zusammen:

  • IP - Kamera
  • Medienserver
  • Flash Player im Browser auf der Client - Seite

Die Wahl-IP-Kamera

Um es bequem mit der Kamera Strom zu nehmen, muss er die Ausstrahlung von Live - Videos ( in der Regel auf dem Protokoll unterstützt das RTSP ). Es ist eine weitere Option, wenn die Kamera jederzeit Sie JPEG mit dem aktuellen Frame über das HTTP-Protokoll nehmen, aber es ist nicht so bequem. Es wurde deshalb ausgewählt Kamera D'Link DCS-2121 unterstützt RTSP.

Media Server

Der schwierigste Teil der Konfiguration, da sie die Funktionen eines Video mit der Kamera festzulegen ist, in die gewünschten Format, Caching und Distributionskunden umgewandelt. Blick auf die Zukunft, werde ich sagen, dass in diesem Fall verlosen empfiehlt es sich, Protokoll entweder adobovskomu RTMP, die von Flash Player nativ unterstützt wird, oder über HTTP.

Für RTMP gibt es bezahlte Lösungen: die FMS , die Wowza (kostenlos während der letzten Anzahl gleichzeitiger Verbindungen weniger als zehn) und free ( red5 und rtmpd ).

Wenn Sie geben für HTTP weg, dann sind die Möglichkeiten noch mehr, da das Problem in zwei Teilaufgaben gegliedert:

  1. Video-Konvertierung
  2. Verteilung von Video

Natürlich erhöht sich die Anzahl von Kombinationen. Für die Verteilung kann verwendet werden, zum Beispiel Apache oder Light. So konvertieren - ffmpeg.

In meinem Fall war es notwendig, alles zu tun,

  1. unter linux
  2. kostenlos
  3. nur

So hielt ich an die, meiner Meinung nach , eine einfache Ausführung, in der ein Server, brauchen wir nur ein Programm - den Videoplayer VLC , die wir jedoch wird konfigurieren wir und unsere Bedürfnisse zusammenstellen . Dieses Video-Player hat noch nicht normale Unterstützung RTMP, so werden wir die FLV-Dateien über HTTP geben.

Flash Player im Browser auf der Client-Seite

Im Prinzip sollte es Ansatz überhaupt, aber ich aus irgendeinem Grunde nicht bekommen anpassen der JW Player holen . FLV-Datei wurde auf unbestimmte Zeit auf den Client heruntergeladen und Pufferung nicht beendet. Die Zeit wurde knapp und geänderte Spieler auf Flow - Player , mit dem Ergebnis , dass das Problem verschwunden ist.

Einstellung

Variablen

Nicht reservieren auf, gehen wir davon aus, dass meine Server - IP - Adresse - 10.0.0.2, die Kamera - 10.0.0.3, 255.0.0.0 Maske und Gateway 10.0.0.1, in Linux ich als User arbeiten, alle notwendigen Befehle ausführen über sudo .

Einrichten der Kamera

Konfigurieren Sie die Kamera über das Webinterface, definieren wir die notwendigen Netzwerkparameter: IP-Adresse, Maske, Gateway, die Zeit einstellen. Also müssen wir den Port angeben, an dem die Kamera RTSP-Stream geben (standart verwendet Port 554, es links I).

Im Abschnitt fragen «Audio und Video» die Eigenschaften des Videos, die wir brauchen. Auf jeden Fall können wir die Bitrate und die Bildgröße später auf dem Server ändern, wenn die Konvertierung, aber das alles sorgfältig wurde sofort hier hin. Wir werden MPEG4 640x480, 15 fps, 512kb Bitrate verwenden.

Gerade dann müssen Sie die RTSP URL-Adresse angeben, die verwendet werden, wenn der Strom von der Kamera zurücknehmen, werden wir nur die Dateinamen angeben, erforderlich. Ich stellte camera1.sdp. Als Ergebnis wird der Strom auf dem Link RTSP zur Verfügung: //10.0.0.3: 554 / camera1.sdp

Einrichten des Servers

Sie können eine beliebige Linux verwenden, isoplzovat ich Debian Lenny. Erstellen Sie zu Hause Ordner, die funktionieren wird:

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

Wir müssen Codecs zum Download, so verbinden Repository debian-Multimedia:

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

Fügen Sie die Zeile in der folgenden Art

  1. deb http: // www.debian-multimedia.org stabiles Haupt nicht -freel.deb

Wir müssen mehrere Pakete installieren, bevor wir direkt mit dem VLC fortzufahren. Ich habe versucht, alles hier aufzulisten, aber vielleicht ist etwas, das nicht genug, in diesem Fall wird die fehlende liefern müssen.

  1. apt-get update
  2. apt-get install yasm Subversion xcb machen 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

Alles andere wird von der Quelle gesetzt werden, um bestimmte Optionen schließen oder zu deaktivieren. Beginnen wir mit der neuesten Version von ffmpeg starten:

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

Wenn Sie planen, mit dem Codec h264 zu arbeiten, können Sie ffmpeg mit Optionen konfigurieren

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

Als nächstes brauchen wir Medien eine sehr nützliche Bibliothek LIVE555 Streaming ist es durch unseren VLC-Player wird es mit RTSP arbeiten.

  1. wget http: // www.live555.com / Livemedia / public / LIVE555-latest.tar.gz
  2. tar zxvf. / LIVE555-latest.tar.gz
  3. cd Live
  4. . / GenMakefiles Linux
  5. machen
  6. cd ..

Jetzt gehen wir auf den sehr VLC-Player. Gehen Sie http://download.videolan.org/pub/videolan/vlc/latest/ und sehen , was die neueste Version, und dann abzupumpen und die Quelle entpacken. In meinem sluche sah es wie folgt aus:

  1. wget http: // 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
Konfiguration von VLC - die kreativste Teil, werden wir versuchen, etwas damit zu tun war, die wir brauchen und nichts mehr.
  1. . / Configure --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-opengl --disable-visuelle --disable- nls --disable-mozilla \
  5. --enable- realrtsp --enable- flac --disable- lua prefix = / usr \
  6. --with-LIVE555-tree = / home / user / install / Live --with-ffmpeg-tree = / home / user / install / ffmpeg

In der letzten Zeile, wir den Weg zur Quelle ffmpeg und LIVE555 angeben, haben wir mit in den vorherigen Schritten gearbeitet. Wenn Sie den Player als root zu arbeiten, müssen Sie einen Schlüssel --enable-run-as-root, wenn der Codec h264 --enable-x264 hinzufügen

Als nächst wir die Spieler kompilieren und setzen. Dieser Vorgang dauert eine lange Zeit. In meinem Fall zu kompilieren immer etwas fehlt, habe ich versucht perichislit alle notwendigen Bibliotheken, aber in jedem Fall von Version zu Version kann alles ändern, so achten Sie auf Fehler und liefern, was er verlangt.

  1. machen
  2. make install

Die Installation der Software abgeschlossen ist, alles, was noch übrig ist - ist der Spieler mit den notwendigen Parametern ausgeführt wird. Im Allgemeinen ist VLC-Player einzigartig in svoee Flexibilität.

Der Spieler wird in zwei Streams gleichzeitig arbeiten: die erste auf RTSP-Kameras Multiplex in MPEG TS bekommen Video werden und geben zu localhost: 8001, und die zweite wird das Ergebnis vom lokalen Host nehmen: 8001, klemme, kodieren, Paket in FLV Container, und geben auf HTTP auf Port 8080.Sdelaem 2-Datei diese Ströme laufen jeweils:

  1. mkdir ~ user / scripts
  2. berühren ~ user / scripts / stream1.sh
  3. berühren ~ user / scripts / stream2.sh

In stream1.sh fügen Sie die Zeilen:

  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}'

Hier haben wir die Spieler angezeigt, was und wo zu spielen. Als eine Quelle aus der Kammer RTSP ausgewählt stream: //10.0.03: 554 / camera1.sdp, die Puffergröße und der erste Schritt nicht sofort unser Film mutet (--no-sout-audio) hergestellt. Das Ergebnis wird bei http://127.0.0.1:8001В zu diesem Strom gegeben werden stream2.sh die Zeilen einfügen:

  1. #! / Bin / sh
  2. vlc -vv http: // 127.0.0.1: 8001 --loop --http-caching = 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}} '

Der zweite Strom nimmt http://127.0.0.1:8001, verfügt über einen eigenen Cache, zwickte ihn (vb - Bitrate, Bilder pro Sekunde - fps) und verteilt sie über HTTP auf Port 8080 als view01.flv Datei. Wenn der Server mehrere Schnittstellen hat, können Sie die dst ip als die spezifische Adresse der Schnittstelle verwenden, auf dem Sie verteilen möchten.

Im kommerziellen Betrieb benötigen fließt Hintergrund und ohne Bezugnahme auf die Konsole, in diesem gleichen Beispiel auszuführen, können wir sie nur zwei Konsolen laufen. vlc braucht einige Zeit, um den Puffer zu füllen, und dann in den normalen Modus. Dauer Füllung hängt von der Größe des Cache (--rtsp-Caching und --http-Caching bezeichnet) .Nam eine Seite mit dem Spieler erstellen muß. Der Einfachheit halber haben wir es auf dem gleichen Server.

  1. apt-get install apache2
Passen Spieler
  1. cd / var / www /

Als nächstes laden Sie den Flow-Player. Die Site-Entwickler gibt es einen Assistenten in Anspruch zu nehmen, müssen Sie ein Konto erstellen. Erhältlich Meister http://flowplayer.org/setup/index.html .

Da wir die aktuelle Uhrzeit in das Bild von dem Spieler einen Live-Stream und zeigt die Kamera haben, ist minimalistisch zu sein. Ausschalten alle, aber die «Vollbild» Taste, um den Player herunterzuladen und den Inhalt des Archivs in dem Verzeichnis / var / www auf unserem Server zu extrahieren.

Alles ist perfekt, ich mehr und umbenannte Dateien swf und js in player.swf und player.js sind. Ich würde nicht über diese Tatsache schreiben, wenn zu vergessen, wie sie vorher genannt wurden. Daher wird in dem Text auch will ich ihre neue Namen verwenden. So erstellen Sie eine HTML-Seite

  1. touch / var / www / index.html
Speichern Sie es in dem folgenden Text:
  1. <Html> <head>
  2. <Meta http-equiv = "Content vom Typ" content = "text / html; charset = UTF - 8"> <script type = "text / javascript" src = "/player.js"> </ script>
  3. <Titel> Ansicht - Kamera 1 </ title>
  4. </ Head>
  5. <Body>
  6. <H1> Kamera Nummer 1 </ h1>
  7. <a
  8. href = "http://stream.kubsu.ru:8080/view01.flv"
  9. style = "display: block; Breite : 520px; Höhe: 330px; margin: 10px auto;"
  10. id = "Spieler">
  11. </ A>
  12. <Script>
  13. Flowplayer ( "Player", "/player.swf");
  14. </ Script>
  15. </ Body> </ html>

Alles ist bereit, in den Browser und sehen Sie http://10.0.0.2/ Sendung.