2015-12-25 20:19:52 +00:00
# C3VOC Streaming-Webseite
2014-12-13 23:23:28 +00:00
2015-11-04 23:23:05 +00:00
Dies ist der Code für die Streaming-Webseite unter
2015-11-17 11:39:08 +00:00
[streaming.media.ccc.de ](http://streaming.media.ccc.de/ ), welche vom
2015-12-25 20:19:52 +00:00
[C3VOC ](https://c3voc.de/ ) benutzt wird, um Live-Video- und -Audio-Streams von
2015-11-17 11:39:08 +00:00
[diversen Konferenzen ](https://c3voc.de/eventkalender/ ) im Internet zu
2015-11-04 23:23:05 +00:00
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.
2014-12-13 23:23:28 +00:00
2016-06-20 20:41:47 +00:00
## Development
Während der Entwicklung kann der eingebaute PHP-Webserver verwendet werden:
```
$ ./serve.sh
PHP 7.0.4-7ubuntu2.1 Development Server started at Mon Jun 20 22:40:17 2016
Listening on http://localhost:8000
Document root is /home/peter/VOC/streaming-website
Press Ctrl-C to quit.
…
```
Unterstützt wird PHP ab 5.4.
2014-12-13 23:23:28 +00:00
2015-04-06 14:42:11 +00:00
## Setup
2014-12-13 23:23:28 +00:00
2015-11-04 23:23:05 +00:00
Das Setup beim VOC besteht aus einem Hidden-Master-Server, welcher den PHP-Code
2015-11-17 11:39:08 +00:00
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)
2015-11-04 23:23:05 +00:00
können wir aber sehr einfach weitere Frontend-Caches bei verschiedenen Hostern
hinzu deployen.
2015-11-17 11:39:08 +00:00
Zur Vorbereitung einer Konferenz oder zur Weiterentwickelung der Seite ist es
hilfreich, sich das Teil lokal aufzusetzen. Am einfachsten geht das mit 'nem
Apachen, denn die beiliegende [.htaccess ](.htaccess ) konfiguriert das
2015-11-04 23:23:05 +00:00
URL-Rewriting gleich richtig. Bei nginx muss das in der globalen nginx.conf
ungefähr so eingestellt werden:
2015-11-17 11:39:08 +00:00
```
location / {
rewrite /(.*) /index.php?route=$1 last;
}
```
2014-12-13 23:23:28 +00:00
2015-11-04 23:23:05 +00:00
Abweichend von der Default-Config muss in PHP das Flag `short_open_tag = On`
gesetzt werden.
2014-12-13 23:23:28 +00:00
2015-04-06 14:42:11 +00:00
## Konfiguration
2014-12-13 23:23:28 +00:00
2015-11-17 13:44:41 +00:00
Die Seite kann für mehrere parallel laufende Konferenzen gleichzeitig verwendet
werden. Jede Konferenz wird über einen Ordner unterhalb von
[configs/conferences ](configs/conferences ) konfiguriert. In diesen Ordnern können
jeweils folgende Dateien abgelegt werden, welche das Verhalten bzw. die Gestaltung
der jeweiligen Konferenzseite bestimmen, im Folgendem am :
2014-12-13 23:23:28 +00:00
2015-11-17 13:46:24 +00:00
- [config.php ](configs/conferences/nixcon15/config.php ) – steuert das Verhalten der gesamten Konferenzseite. Diese ist ausführlich dokumentiert und sollte sich selbst erklären.
- [download.sh ](configs/conferences/nixcon15/download.sh ) – Wird von einem Cronjob in regelmäßigen Abständen zum Herunterladen von `schedule.xml` -Dateien und anderen Drittkonfiguration verwendet.
- [main.less ](configs/conferences/nixcon15/main.less ) – steuert die Gestaltung der Konferenzseite.
2015-11-17 13:44:41 +00:00
- weitere Assets wie `.png` oder `.svg` -Dateien, die aus der `main.less` heraus referenziert werden können.
2015-04-09 13:47:55 +00:00
2015-05-12 18:07:03 +00:00
## Deployment (auf der VOC Infrastruktur)
2016-10-11 15:28:32 +00:00
see [deploy.sh ](deploy.sh )
2015-05-12 18:07:03 +00:00
2015-04-09 13:47:55 +00:00
## JSON-API
2016-12-20 22:14:35 +00:00
Unter der URL http://streaming.media.ccc.de/streams/v2.json bietet die
2015-11-04 23:23:05 +00:00
Steaming-Webseite eine Übersicht über alle konfigurierten Räume und Streams in
2015-11-17 11:39:08 +00:00
einem maschinenlesbaren Format an. Dieses kann z.B. genutzt werden, um in den
diversen Anwendungen, die sich rund um das Konferenzgeschehen entwickelt haben,
2015-11-04 23:23:05 +00:00
Player und Links zu Liveübertragungen anzubieten.
2015-11-17 11:39:08 +00:00
Wie die URL vermuten lässt, ist die API versioniert. Dies bedeutet, dass in
2016-12-20 22:14:35 +00:00
der `v2.json` keine Felder *entfernt werden* oder ihre *Bedeutung ändern* – es
2015-11-04 23:23:05 +00:00
können aber durchaus *neue Felder* hinzukommen. Eine formalere Spezifikation
des JSON-Formats ist tbd. Ein Beispiel kann [hier
2016-12-20 22:14:35 +00:00
betrachtet](https://gist.github.com/MaZderMind/a91f242efb2f446a2237d4596896efd6) werden.