Organisation von Live-Übertragungen von IP-Kameras Online

Auf Seite


Organisation von Live-Übertragungen von IP-Kameras Online

Aufgabe

Betrachten wir die Aufgabe, eine Live-Online-Video-Broadcast-Organisation Kamera auf IP.

Unser Stand setzt sich aus drei Komponenten zusammen:

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

Auswählen von IP-Kamera

Um es bequem mit der Kamera Strom zu nehmen, sollte es die Übertragung von Live - Video ( in der Regel auf dem Protokoll unterstützen das RTSP ). Es ist eine weitere Option, wenn die Kamera jederzeit, Sie JPEG mit dem aktuellen Frame über das HTTP-Protokoll zu nehmen, aber es ist nicht so bequem. Daher hat die Kamera D'Link DCS-2121 unterstützt RTSP ausgewählt.

Media Server

Der schwierigste Teil der Konfiguration, da sie die Funktionen eines Video mit der Kamera festzulegen sind, in das gewünschte Format konvertiert, Caching und Distributionskunden. 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 (neueste frei , wenn die Anzahl der gleichzeitigen Verbindungen 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 verwendet werden, beispielsweise Apache oder Light. So konvertieren - ffmpeg.

In meinem Fall war es notwendig, alles zu tun,

  1. unter Linux
  2. kostenlos
  3. nur

Also hörte ich auf die, meiner Ansicht 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 ist noch nicht normale Unterstützung RTMP, so werden wir die FLV-Dateien über HTTP geben.

Flash Player im Browser auf der Client-Seite

Grundsätzlich sollte jeder Ansatz, aber ich aus irgendeinem Grund, und es versäumt , zu gründen der JW Player holen . FLV-Datei wurde endlos Client heruntergeladen und Pufferung nicht beendet ist. Die Zeit wurde knapp und geändert Spieler auf dem Fluss - Player , mit dem Ergebnis , dass das Problem verschwunden ist.

Einstellung

Variablen

Um Reservierung auf, gehen wir davon aus, dass meine Server - IP - Adresse - 10.0.0.2, 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 .

Kamera-Setup

Konfigurieren Sie die Kamera über das Web-Interface definieren wir die notwendigen Netzwerkparameter: IP-Adresse, Maske, Gateway, die Zeit einstellen. Außerdem müssen wir den Port an, an dem die Kamera geben RTSP-Stream (standarno verwendet Port 554, es ich links).

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

Auch hier müssen Sie die RTSP-URL-Adresse angeben, die verwendet wird, wenn der Strom aus der Kamera zurücknehmen, werden wir nur den Dateinamen angeben, erforderlich. Ich stellte camera1.sdp. Als Ergebnis wird der Strom auf den RTSP-Link 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 einen Ordner im Haus, in dem wir arbeiten:

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

Wir müssen Codecs zum Download, so schließen Sie das 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 stabile Haupt nicht -freel.deb

Wir müssen eine Menge von Paketen zu installieren, bevor wir direkt mit VLC fortzufahren. Ich habe versucht, alles hier aufzulisten, aber vielleicht wird etwas in diesem Fall nicht ausreichen, wird es notwendig sein, die fehlenden zu liefern.

  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 zu aktivieren oder zu deaktivieren. Lassen Sie uns 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 unsere 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 die 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, zu tun war, so dass das, was 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 planen , den Spieler als root zu arbeiten, müssen Sie einen Schlüssel --enable-run-as-root Wenn der Codec h264 --enable-x264 hinzufügen

Als nächstes wir den Spieler kompilieren und setzen. Dieser Vorgang dauert ziemlich lange. In meinem Fall, zu kompilieren immer etwas fehlt, habe ich versucht perichislit alle notwendigen Bibliotheken, aber auf jeden Fall, sich 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, wird alles, was übrig geblieben 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 zu arbeiten: das erste Video auf RTSP-Kameras Multiplex in MPEG TS erhalten und geben auf localhost: 8001, und die zweite wird das Ergebnis vom lokalen Host nehmen: 8001, klemme, codiert, in FLV-Container verpackt 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 = 100.000 --no-sout-Audio---sout \
  3. '#std {Access = http, dst = 127.0.0.1: 8001, Mux = ts}'

Hier haben wir den Spieler angezeigt, was und wo zu spielen. Da die Quelle RTSP ein Strom mit der Kamera: //10.0.03: 554 / camera1.sdp, angegeben Puffergröße, und sobald die erste Stufe unserer Film nicht gemacht stumm (--no-sout-Audio). 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, kniff 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 eine 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 auszuführen, wie in unserem Beispiel, werden wir sie in nur zwei Konsolen starten. vlc braucht einige Zeit, um den Puffer zu füllen, und dann in den normalen Modus wechseln. Dauer Füllung hängt von der Größe des Cache (--rtsp-Caching und --http-Caching bezeichnet) .Nam eine Seite mit dem Spieler erstellen müssen. Der Einfachheit halber werden wir es auf dem gleichen Server zu tun.

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

Dann laden Sie die Flow-Player. Die Site-Entwickler einen Konfigurationsassistenten hat, es zu benutzen, müssen Sie sich registrieren. Erhältlich Meister http://flowplayer.org/setup/index.html .

Da wir die aktuelle Zeit im rechten Bild des Spielers einen Live-Stream und zeigt die Kamera haben, ist minimalistisch zu sein. Ausschalten alle, aber die «Vollbild» Taste, laden Sie die Spieler und extrahieren Sie den Inhalt des Archivs in das Verzeichnis / var / www auf unserem Server.

Um alles perfekt war, bin ich mehr und umbenannt 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, werde ich auch den neuen Namen verwenden. So erstellen Sie eine HTML-Seite

  1. touch / var / www / index.html
Halten Sie es in dem folgenden Text:
  1. <Html> <head>
  2. <Meta http-equiv = "Content -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; width : 520px; height: 330px; margin: 10px auto;"
  10. id = "Spieler">
  11. </ A>
  12. <Script>
  13. Flowplayer ( "Spieler", "/player.swf");
  14. </ Script>
  15. </ Body> </ html>

Alles ist bereit, in den Browser und Blick auf http://10.0.0.2/ Sendung.