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:
- Video-Konvertierung
- 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,
- unter Linux
- kostenlos
- 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:
- mkdir ~ user / install
- cd ~ user / install
Wir müssen Codecs zum Download, so schließen Sie das Repository debian-Multimedia:
- 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
Fügen Sie die Zeile in der folgenden Art
- 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.
- apt-get update
- apt-get install yasm Subversion xcb machen 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
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:
- svn checkout svn: // svn.ffmpeg.org / ffmpeg / trunk ffmpeg
- cd ffmpeg
- . / configure
- machen
- make install
- 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.
- wget http: // www.live555.com / Livemedia / public / LIVE555-latest.tar.gz
- tar zxvf. / LIVE555-latest.tar.gz
- cd Live
- . / GenMakefiles Linux
- machen
- 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:
- 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
- . / 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-visuelle --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
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.
- machen
- 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:
- mkdir ~ user / scripts
- berühren ~ user / scripts / stream1.sh
- berühren ~ user / scripts / stream2.sh
In stream1.sh fügen Sie die Zeilen:
- #! / Bin / sh
- vlc -vv rtsp: // 10.0.0.3: 554 / camera1.sdp --rtsp-caching = 100.000 --no-sout-Audio---sout \
- '#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:
- #! / 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}} '
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.
- apt-get install apache2
Passen Spieler
- 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
- touch / var / www / index.html
- <Html> <head>
- <Meta http-equiv = "Content -Typ" content = "text / html; charset = UTF - 8"> <script type = "text / javascript" src = "/player.js"> </ script>
- <Titel> Ansicht - Kamera 1 </ title>
- </ Head>
- <Body>
- <H1> Kamera Nummer 1 </ h1>
- <a
- href = "http://stream.kubsu.ru:8080/view01.flv"
- style = "display: block; width : 520px; height: 330px; margin: 10px auto;"
- id = "Spieler">
- </ A>
- <Script>
- Flowplayer ( "Spieler", "/player.swf");
- </ Script>
- </ Body> </ html>
Alles ist bereit, in den Browser und Blick auf http://10.0.0.2/ Sendung.
Kommentare
im Auge kommentierte halten , dass der Inhalt und der Ton Ihrer Nachrichten , die Gefühle von echten Menschen verletzen können, Respekt und Toleranz gegenüber seinen Gesprächspartnern, auch wenn Sie Ihr Verhalten in Bezug auf die Meinungsfreiheit und die Anonymität des Internets, ändert ihre Meinung nicht teilen, nicht nur virtuell, sondern realen Welt. Alle Kommentare werden aus dem Index, Spam - Kontrolle versteckt.