No description
Find a file
2015-11-14 12:29:57 +01:00
assets fix swf path after mandator-changes 2015-11-13 19:52:38 +01:00
configs unify conferences open/closed configuration to using dates 2015-11-14 12:29:57 +01:00
lib implement mandator handling, supporting different styles per mandantor 2015-11-08 14:40:30 +01:00
model fix thumbs url 2015-11-08 20:36:45 +01:00
template finish overview-page 2015-11-08 16:31:29 +01:00
view global streams api 2015-11-08 20:36:34 +01:00
.gitignore add swp/save files and thumbs-folder to gitignore 2015-11-13 19:48:17 +01:00
.htaccess use php-based lesscss compiler 2015-10-05 17:28:23 +02:00
50x.html rename 500.html to 50x.html as referred to by nginx-config 2015-08-21 12:13:44 +02:00
404.html add 404.html as referred to by nginx.conf 2015-08-21 12:13:53 +02:00
build.htaccess Only Apply mod_expires rules if it is available in Apache 2015-03-08 15:46:05 +01:00
build.sh Fix Build-Script for LessCSS 2015-03-08 15:46:33 +01:00
config.php move base-url & timezone out of per-conference config 2015-11-14 12:29:50 +01:00
index.php move base-url & timezone out of per-conference config 2015-11-14 12:29:50 +01:00
README.md readme: added schedule.xml section 2015-11-05 00:23:05 +01:00

c3voc Streaming-Webseite

Dies ist der Code für die Streaming-Webseite unter streaming.media.ccc.de welche vom c3voc benutzt wird um Live-Video und -Audio-Streams von diversen Konferenzen inm Internet zu präsentieren. Die Idee hinter diesem Projekt ist es, eine generische Codebasis zu haben, die mit wenigen Konfigurationsoptionen und ein paar CSS-Rules an die Gegebenheiten und die Gestaltung der Konferenz angepasst werden können.

Setup

Das Setup beim VOC besteht aus einem Hidden-Master-Server, welcher den PHP-Code in einem nginx ausführt. Dahinter kommen n Frontend-Caches, wobei für kleine Events n eigentlich fast immer =1 ist. Für große Events (Camp, Congress), können wir aber sehr einfach weitere Frontend-Caches bei verschiedenen Hostern hinzu deployen.

Zum vorbereiten einer Konferenz oder weiterentwickeln der Seite ist es hilfreich, sich das Teil lokal aufzusetzen. Am einfachsten geht das mit nem Apachen denn die beiliegende .htaccess konfiguriert das URL-Rewriting gleich richtig. Bei nginx muss das in der globalen nginx.conf ungefähr so eingestellt werden:

    location / {
      rewrite /(.*) /index.php?route=$1 last;
    }

Abweichend von der Default-Config muss in PHP das Flag short_open_tag = On gesetzt werden.

Die CSS-Styles sind in less-css geschrieben und es wird ein less-Compiler benötigt, um diese in CSS-Dateien umzuwandeln. Der Einfachste Weg ist node.js über das Debian-Repo installieren und dann mit npm install -g less den lessc-Compiler installieren. Zum korrekten bauen der Less-Datei kann das makefile in assets/css verwendet werden.

Konfiguration

Die Gesamte Seite wird von der zentralen config.php-Datei gesteuert. Diese ist ausführlich dokumentiert und sollte sich selbst erklären.

Für die Konferenztypische Gestaltung kann in der main.less nach Wunsch ausgestaltet werden. Als Beispiel sei hier die Gestaltung für das Easterhegg 2015 verlinkt: d3c0e74

Üblicherweise machen wir für jede Veranstaltung einen events/XXXX branch auf, wobei XXXX das Acronym der Konferenz ist.

Deployment (auf der VOC Infrastruktur)

	ssh voc@live.ber
	cd /srv/nginx/streaming-website
	git fetch origin
	git checkout <branch>

	cd assets/css
	make
	sudo sh -c 'rm -rf  /srv/nginx/cache/streaming_fcgi/*'
	exit

	ssh voc@live.dus
	sudo sh -c 'rm /srv/nginx/cache/streaming_website/static/* /srv/nginx/cache/streaming_website/pages/*'
	exit

JSON-API

Unter der URL http://streaming.media.ccc.de/streams/v1.json bietet die Steaming-Webseite eine Übersicht über alle konfigurierten Räume und Streams in einem Maschienenlesbaren Format an. Dieses kann z.B. genutzt werden, um in den diversen Anwendungen die sich rund um das Konferenzgeschehen entwickelt haben Player und Links zu Liveübertragungen anzubieten.

Wie die URL vermuten lässt, ist die API versionionert. Dies bedeutet, dass in der v1.json keine Felder entfernt werden oder ihre bedeutung ändern es können aber durchaus neue Felder hinzukommen. Eine formalere Spezifikation des JSON-Formats ist tbd. Ein Beispiel kann hier betrachtet werden.

Schedule

Unter configs/schedule.xml wird das schedule.xml der Veranstaltung abgelegt. Regelmäßige Aktualisierungen können z. B. mit folgenden Cron-Job vorgenommen werden:

  voc~$ crontab -l
  */5 * * * * cd /srv/nginx/streaming-website/configs; ./download.sh