Änderungen
Aus Hackerspace Ffm
/* Streaming mit geringer Latenz von der Raspberry Cam */
** Bei WLAN-Sticks ist oft ein Stromsparmodus aktiv, der sehr störend sein kann wenn man geringe Latenzen erreichen will. Auch verhalten sich Sticks je nach Chipsatz verschieden. Den Stromsparmodus kann man bei manchen Sticks wie folgt abschalten: <pre>sudo iwconfig wlan0 power off</pre>. Mit <pre>iwconfig wlan0</pre> kann man sehen, ob der Stromsparmodus aktiv ist oder nicht und auch die Verbindungsqualität feststellen.
** Da der Raspberry die volle WLAN-Rate eh nicht nutzen kann, ein hin- und herschalten verschiedener WLAN-Geschwindigkeiten sich aber auch negativ auf die Latenz auswirken kann, kann man versuchen das WLAN auf langsamere (aber robustere) Kodierungen festzunageln (b statt g oder n). TODO: Wie?
* * Schlecht für die Latenz ist es auch, wenn die Pakete an irgendeiner Stelle fragmentiert werden müssen, um zum Ziel zu gelangen. Damit die Pakete gleich von Anfang an nicht zu groß herausgesendet werden, reduziert man die MTU etwas in der Datei /etc/network/interfaces durch hinzufügen der Zeile <pre>mtu 1464</pre> im Bereich der Einstellungen für WLAN0. * Bandbreite: Nur der LAN-Port vom Raspberry erreicht halbwegs brauchbare Bandbreite, bereits mit WLAN-Sticks und erst recht über langsame Internetverbindungen ist der Hauptgrund für eine schlechte Latenz dass schlicht die Bandbreite nicht ausreicht. Hier kann man aber meist wenig machen, daher muss man dafür sorgen, dass der Bandbreitenbedarf des Video-Streams gedrosselt wird. Hier ist die Option -q ein wichtiger Hebel, mit dem die Bildqualität zu Gunsten geringerem Bandbreitenbedarf reduziert werden kann.* <strike>Streaming geht am schnellsten, wenn natürlich möglichst wenig umcodiert wird, raspicam </strike>. Die Raspicam liefert aber nativ bereits einen H264codierten Datenstrom. Oft macht es Sinn, diesen umzocodieren, z.B. auf MJPEG, da sich dies recht einfach auch in Browsern darstellen lässt. Für die H264 dekodierung sowie JPG Komprimierung kann der Raspberry aber auf eine gute Hardwarebeschleunigung zurück greifen, das ist oft nicht so kompatibeldass z.B. auch Streams mit höheren Auflösungen als 640x480 noch mit hoher Framerate und geringer Prozessorlast umcodiert werden können. Gerade bei schmalbandigen Netzwerkverbindungen, Streaming im Browser mag eher MJPGund dazu gehört bereits eine WLAN-Verbindung zum Raspberry, bringt es bezüglich Latenz viel mehr, hier den Bandbreitenbedarf auch auf Kosten von etwas CPU Zeit stark herunterzubrechen, als mit dem zu wenig komprimierten H264 Strom gleich den Kanal zu verstopfen. ** Mit mjpg-streamer und einem Phyton Skript geht es flott http://petrkout.com/electronics/low-latency-0-4-s-video-streaming-from-raspberry-pi-mjpeg-streamer-opencv/ - das bringt auch ein Webinterface mit, aber hier musste ich die Qualität herunter stellen, damit auch die Latenz besser wurde (trotz lokalem Netz, wo es klemmt ist mir noch nicht klar): <pre>./mjpg_streamer -o "output_http.so -w ./www" -i "input_raspicam.so -x 640 -y 480 -fps 10 15 -q 8"</pre>. Mehr als 10fps waren kontraproduktiv, Die Option -q 8 gibt schon deutlich schlechtere Qualität, aber es läuft dann auch meist sehr gut im Browser. Ausserhalb vom Browser ging weit mehr Rate und Qualität.** Direkt wegschaufeln von H264 über netcat <pre>raspivid -hf -w 1280 -h 1024 -t 999999999 -fps 20 -b 5000000 -o - | nc -l -p 5001</pre>, dann empfangen mit <pre>nc\nc.exe 192.168.1.76 5001 | mplayer\mplayer.exe -fps 30 -demuxer h264es -</pre>* Weitere Maßnahmen (noch nicht ausprobiert):** Empfänger auf hohe fps stellen (ruhig höher als gesendet wird)** Im Browser auch Größe angeben: <pre><img alt="" src="http://phobos:8080/?action=stream" width="1280" height="960" /></pre>** Weiterlesen: http://www.raspberrypi.org/forums/viewtopic.php?f=43&t=32605&start=150#p336453 und http://www.raspberrypi.org/forums/viewtopic.php?f=43&t=45793&start=25 und http://blog.tkjelectronics.dk/2013/06/how-to-stream-video-and-audio-from-a-raspberry-pi-with-no-latency/
== Hackerspace Raspberry ==
Ein Raspberry ist nun im Hackerspace installiert. Er dient zunächst als Samba-Fileaustausch-Server, erreichbar ist er unter der internen IP 192.168.178.122. Es können auch Nutzeraccounts eingerichtet werden für Mitglieder des Hackerspaces, die auch aus dem Internet zu erreichen sind. Der Raspberry ist zum spielen (aber nicht kaputt-spielen!) freigegeben, Nutzer können daher auch recht schnell sudo-Rechte bekommen. Octoprint wurde weitgehend installiert (Phyton-Serial muss vermutlich noch auf 250kBaud gepatcht werden, Autostart für Octoprint fehlt auch noch, Kamera ist auch noch nicht installiert).