Hallo,
ich habe ein Teil der Doku kopiert. Diese Lösung habe ich bei den 27C3 getestet und ist reibungslos gelaufen.
Wenn du weitere Fragen hast kannst du mich per mail oder pm erreichen.
====== Slides Only System + DVBackup ======
===== Aufbau =====
==== Saal-Barebones ====
Die drei P4 Barebones werden in jeder Saal eingesetzt. Die Terratec Grabby USB Doongles[1] besitzen eine S-Video (nicht genügend getestet) und Composite Eingang. Das Video Signal von den Folien bekommt man durch den Scanline Converter an die Barebones.
Der Videostrom wird von Motion[2][3] überwacht und wenn innerhalb einer halbe Sekunde über 1500 Pixels (Option einstellbar) sich geändert haben wird ein Snapshot gemacht und gespeichert. Zusätzlich jede 5. Sekunde noch wird noch ein Snapshot gespeichert.
Speicherformat:<code>%Y.%m.%d_%H-%M-%S.jpg</code>
Jedes mal, wenn ein Bild gespeichert wird, wird das Script "on_picture_save.sh"[4] aufgerufen (Event gesteuert).
Das „on_picture_save“ Script schneidet das Bild zurecht, d.h. Ränder zurecht kriegen
Anschließend wird das Bild zum Webserverrootordner kopiert und die Slides-Webverteilersever benachrichtigt, dass es ein neues Bild gibt.
Auf den Barebones läuft ein nginx[6] Server, wo seine einzige Aufgabe ist, die Bilder zum Slides-Webverteilersever zu Verfügung stellen bzw. per HTTP liefern.
==== Slides-Webverteilersever ====
Die Webserver sind die Kisten, die die Slides an Welt verteilen. Es läuft ein nginx mit cache_purge und http_stub_status module. nginx.conf[7]
Die Webserver dienen als Reverseproxys.
In den Rootordner werden die Index Webseiten pro Saal mit Nameschema "saalX.html".
Voraussetzung:
* Gigabit Anbindung
* >= 512 MB RAM
* 5 GB für Betriebssystem (Gentoo empfohlen)
TODO: * TCP Optimierung, offene Connections max Anzahl testen
=== Slides Übertragung ===
Die Bilder werden im cache für maximal einer Minute gespeichert, nach Ablauf des Caches wird ein neues Bild von den Bareboneswebserver per HTTP geholt, wenn eine neue Anfrage für dieses Bild ankommt.
Der Server bekommt jede Sekunde (Zeit einstellbar) eine Request vom Klient. Falls das Bild sich noch im Cache befindet wird die geliefert.
Wenn ein neues Bild in eine Saal erzeugt wird (Siehe Sektion Saal-Barebones), wird ein Cache-Purge aufgerufen, die das Bild im Cache des Webservers ungültig macht. So wird ein neues Bild geholt, wenn eine neue Anfrage ankommt.
In den Webserver ist zwar die Cache Zeit auf eine Minute gestellt. Bilder werden aber maximal 2 pro Sekunde und maximal jede 5. Sekunde.
===== Kernel Hacking/Options =====
TCP Optimierung:
<code>
-> Networking Support (NET [=y])
-> Networking options
-> TCP/IP networking (INET [=y])
-> TCP: advanced congestion control (TCP_CONG_ADVANCED [=y])
</code>
Um die Datenübertragungen zu Beschleunigen wird tief in das TCP gewerkelt. Für alle Kisten wurde als Congestion Avoidance Algorithm "H-TCP" gewählt.
Extrakt aus der Kernel-Help:
<code>
H-TCP is a send-side only modifications of the TCP Reno protocol stack that optimizes the performance of TCP congestion control for high speed network links. It uses a modeswitch to change the alpha and beta parameters of TCP Reno based on network conditions and in a way so as to be fair with other Reno and H-TCP flows.
</code>
* em28xx, Treiber für Terratec Grabby USB
* V4L2
* Netzwerk Kernel Treiber
===== Links =====
[1] [[
http://www.terratec.net/de/produkte/Grabby_82247.html | Terratec Grabby USB ]]
[2] [[
http://www.lavrsen.dk/twiki/bin/view/Motion/WebHome | Motion Homepage ]]
[3] MotionConf
[4] on_picture_save.sh Was zu tun wenn ein Bild aufgenohmen wurde
[6] saal.nginx.conf
[7] webverteiler.nginx.conf