Merge branch 'staging'

This commit is contained in:
derchris 2021-12-26 21:19:07 +01:00
commit e09f7bf45f
12 changed files with 211 additions and 123 deletions

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 MiB

View file

@ -28,14 +28,14 @@ $CONFIG['CONFERENCE'] = array(
* Der Boolean true ist aus Abwärtskompatibilitätsgründen äquivalent zu 'after'. False ist äquivalent
* zu 'running'.
*/
//'CLOSED' => 'running',
'CLOSED' => 'running',
/**
* Titel der Konferenz (kann Leer- und Sonderzeichen enthalten)
* Dieser im Seiten-Header, im <title>-Tag, in der About-Seite und ggf. ab weiteren Stellen als
* Anzeigetext benutzt
*/
'TITLE' => 'rC3 NOWHERE',
'TITLE' => 'rC3 NOWHERE Test',
/**
* Veranstalter
@ -124,7 +124,13 @@ $CONFIG['OVERVIEW'] = array(
* sonst werden sie nicht angezeigt.
*/
'GROUPS' => array(
// TODO sort array in random order, based on current hour
'Test Streams' => array(
'lukas',
'derchris',
'test',
'infobeamer',
),
// TODO sort array in random order, based on current hour or simular
'Channels' => array(
'cbase',
'cwtv',
@ -246,7 +252,7 @@ $CONFIG['ROOMS'] = array(
'DASH' => true,
'H264_ONLY' => true,
'HLS' => true,
'AUDIO' => false,
'AUDIO' => true,
'SLIDES' => false,
'MUSIC' => false,
'SCHEDULE' => true,
@ -282,7 +288,7 @@ $CONFIG['ROOMS'] = array(
'DASH' => true,
'H264_ONLY' => true,
'HLS' => true,
'AUDIO' => false,
'AUDIO' => true,
'SLIDES' => false,
'MUSIC' => false,
'SCHEDULE' => true,
@ -315,7 +321,7 @@ $CONFIG['ROOMS'] = array(
'DASH' => true,
'H264_ONLY' => true,
'HLS' => true,
'AUDIO' => false,
'AUDIO' => true,
'SLIDES' => false,
'MUSIC' => false,
'SCHEDULE' => true,
@ -350,7 +356,7 @@ $CONFIG['ROOMS'] = array(
'DASH' => true,
'H264_ONLY' => true,
'HLS' => true,
'AUDIO' => false,
'AUDIO' => true,
'SLIDES' => false,
'MUSIC' => false,
'SCHEDULE' => true,
@ -385,7 +391,7 @@ $CONFIG['ROOMS'] = array(
'DASH' => true,
'H264_ONLY' => true,
'HLS' => true,
'AUDIO' => false,
'AUDIO' => true,
'SLIDES' => false,
'MUSIC' => false,
'SCHEDULE' => true,
@ -418,7 +424,7 @@ $CONFIG['ROOMS'] = array(
'DASH' => true,
'H264_ONLY' => true,
'HLS' => true,
'AUDIO' => false,
'AUDIO' => true,
'SLIDES' => false,
'MUSIC' => false,
'SCHEDULE' => true,
@ -451,7 +457,7 @@ $CONFIG['ROOMS'] = array(
'DASH' => true,
'H264_ONLY' => true,
'HLS' => true,
'AUDIO' => false,
'AUDIO' => true,
'SLIDES' => false,
'MUSIC' => false,
'SCHEDULE' => true,
@ -473,8 +479,8 @@ $CONFIG['ROOMS'] = array(
),
'aboutfuture' => array(
'DISPLAY' => 'about:future',
'DISPLAY_SHORT' => 'hacc/a:f',
'STREAM' => 'hacc',
'DISPLAY_SHORT' => 'a:f',
'STREAM' => 'aboutfuture',
'PREVIEW' => true,
'TRANSLATION' => [
],
@ -484,7 +490,7 @@ $CONFIG['ROOMS'] = array(
'DASH' => true,
'H264_ONLY' => true,
'HLS' => true,
'AUDIO' => false,
'AUDIO' => true,
'SLIDES' => false,
'MUSIC' => false,
'SCHEDULE' => true,
@ -519,7 +525,7 @@ $CONFIG['ROOMS'] = array(
'DASH' => true,
'H264_ONLY' => true,
'HLS' => true,
'AUDIO' => false,
'AUDIO' => true,
'SLIDES' => false,
'MUSIC' => false,
'SCHEDULE' => true,
@ -546,9 +552,9 @@ $CONFIG['ROOMS'] = array(
'SD_VIDEO' => true,
'HD_VIDEO' => true,
'DASH' => true,
'H264_ONLY' => false,
'H264_ONLY' => true,
'HLS' => true,
'AUDIO' => false,
'AUDIO' => true,
'SLIDES' => false,
'MUSIC' => false,
'SCHEDULE' => true,
@ -577,7 +583,7 @@ $CONFIG['ROOMS'] = array(
'DASH' => true,
'H264_ONLY' => true,
'HLS' => true,
'AUDIO' => false,
'AUDIO' => true,
'SLIDES' => false,
'MUSIC' => false,
'SCHEDULE' => true,
@ -611,7 +617,7 @@ $CONFIG['ROOMS'] = array(
'DASH' => true,
'H264_ONLY' => true,
'HLS' => true,
'AUDIO' => false,
'AUDIO' => true,
'SLIDES' => false,
'MUSIC' => false,
'SCHEDULE' => true,
@ -647,7 +653,7 @@ $CONFIG['ROOMS'] = array(
'DASH' => true,
'H264_ONLY' => true,
'HLS' => true,
'AUDIO' => false,
'AUDIO' => true,
'SLIDES' => false,
'MUSIC' => false,
'SCHEDULE' => true,
@ -683,7 +689,7 @@ $CONFIG['ROOMS'] = array(
'DASH' => true,
'H264_ONLY' => true,
'HLS' => true,
'AUDIO' => false,
'AUDIO' => true,
'SLIDES' => false,
'MUSIC' => false,
'SCHEDULE' => true,
@ -717,7 +723,7 @@ $CONFIG['ROOMS'] = array(
'DASH' => true,
'H264_ONLY' => true,
'HLS' => true,
'AUDIO' => false,
'AUDIO' => true,
'SLIDES' => false,
'MUSIC' => false,
'SCHEDULE' => true,
@ -749,7 +755,7 @@ $CONFIG['ROOMS'] = array(
'DASH' => true,
'H264_ONLY' => true,
'HLS' => true,
'AUDIO' => false,
'AUDIO' => true,
'SLIDES' => false,
'MUSIC' => false,
'SCHEDULE' => true,
@ -770,7 +776,7 @@ $CONFIG['ROOMS'] = array(
'DASH' => true,
'H264_ONLY' => true,
'HLS' => true,
'AUDIO' => false,
'AUDIO' => true,
'SLIDES' => false,
'MUSIC' => false,
'SCHEDULE' => true,
@ -789,7 +795,7 @@ $CONFIG['ROOMS'] = array(
'DASH' => true,
'H264_ONLY' => true,
'HLS' => true,
'AUDIO' => false,
'AUDIO' => true,
'SLIDES' => false,
'MUSIC' => false,
'SCHEDULE' => true,

View file

@ -1,12 +1,12 @@
@import "../../../assets/css/_structure.less";
// conference specific styles here
@one: #B239FF;
@two: #6800E7;
@three: #26beff;
@four: #FFFFFF;
@one: #f035e7;
@two: #4e7ffa;
@three: rgba(255, 255, 255, 0.9);
@four: #ccc;
@dark2: #201d47;
@dark: #100E23;
@dark: rgba(0, 0, 0, 0.7);
@grey-lighter: #333333;
@grey-darker: #2a2a2a;
@ -22,11 +22,12 @@
@btn-default-color: white;
@btn-default-bg: @two;
@btn-default-border: @two;
@text-color: @four;
@text-color: @three;
@panel-default-border: @two;
@panel-default-heading-bg: @two;
@panel-default-text: @four;
// room pannels on overview page
@panel-default-border: @three;
@panel-default-heading-bg: @three;
@panel-default-text: @dark2;
@panel-bg: @dark;
@navbar-height: 70px;
@ -34,11 +35,11 @@
@navbar-default-brand-color: @three;
@nav-tabs-link-hover-border-color: @two;
@nav-tabs-active-link-hover-color: @four;
@nav-tabs-active-link-hover-bg: @one;
@nav-tabs-active-link-hover-border-color: @one;
@nav-tabs-justified-link-border-color: @one;
@nav-tabs-border-color: @one;
@nav-tabs-active-link-hover-color: @dark;
@nav-tabs-active-link-hover-bg: @three;
@nav-tabs-active-link-hover-border-color: @three;
@nav-tabs-justified-link-border-color: @three;
@nav-tabs-border-color: @three;
// schedule
@schedule-pause: @grey-lighter;
@ -47,8 +48,27 @@
@brand-danger: @one; // @schedule-now
@schedule-gap-bg: @dark;
.block.event {
background-color: rgba(0, 0, 0, 0.3);
}
@headings-color: @four;
h1, h2 {
color: @three;
}
h3 {
color: #888;
}
body .schedule .block h5 {
color: #606060;
}
body {
background-color: @dark;
background-color: #000;
background: url(background-21.png) no-repeat right top fixed;
background-size: 100% 100%;
padding: @navbar-height 0;
@media (max-width: 498px) { /* when the navbar breaks */
@ -56,11 +76,7 @@ body {
}
}
@headings-color: @four;
h1, h2 {
// color: #46eed5;
color: @three;
}
/*
* font
@ -85,6 +101,14 @@ body.overview .panel-primary a,
background: @dark2;
}
.panel-body{
color: white;
}
.panel-body {
}
.tab-content{
background-color: rgba(0, 0, 0, 0.65) !important;
}
.btn {
background: none !important;
border: none;
}

View file

@ -264,7 +264,10 @@ class Room
{
$selections = array();
if($this->hasDash())
$selections[] = 'dash';
if($this->h264Only())
$selections[] = 'hls';
else
$selections[] = 'dash';
if($this->hasAudio())
$selections[] = 'audio';

View file

@ -48,6 +48,9 @@ class RoomSelection
case 'music':
return 'Radio';
case 'hls':
return 'HLS';
default:
return ucfirst($this->getSelection());

View file

@ -100,9 +100,13 @@ class Stream
break;
case 'dash':
# no special attribution, this is the "normal" stream
if($room->h264Only()) {
$display .= 'HLS';
} else {
$display .= 'DASH';
}
break;
default:
$display .= ucfirst($this->getSelection());
break;
@ -188,11 +192,8 @@ class Stream
{
switch($proto)
{
case 'mp3':
return proto().'://'.joinpath([$GLOBALS['CONFIG']['CDN'], rawurlencode($this->getRoom()->getStream()).'_'.rawurlencode($this->getLanguage()).'.mp3']);
case 'opus':
return proto().'://'.joinpath([$GLOBALS['CONFIG']['CDN'], rawurlencode($this->getRoom()->getStream()).'_'.rawurlencode($this->getLanguage()).'.opus']);
case 'hls':
return proto().'://'.joinpath([$GLOBALS['CONFIG']['CDN'], 'hls/'.rawurlencode($this->getRoom()->getStream()).'/segment_'.rawurlencode(ucfirst($this->getLanguage())).'.m3u8']);
}
return null;
@ -201,11 +202,8 @@ class Stream
{
switch($proto)
{
case 'mp3':
return 'MP3-Audio, 96 kBit/s';
case 'opus':
return 'Opus-Audio, 64 kBit/s';
case 'hls':
return 'AAC, VBR';
}
return null;
@ -213,8 +211,7 @@ class Stream
public static function getAudioProtos()
{
return array(
'mp3' => 'MP3',
'opus' => 'Opus',
'hls' => 'HLS',
);
}

View file

@ -59,10 +59,10 @@
<select class="form-control" name="os" id="os">
<option></option>
<option>Unixoid</option>
<option>OS/X</option>
<option>macOS</option>
<option>Windows</option>
<option>iOS</option>
<option>Android</option>
<option>iOS/iPadOS/tvOS</option>
<option>Something else</option>
</select>
</div>

View file

@ -1,25 +1,7 @@
<!-- Uses regular player only if translation is forced -->
<? if($stream->isTranslated()): ?>
<video
preload="auto"
controls="controls"
autoplay="autoplay"
style="max-height: 400px; max-width:100vw; display: block; margin: auto;"
poster="<?=h($stream->getPoster())?>"
>
<source
src="<?=h($stream->getAudioUrl('mp3'))?>"
type="audio/mp3"
/>
</video>
<!-- Use voc-player per default, TODO: implement preferred language feature -->
<? else: ?>
<div class="video-wrap"
data-voc-player
data-stream="<?=h($room->getStream())?>"
data-stream="<?=h($stream->getAudioUrl('hls'))?>"
data-poster="<?=h($stream->getPoster())?>"
data-audio-only="true"
></div>
<? endif ?>
></div>

View file

@ -0,0 +1,7 @@
<div class="video-wrap"
data-voc-player
data-h264-only="<?=h($room->h264Only())?>"
data-stream="<?=h($room->getStream())?>"
data-poster="<?=h($stream->getPoster())?>"
data-preferred-language="<?=($stream->getLanguage())?>"
></div>

View file

@ -0,0 +1,60 @@
<div class="container-fluid">
<div class="directlinks">
<? foreach(Stream::getVideoProtos() as $proto => $display): ?>
<h3>Direct links (<?=h($display)?>)</h3>
<div class="row">
<? foreach($room->getVideoResolutions() as $res): ?>
<? $selection = $room->createSelectionObject($res) ?>
<? $switcherstream = $room->createStreamObject($res) ?>
<div class="col-lg-3 col-md-4 col-lg-5 col-xs-12">
<div class="btn-group" role="group" title="<?=h($switcherstream->getVideoTech($proto))?>">
<div class="btn btn-primary" disabled><?=h($selection->getDisplay())?></div>
<? if($room->hasTranslation()): ?>
<a href="<?=h($room->createStreamObject($res, 'native')->getVideoUrl($proto))?>" class="btn btn-default">
<span class="fa fa-flag-o"></span>
Native
</a>
<? foreach($room->getTranslations() as $translation): ?>
<a href="<?=h($room->createStreamObject($res, $translation['endpoint'])->getVideoUrl($proto))?>" class="btn btn-default">
<span class="fa fa-flag"></span>
<?=h(ucfirst($translation['label']))?>
</a>
<? endforeach ?>
<? else: ?>
<a href="<?=h($switcherstream->getVideoUrl($proto))?>" class="btn btn-default">
<span class="fa fa-video-camera"></span>
Video
</a>
<? endif ?>
</div>
</div>
<? endforeach ?>
</div>
<? endforeach ?>
</div>
<? if(!$room->h264Only()): ?>
<div class="directlinks">
<h3>Direct link to DASH-Manifest</h3>
<div class="row">
<div class="col-lg-3 col-md-4 col-lg-5 col-xs-12">
<div class="btn-group" role="group" title="<?=h($switcherstream->getVideoTech("dash"))?>">
<div class="btn btn-primary" disabled>DASH</div>
<a href="<?=h($room->getDashManifestUrl())?>" target="_blank" class="btn btn-default">
<span class="fa fa-flask"></span>
Manifest
</a>
</div>
</div>
</div>
</div>
<? endif ?>
</div>

View file

@ -81,24 +81,30 @@ foreach (Conferences::getActiveConferences() as $conference)
);
}
break;
case 'dash':
$urls['dash'] = array(
'display' => 'DASH, baby',
'tech' => $room->getDashTech(),
'url' => $room->getDashManifestUrl(),
);
break;
if(!$room->h264Only()):
$urls['dash'] = array(
'display' => 'DASH, baby',
'tech' => $room->getDashTech(),
'url' => $room->getDashManifestUrl(),
);
break;
endif;
}
$streams[] = array(
'slug' => $key,
'display' => $stream->getDisplay(),
'type' => $stream->getPlayerType(),
'isTranslated' => $stream->isTranslated(),
'videoSize' => $stream->getVideoSize(),
'urls' => (object)$urls,
);
if($room->h264Only() and $key == "dash-native") {
continue;
} else {
$streams[] = array(
'slug' => $key,
'display' => $stream->getDisplay(),
'type' => $stream->getPlayerType(),
'isTranslated' => $stream->isTranslated(),
'videoSize' => $stream->getVideoSize(),
'urls' => (object)$urls,
);
}
}
$roomstruct[] = array(