// Raspberry Pi: Livestream mit dem Kamera Modul

Um das Bild des Raspberry Pi Kamera Moduls live auf einen Client zu streamen gibt es eine Menge Möglichkeiten. Ich habe es mir aber einfach gemacht und einfach die Variante mit Netcat und MPlayer aus der Doku etwas angepasst.
Auf dem Client wird dazu logischerweise Netcat und MPlayer benötigt. Der Pi muss wie hier beschrieben für das Kamera Moudul vorbereitet werden. Leider kann so nur auf einen Client, dessen IP-Adresse im Voraus bereits bekannt sein muss, gestreamt werden (was der größte Nachteil dieser Methode ist).
Mit folgenden zwei Befehlen erziele ich eine kaum spürbare Latenz (via LAN oder WLAN) und das bei einer recht guten Bildqualität (dank While-Schleife wartet raspivid so lange bis auf der Clientseite netcat läuft):

# Auf dem Pi ausführen:
pi@ardupi ~ $ CLIENT=""  # IP des Empfängers
pi@ardupi ~ $ while [ 1 ] ; do raspivid -vs -vf -w 1280 -h 720 -fps 10 -t 999999 -o - | nc $CLIENT 5001 ; sleep 5 ; done
 
# Auf dem Client ausführen:
user@client:~$ nc -l 5001 | mplayer -fps 20 -cache 430 -
  • -vs und -vf kann natürlich angepasst werden
  • natürlich kann auf dem Pi auch -w, -h und -fps erhöht werden, dann wird die Latenz aber wieder größer
  • wenn auf dem Client der Stream nicht startet, muss der Wert von cache erhöht werden

Der Trick besteht darin, die FPS auf der Clientseite höher zu setzen als auf dem Pi. Dank dem reinen „Pipen“ via netcat ist die einzige Softwarekomponente mit Cache/Buffer MPLayer, was zusätzlich die Latenz verringert. Um mit MJPG-streamer (Streamer), Browser/VLC (Client) und einer Webcam vergleichbare Latenzen zu erhalten, musste ich die Qualität erheblich herunterschrauben.

Comments

No. 1 @ 2014/05/03 13:23

Hallo!

Vielen Dank für einfache Lösung, hat bestens funktioniert. Gibt es eigentlich eine Möglichkeit den Stream auf einem Windows Client aufzuzeichnen?

Grüsse Paul

Paul
No. 2 @ 2014/05/03 14:55

Hi,

aufnehmen funktioniert. In der Kommandozeile noch - dumpstream - dumpfile c:/test.ram hinzugefügt. Leider kann man aber nicht gleichzeitig schauen. Für meinen Anwendungsfall benötige ich beides. Vielleicht eine Idee?

Grüsse Paul

No. 3 @ 2014/05/03 17:58

@Paul:Kannst du das Outputfile nicht während des Aufzeichnens mit mplayer oder VLC öffnen?
Unter Linux könnte man Pipes verwenden, das ginge dann wie z.B. hier im ersten Kommentar beschrieben. Unter Windows würde das allerhöchstens mit Cygwin gehen.
Evtl. schaffts du es aber mit einem ähnlichen Ansatz das Material auf dem Pi aufzunehmen und dann zeitgleich via netcat zu pipen bzw. zu streamen.
Für Motion gibt es mittlerweile einen Treiber für das Kameramodul. Damit müsstest du das Material Pi-seitig aufnehmen und gleichzeitg streamen können.

Leave a comment…




   ____   ___  ______  _      __   ____   _  __     __   ___    ___    ____   _  __  __  __
  / __/  / _ \/_  __/ | | /| / /  / __/  | |/_/ __ / /  / _ \  / _ \  /  _/  | |/_/ / / / /
 _\ \   / ___/ / /    | |/ |/ /  / _/   _>  <  / // /  / , _/ / , _/ _/ /   _>  <  / /_/ / 
/___/  /_/    /_/     |__/|__/  /___/  /_/|_|  \___/  /_/|_| /_/|_| /___/  /_/|_|  \____/
  • E-Mail address will not be published.
  • Formatting:
    //italic//  __underlined__
    **bold**  ''preformatted''
  • Links:
    [[http://example.com]]
    [[http://example.com|Link Text]]
  • Quotation:
    > This is a quote. Don't forget the space in front of the text: "> "
  • Code:
    <code>This is unspecific source code</code>
    <code [lang]>This is specifc [lang] code</code>
    <code php><?php echo 'example'; ?></code>
    Available: html, css, javascript, bash, cpp, …
  • Lists:
    Indent your text by two spaces and use a * for
    each unordered list item or a - for ordered ones.
Hello World!

This is the personal website of Christoph Winkler.
Here you will find a sort of blog and some information about me and my projectshave fun!

Recent Comments
Latest Tweets

Follow me on Twitter...

QR-Code: aktuelle Seiten-URL
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: CC Attribution-Noncommercial-Share Alike 3.0 Unported