No description
Find a file
2017-06-06 13:36:54 +02:00
assets update dash-player to simultaneous dash/hls player 2017-05-28 03:37:40 +02:00
command handle download-errors again 2016-12-24 17:42:58 +01:00
configs/conferences not closed yet 2017-06-06 13:36:54 +02:00
lib work on startpage style 2016-12-21 18:22:37 +01:00
model tweak sorting 2017-05-28 13:00:54 +02:00
template update dash-player to simultaneous dash/hls player 2017-05-28 03:37:40 +02:00
view repair api-ouput in the presence of DASH streams 2017-05-28 18:36:30 +02:00
.gitignore ignore intellij files 2017-04-13 18:42:17 +02:00
.htaccess repair routing under apache mod_php/mod_redir 2016-12-26 00:30:23 +01:00
50x.html switched from c3voc to uppercase C3VOC 2015-12-25 21:19:52 +01:00
404.html switched from c3voc to uppercase C3VOC 2015-12-25 21:19:52 +01: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
clear_cache add clear-cache script 2016-08-26 16:59:41 +02:00
config.php use DateTime objects for ends/startsAt 2016-12-11 20:38:30 +01:00
deploy.sh lb.alb is currently not … there# 2017-04-13 18:42:12 +02:00
download.sh add download.sh for easy download of schedule-data 2016-12-29 00:32:31 +01:00
index.php repair main-css when hosted in a subdir 2016-12-26 00:30:40 +01:00
README.md implement streams-api v2 2016-12-20 23:14:35 +01:00
serve.sh allow specifying the serving port 2016-08-19 11:23:42 +02: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 im 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.

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.

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.

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 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.

Konfiguration

Die Seite kann für mehrere parallel laufende Konferenzen gleichzeitig verwendet werden. Jede Konferenz wird über einen Ordner unterhalb von 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 :

  • config.php steuert das Verhalten der gesamten Konferenzseite. Diese ist ausführlich dokumentiert und sollte sich selbst erklären.
  • download.sh Wird von einem Cronjob in regelmäßigen Abständen zum Herunterladen von schedule.xml-Dateien und anderen Drittkonfiguration verwendet.
  • main.less steuert die Gestaltung der Konferenzseite.
  • weitere Assets wie .png oder .svg-Dateien, die aus der main.less heraus referenziert werden können.

Deployment (auf der VOC Infrastruktur)

see deploy.sh

JSON-API

Unter der URL http://streaming.media.ccc.de/streams/v2.json bietet die Steaming-Webseite eine Übersicht über alle konfigurierten Räume und Streams in einem maschinenlesbaren 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 versioniert. Dies bedeutet, dass in der v2.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.