aboutsummaryrefslogtreecommitdiffstats
path: root/web
diff options
context:
space:
mode:
Diffstat (limited to 'web')
-rw-r--r--web/etc/nginx/default.conf10
-rwxr-xr-xweb/stream.gathering.org/embed.pl90
-rw-r--r--web/stream.gathering.org/embed.tmpl92
-rw-r--r--web/stream.gathering.org/event.vlc3
-rwxr-xr-xweb/stream.gathering.org/generate_vlc.pl4
-rwxr-xr-xweb/stream.gathering.org/index.pl41
-rw-r--r--web/stream.gathering.org/index.tmpl111
-rw-r--r--web/stream.gathering.org/noccam.vlc3
-rw-r--r--web/stream.gathering.org/resources/css/core.css30
-rw-r--r--web/stream.gathering.org/southcam.vlc3
-rw-r--r--web/stream.gathering.org/streamlib/stream/config.pm128
11 files changed, 344 insertions, 171 deletions
diff --git a/web/etc/nginx/default.conf b/web/etc/nginx/default.conf
index 4335774..80fc4f3 100644
--- a/web/etc/nginx/default.conf
+++ b/web/etc/nginx/default.conf
@@ -156,8 +156,7 @@ server {
ssl_stapling on;
ssl_stapling_verify on;
root /var/www/stream/;
-# index index.pl index.html;
- index index.pl index.py index.html;
+ index index.pl index.html;
location /hls {
types {
#application/vnd.apple.mpegurl m3u8;
@@ -192,13 +191,6 @@ server {
allow 2a06:5841:151a::/64;
deny all;
}
- location ~ \.py {
- try_files $uri =404;
- fastcgi_pass unix:/tmp/index-fcgi.sock;
- fastcgi_index index.py;
- fastcgi_param PATH_INFO $fastcgi_path_info;
- include fastcgi_params;
- }
location ~ \.pl|cgi$ {
try_files $uri =404;
gzip off;
diff --git a/web/stream.gathering.org/embed.pl b/web/stream.gathering.org/embed.pl
index 91fc413..ae76bea 100755
--- a/web/stream.gathering.org/embed.pl
+++ b/web/stream.gathering.org/embed.pl
@@ -1,14 +1,18 @@
-#!/usr/bin/perl -I /root/tgmanage/web/stream.gathering.org/streamlib
+#!/usr/bin/perl -I /root/tgmanage/web/stream.gathering.org/streamlib/
use warnings;
use strict;
use CGI;
+# apt-get install libgeo-ip-perl
use Geo::IP;
use NetAddr::IP;
use Net::IP;
# apt-get install libnet-ip-perl libnetaddr-ip-perl
use HTML::Template;
+# apt-get install libhtml-template-perl
use stream;
use stream::config;
+#use MIME::Base64;
+use URI::Escape;
my $client = CGI->new;
@@ -16,6 +20,12 @@ my $v4net = $stream::config::v4net;
my $v6net = $stream::config::v6net;
my $tg = $stream::config::tg;
my $tg_full = $stream::config::tg_full;
+my $video_url_mp4;
+my $video_url = $stream::config::video_url;
+my $video_url_fallback = $stream::config::video_url_fallback;
+if($stream::config::video_url_mp4) {
+$video_url_mp4 = $stream::config::video_url_mp4;
+}
my %streams = %stream::config::streams;
my $force_unicast = $client->param('forceunicast');
@@ -29,41 +39,67 @@ my $clip = $client->remote_addr();
my $template = HTML::Template->new(filename => 'embed.tmpl');
my $is_local = &is_ip_local($clip, $v4net, $v6net);
-my @streams = &html_local_test();
-$template->param(TG => $tg);
+#my @streams = &loop_webcams("event");
+#my @camstreams = &loop_webcams("camera");
+
+my %input;
+for my $key ( $client->param() ) {
+ $input{$key} = $client->param($key);
+}
+
+#$template->param(TG => $tg);
$template->param(TG_FULL => $tg_full);
-$template->param(STREAMS => \@streams);
+#$template->param(STREAMS => \@streams);
+#$template->param(CAMSTREAMS => \@camstreams);
$template->param(NOHEADER => $no_header);
+if(exists $input{url}) {
+ my $url = uri_unescape($input{url});
+
+ if ($url ~~ %streams) {
+ $template->param(VIDEO_URL_MAIN => $streams{$url}->{main_url});
+ $template->param(VIDEO_URL_FALLBACK => $streams{$url}->{fallback_url});
+ if($streams{$url}->{mp4_url}) {
+ $template->param(VIDEO_URL_MP4 => $streams{$url}->{mp4_url});
+ }
+ }
+ # Check against XS-scripting:
+ #if (index($decodedUrl, 'cubemap.tg16.gathering.org/') != -1) {
+ # $template->param(VIDEO_URL => $decodedUrl);
+ #} elsif (index($decodedUrl, 'stream.tg16.gathering.org/') != -1) {
+ # $template->param(VIDEO_URL => $decodedUrl);
+ #} else {
+ # $template->param(VIDEO_URL => $video_url);
+ #}
+} else {
+ $template->param(VIDEO_URL_MAIN => $video_url);
+ $template->param(VIDEO_URL_FALLBACK => $video_url_fallback);
+ if($video_url_mp4) {
+ $template->param(VIDEO_URL_MP4 => $video_url_mp4);
+ }
+}
print $template->output();
-sub html_local_test() {
+sub loop_webcams() {
my @s = ();
foreach my $name (sort { $streams{$a}->{priority} <=> $streams{$b}->{priority} } keys %streams) {
- my $title_link = "http://stream.tg$tg.gathering.org/stream.pl?delivery=%s&stream=${name}&interlaced=%s";
- my $multicast_link = $streams{$name}->{has_multicast} ? "multicast" : "unicast";
- $multicast_link = "unicast" if ($force_unicast == 1 || not $is_local);
+ if ($streams{$name}->{type} eq $_[0] && $streams{$name}->{online}) {
+ my $vlc_url = "http://stream.tg$tg.gathering.org/generate_vlc.pl?delivery=%s&stream=${name}&interlaced=%s";
+ my $multicast = $streams{$name}->{has_multicast} ? "multicast" : "unicast";
+ $multicast = "unicast" if (defined $force_unicast && $force_unicast == 1 || not $is_local);
- if ($streams{$name}->{external}) {
- $title_link = $streams{$name}->{url};
- } else {
- $title_link = sprintf($title_link, $multicast_link, $streams{$name}->{interlaced});
- }
- my %hash = (
- 'title_link' => $title_link,
- 'title' => $streams{$name}->{title},
- 'quality' => $streams{$name}->{quality},
- 'type' => $streams{$name}->{type},
- );
- if ($multicast_link eq "multicast") {
- $hash{'is_multicast'} .= 1;
- my $unicast_link = $title_link;
- $unicast_link=~s/multicast/unicast/g;
- $hash{'unicast_link'} .= $unicast_link;
- }
- $hash{'description'} .= $streams{$name}->{description} if exists($streams{$name}->{description});
- push(@s, \%hash);
+ my $vlc_link = sprintf($vlc_url, $multicast, $streams{$name}->{interlaced});
+ my $href_link = '<a class="stream-link-content" href="#" onclick="swapVideo(\'' . $name . '\');">';
+ my %hash = (
+ 'href' => $href_link,
+ 'title' => $streams{$name}->{title},
+ 'quality' => $streams{$name}->{quality},
+ 'type' => $streams{$name}->{type},
+ 'vlc_link' => $vlc_link,
+ );
+ push(@s, \%hash);
+ }
}
return @s;
}
diff --git a/web/stream.gathering.org/embed.tmpl b/web/stream.gathering.org/embed.tmpl
index 6b9581b..ef3e11b 100644
--- a/web/stream.gathering.org/embed.tmpl
+++ b/web/stream.gathering.org/embed.tmpl
@@ -1,39 +1,53 @@
-<html>
-<head>
- <title>The Gathering <TMPL_VAR NAME=TG_FULL> Streams</title>
- <link rel="stylesheet" type="text/css" href="pre-tg15/style.css" media="all">
- <script type="text/javascript" src="pre-tg15/jwplayer.js"></script>
-</head>
-<body>
- <div id="innhold">
- <TMPL_UNLESS NAME=NOHEADER>
- <h1>The Gathering <TMPL_VAR NAME=TG_FULL> Streams</h1>
- <embed type="application/x-shockwave-flash" src="pre-tg15/player.swf"
- width="800" height="450" style="undefined" id="mplf" name="mplf" quality="high"
- allowfullscreen="true" allowscriptaccess="always" wmode="opaque"
- stretching="exactfit"
- flashvars="stretching=exactfit&amp;file=http://wat.gathering.org:9094/southcam.flv&amp;autostart=true"></embed>
- <p>&nbsp;</p>
- </TMPL_UNLESS>
-
- <TMPL_LOOP NAME="STREAMS">
- <div class="stream-link">
- <div class="stream-icon"><img src="img/icon_<TMPL_VAR NAME=QUALITY>.png" /> <img src="img/icon_<TMPL_VAR NAME=TYPE>.png" /> <TMPL_IF NAME=LOCATION><img src="img/icon_<TMPL_VAR NAME=LOCATION>.png"></TMPL_IF></div>
- <div class="stream-link-content">
- <a href="<TMPL_VAR NAME=TITLE_LINK>"><TMPL_VAR NAME=TITLE></a><br>
- Source: <TMPL_VAR NAME=SOURCE><br>
- Delivery: <TMPL_VAR NAME=delivery> <TMPL_IF NAME=IS_MULTICAST>(<a href='<TMPL_VAR NAME=UNICAST_LINK>'>problems? try unicast vlc link here</a>)</TMPL_IF>
-
- </div>
- </div>
- </TMPL_LOOP>
- </div>
-
-
- <p>Problems with the non game streams? The easiest way to get a hold of us is on IRC (EFNet); Either of ViD or DoXiD should be available if there's too much traffic on #tg to be heard.</p>
- <p><a target="_blank" href="http://stream.tg<TMPL_VAR NAME="TG">.gathering.org">http://stream.tg<TMPL_VAR NAME="TG">.gathering.org</a></p>
-
-</body>
-</html>
-
-
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <title>The Gathering <TMPL_VAR NAME=TG_FULL> Streams</title>
+ <script src="//code.jquery.com/jquery-1.11.2.min.js"></script>
+ <link href="//vjs.zencdn.net/5.8/video-js.min.css" rel="stylesheet">
+ <script type="text/javascript" src="https://www.gstatic.com/cv/js/sender/v1/cast_sender.js"></script>
+ <link rel="stylesheet" type="text/css" href="//fonts.googleapis.com/css?family=Droid+Sans" />
+ <style>
+
+body {
+ margin: 0;
+}
+
+.video-js {
+ padding-bottom: 55%; /* video dimensions - height/width */
+ height: 100%;
+ width: 100%;
+}
+ </style>
+</head>
+<body>
+<div class="losvideos">
+ <TMPL_UNLESS NAME=NOHEADER>
+ <video id="stream" class="videoframe video-js vjs-default-skin" controls preload="auto" poster="/resources/images/loading.png" data-setup='{ "autoplay" : true }'>
+ <TMPL_IF NAME=VIDEO_URL_MP4><source src="<TMPL_VAR NAME=VIDEO_URL_MP4>" id="videodata" type="video/mp4"></TMPL_IF>
+ <source src="<TMPL_VAR NAME=VIDEO_URL_MAIN>" id="videodata" type="video/flv">
+ <source src="<TMPL_VAR NAME=VIDEO_URL_FALLBACK>" id="videodata" type="application/x-mpegURL">
+ <p class="vjs-no-js">
+ To view this video please enable JavaScript, and consider upgrading to a web browser that <a href="http://videojs.com/html5-video-support/" target="_blank">supports HTML5 video</a>
+ </p>
+ </video>
+ </TMPL_UNLESS>
+</div>
+<script src="//vjs.zencdn.net/5.8/video.js"></script>
+<script src="./resources/js/videojs-contrib-hls.js"></script>
+<script>
+
+var techOrder = ["html5", "flash"];
+if (navigator.userAgent.match(/Trident|Edge/)) {
+ techOrder = ["flash", "html5"];
+}
+
+var player = videojs('stream', {
+ techOrder: techOrder
+});
+player.play();
+</script>
+</body>
+</html>
+
+
diff --git a/web/stream.gathering.org/event.vlc b/web/stream.gathering.org/event.vlc
deleted file mode 100644
index a1c2780..0000000
--- a/web/stream.gathering.org/event.vlc
+++ /dev/null
@@ -1,3 +0,0 @@
-#EXTM3U
-#EXTINF:-1,TG15 Unicasted Event HD (720p50 H.264) 6Mbit/s
-http://cubemap.tg15.gathering.org/event.ts
diff --git a/web/stream.gathering.org/generate_vlc.pl b/web/stream.gathering.org/generate_vlc.pl
index 178973d..5252ec4 100755
--- a/web/stream.gathering.org/generate_vlc.pl
+++ b/web/stream.gathering.org/generate_vlc.pl
@@ -51,8 +51,8 @@ if (exists($streams{$stream})) {
} else {
#$port_del = 80;
$extinf .= "Unicasted";
- $url = $base_url;
- $url_path = $streams{$stream}->{url};
+ $url = $base_url;
+ $url_path = $streams{$stream}->{main_url};
if($streams{$stream}->{ts_enabled} eq 1) {
$url_path =~ s/.flv/.ts/;
}
diff --git a/web/stream.gathering.org/index.pl b/web/stream.gathering.org/index.pl
index cc83454..9edcc20 100755
--- a/web/stream.gathering.org/index.pl
+++ b/web/stream.gathering.org/index.pl
@@ -1,4 +1,4 @@
-#!/usr/bin/perl -I /root/tgmanage/web/stream.gathering.org/streamlib
+#!/usr/bin/perl -I /root/tgmanage/web/stream.gathering.org/streamlib/
use warnings;
use strict;
use CGI;
@@ -11,15 +11,20 @@ use HTML::Template;
# apt-get install libhtml-template-perl
use stream;
use stream::config;
-use MIME::Base64;
+#use MIME::Base64;
+use URI::Escape;
my $client = CGI->new;
-
+my $video_url_mp4;
my $v4net = $stream::config::v4net;
my $v6net = $stream::config::v6net;
my $tg = $stream::config::tg;
my $tg_full = $stream::config::tg_full;
my $video_url = $stream::config::video_url;
+my $video_url_fallback = $stream::config::video_url_fallback;
+if($stream::config::video_url_mp4) {
+$video_url_mp4 = $stream::config::video_url_mp4;
+}
my %streams = %stream::config::streams;
my $force_unicast = $client->param('forceunicast');
@@ -47,16 +52,30 @@ $template->param(STREAMS => \@streams);
$template->param(CAMSTREAMS => \@camstreams);
$template->param(NOHEADER => $no_header);
if(exists $input{url}) {
- my $decodedUrl = decode_base64($input{url});
- # Check against XS-scripting:
- if (index($decodedUrl, 'cubemap.tg15.gathering.org/') != -1) {
- $template->param(VIDEO_URL => $decodedUrl);
- } else {
- $template->param(VIDEO_URL => $video_url);
+ my $url = uri_unescape($input{url});
+
+ if ($url ~~ %streams) {
+ $template->param(VIDEO_URL_MAIN => $streams{$url}->{main_url});
+ $template->param(VIDEO_URL_FALLBACK => $streams{$url}->{fallback_url});
+ if($streams{$url}->{mp4_url}) {
+ $template->param(VIDEO_URL_MP4 => $streams{$url}->{mp4_url});
+ }
}
+ # Check against XS-scripting:
+ #if (index($decodedUrl, 'cubemap.tg16.gathering.org/') != -1) {
+ # $template->param(VIDEO_URL => $decodedUrl);
+ #} elsif (index($decodedUrl, 'stream.tg16.gathering.org/') != -1) {
+ # $template->param(VIDEO_URL => $decodedUrl);
+ #} else {
+ # $template->param(VIDEO_URL => $video_url);
+ #}
$template->param(VIDEO_AUTO_PLAY => 'true');
} else {
- $template->param(VIDEO_URL => $video_url);
+ $template->param(VIDEO_URL_MAIN => $video_url);
+ $template->param(VIDEO_URL_FALLBACK => $video_url_fallback);
+ if($video_url_mp4) {
+ $template->param(VIDEO_URL_MP4 => $video_url_mp4);
+ }
$template->param(VIDEO_AUTO_PLAY => 'false');
}
print $template->output();
@@ -71,7 +90,7 @@ sub loop_webcams() {
$multicast = "unicast" if (defined $force_unicast && $force_unicast == 1 || not $is_local);
my $vlc_link = sprintf($vlc_url, $multicast, $streams{$name}->{interlaced});
- my $href_link = '<a class="stream-link-content" href="#" onclick="swapVideo(\'' . $streams{$name}->{url} . '\');">';
+ my $href_link = '<a class="stream-link-content" href="#" onclick="swapVideo(\'' . $name . '\');">';
my %hash = (
'href' => $href_link,
diff --git a/web/stream.gathering.org/index.tmpl b/web/stream.gathering.org/index.tmpl
index e1e6a2f..eca7070 100644
--- a/web/stream.gathering.org/index.tmpl
+++ b/web/stream.gathering.org/index.tmpl
@@ -6,15 +6,14 @@
<!-- Mobile specific
---------------------->
- <meta name="viewport" content="width=device-width, initial-scale=1">
+ <meta name="viewport" content="width=device-width, initial-scale=0.35">
<!-- CSS specifics
-------------------->
- <link rel="stylesheet" href="/resources/css/normalize.css">
- <link rel="stylesheet" href="/resources/css/skeleton.css">
- <link rel="stylesheet" href="/resources/css/core.css">
- <link rel="stylesheet" href="/resources/css/button-styles.css">
- <link rel="stylesheet" href="/resources/css/video-js.css">
+ <link rel="stylesheet" href="./resources/css/normalize.css">
+ <link rel="stylesheet" href="./resources/css/skeleton.css">
+ <link rel="stylesheet" href="./resources/css/core.css">
+ <link rel="stylesheet" href="./resources/css/button-styles.css">
<style type="text/css">
.vjs-big-play-button {
@@ -28,14 +27,13 @@
<!-- JavaScript specifics
---------------------------->
- <script type="text/javascript" src="/resources/js/jwplayer.js"></script>
- <script type="text/javascript" src="/resources/js/video.js"></script>
- <script type="text/javascript" src="/resources/js/video-quality-selector.js"></script>
<script src="//code.jquery.com/jquery-1.11.2.min.js"></script>
+ <link href="//vjs.zencdn.net/5.8/video-js.min.css" rel="stylesheet">
+ <script type="text/javascript" src="//www.gstatic.com/cv/js/sender/v1/cast_sender.js"></script>
<script type="text/javascript">
function swapVideo (url) {
- window.location = '/?url=' + window.btoa(url);
+ window.location = '/?url=' + encodeURIComponent(url);//window.btoa(url);
}
var _float = true;
@@ -78,7 +76,7 @@
right: 0px;
width: 531px;
height: 396px;
- background-image: url('/resources/images/pixel-white.png');
+ //background-image: url('/resources/images/floater.svg');
background-size: cover;
}
@@ -94,26 +92,21 @@
}
</style>
+<!-- creative, event och game -->
</head>
<body>
<div id="header">
- <h1>The Gathering <TMPL_VAR NAME=TG_FULL> Streams</h1>
- </div>
- <div id="floater">
-
- </div>
- <div id="bubble">
- <div class="bubble">
- If you hate me, click me!
- </div>
+ <img src="resources/images/thegathering.png" width="400">
</div>
<div class="section">
<div class="container">
<div class="row">
<div class="twelve columns">
<TMPL_UNLESS NAME=NOHEADER>
- <video id="stream" class="videoframe video-js vjs-default-skin" controls preload="auto" poster="/resources/images/loading.png" data-setup='{ "autoplay": <TMPL_VAR NAME=VIDEO_AUTO_PLAY>, "plugins" : { "resolutionSelector" : { "default_res" : "720", "force_typesz" : [ "video/flv" ] } } }'>
- <source src="<TMPL_VAR NAME=VIDEO_URL>" id="videodata" type="video/flv" data-res="720">
+ <video id="stream" class="videoframe video-js vjs-default-skin" controls preload="auto" poster="/resources/images/loading.png" data-setup='{ "autoplay" : <TMPL_VAR NAME=VIDEO_AUTO_PLAY>, "techOrder": ["flash", "html5"]}'>
+ <source src="<TMPL_VAR NAME=VIDEO_URL_MAIN>" id="videodata" type="video/flv" data-res="720">
+ <TMPL_IF NAME=VIDEO_URL_MP4><source src="<TMPL_VAR NAME=VIDEO_URL_MP4>" id="videodata" type="video/mp4" data-res="720"></TMPL_IF>
+ <source src="<TMPL_VAR NAME=VIDEO_URL_FALLBACK>" id="videodata" type="application/x-mpegURL" data-res="720">
<p class="vjs-no-js">
To view this video please enable JavaScript, and consider upgrading to a web browser that <a href="http://videojs.com/html5-video-support/" target="_blank">supports HTML5 video</a>
</p>
@@ -158,6 +151,80 @@
</div>
</div>
+
+<script src="//vjs.zencdn.net/5.8/video.js"></script>
+<script src="./resources/js/videojs-contrib-hls.js"></script>
+<script>
+
+// GOOGLE CAST
+
+var current_media;
+var session;
+
+function show_castposter() {
+ stop_loader();
+ castposter.style.display = 'block';
+ loader.style.display = 'none';
+ video.style.display = 'none';
+}
+
+function hide_castposter() {
+ castposter.style.display = 'none';
+ loader.style.display = 'none';
+ video.style.display = 'inline';
+}
+
+function stop_casting() {
+ hide_castposter();
+ if (current_media) {
+ var media = current_media;
+ current_media = null;
+ media.stop();
+ }
+ if (session) {
+ session.stop();
+ session = null;
+ }
+}
+
+function cast_current_video() {
+ if (session === undefined || selected_stream === undefined) {
+ return;
+ }
+ var title = streams[selected_stream].name;
+ var url = streams[selected_stream].url;
+ document.getElementById('casttarget').textContent = session.receiver.friendlyName;
+ show_castposter();
+ video.pause();
+ // If we are already casting this, do nothing.
+ if (current_media && current_media.media.contentId === url) {
+ console.log("Already casting " + url + " to " + session.receiver.friendlyName + " (" + current_media.playerState + ")");
+ return;
+ }
+ if (current_media) {
+ current_media = null; // Signal to on_media_status_update.
+ }
+ var media_info = new chrome.cast.media.MediaInfo(url, "video/mp4");
+ media_info.metadata = new chrome.cast.media.GenericMediaMetadata();
+ media_info.metadata.title = global_title; // + ': ' + title;
+ var request = new chrome.cast.media.LoadRequest(media_info);
+ session.loadMedia(request,
+ on_media_discovered.bind(this, 'loadMedia'),
+ on_media_error);
+}
+
+var techOrder = ["html5", "flash"];
+if (navigator.userAgent.match(/Trident|Edge|OPR/)) {
+ console.log("hit!");
+ techOrder = ["flash", "html5"];
+ //var video = document.getElementById('video');
+ //video.src = "http://bleh";
+}
+var player = videojs('stream', {
+ techOrder: techOrder
+});
+player.play();
+</script>
</body>
</html>
diff --git a/web/stream.gathering.org/noccam.vlc b/web/stream.gathering.org/noccam.vlc
deleted file mode 100644
index e1bbf42..0000000
--- a/web/stream.gathering.org/noccam.vlc
+++ /dev/null
@@ -1,3 +0,0 @@
-#EXTM3U
-#EXTINF:-1,TG15 Unicasted NOC Webcam HD (720p H.264) 3Mbit/s
-http://cubemap.tg15.gathering.org/noccam.flv
diff --git a/web/stream.gathering.org/resources/css/core.css b/web/stream.gathering.org/resources/css/core.css
index 536cb89..e4bc7c2 100644
--- a/web/stream.gathering.org/resources/css/core.css
+++ b/web/stream.gathering.org/resources/css/core.css
@@ -1,5 +1,5 @@
body {
- background-color: rgb(32, 32, 64);
+ background-color: rgb(54, 54, 54);
color: #FFFFFF;
}
@@ -65,9 +65,9 @@ body {
padding-top: 150px;
}
-.videoframe {
- left: 50%;
-}
+/*.videoframe {*/
+/* left: 50%;*/
+/*}*/
.section {
padding: 8rem 0 7rem;
@@ -100,6 +100,10 @@ body {
border: 1px solid #000000;
}
+.vjs-poster {
+ background-size: cover !important;
+}
+
.footer {
text-align: center;
padding-top: 50px;
@@ -164,11 +168,11 @@ body {
min-width: 320px;
min-height: 183px;
}
- .videoframe {
+ /*.videoframe {
margin-left: -160px;
- }
- .videoframe:-webkit-full-screen { margin-left: 0px; }
- .videoframe:-moz-full-screen { margin-left: 0px; }
+ }*/
+ /*.videoframe:-webkit-full-screen { margin-left: 0px; }
+ .videoframe:-moz-full-screen { margin-left: 0px; }*/
}
/* Bigger than 920 */
@@ -188,11 +192,13 @@ body {
min-width: 500px;
min-height: 280px;
}
+ /*
.videoframe {
- margin-left: -250px;
+ margin-left: -490px;
}
.videoframe:-webkit-full-screen { margin-left: 0px; }
.videoframe:-moz-full-screen { margin-left: 0px; }
+*/
}
/* Bigger than 1200 */
@@ -210,11 +216,13 @@ body {
min-width: 700px;
min-height: 393px;
}
+/*
.videoframe {
margin-left: -350px;
}
.videoframe:-webkit-full-screen { margin-left: 0px; }
.videoframe:-moz-full-screen { margin-left: 0px; }
+*/
}
/* Bigger than 1600 */
@@ -234,9 +242,11 @@ body {
height: 540px;
min-height: 540px;
}
+/*
.videoframe {
margin-left: -480px;
}
.videoframe:-webkit-full-screen { margin-left: 0px; }
.videoframe:-moz-full-screen { margin-left: 0px; }
-} \ No newline at end of file
+*/
+}
diff --git a/web/stream.gathering.org/southcam.vlc b/web/stream.gathering.org/southcam.vlc
deleted file mode 100644
index e20970c..0000000
--- a/web/stream.gathering.org/southcam.vlc
+++ /dev/null
@@ -1,3 +0,0 @@
-#EXTM3U
-#EXTINF:-1,TG15 Unicasted South Webcam HD (720p H.264) 3Mbit/s
-http://cubemap.tg15.gathering.org/southcam.flv
diff --git a/web/stream.gathering.org/streamlib/stream/config.pm b/web/stream.gathering.org/streamlib/stream/config.pm
index 1c968da..c07d783 100644
--- a/web/stream.gathering.org/streamlib/stream/config.pm
+++ b/web/stream.gathering.org/streamlib/stream/config.pm
@@ -6,9 +6,11 @@ use NetAddr::IP;
our $v4net = NetAddr::IP->new("151.216.128.0/17");
our $v6net = NetAddr::IP->new("2a02:ed02::/32");
our $multicast = "udp://\@233.191.12.1";
-our $video_url = "http://cubemap.tg15.gathering.org/creativia.flv";
-our $tg = 15;
-our $tg_full = 2015;
+our $video_url = "http://cubemap.tg16.gathering.org/event.flv";
+our $video_url_mp4 = "http://cubemap.tg16.gathering.org/event.mp4";
+our $video_url_fallback = "http://stream.tg16.gathering.org/hls/event.m3u8";
+our $tg = 16;
+our $tg_full = 2016;
# priority = sorting order in streaming list
@@ -23,7 +25,7 @@ our %streams = (
'quality' => 'hd',
'priority' => 20,
'port' => 80,
- 'url' => 'http://cubemap.tg15.gathering.org/event.flv',
+ 'main_url' => 'http://cubemap.tg15.gathering.org/event.flv',
'ts_enabled' => 1,
'online' => 0,
'external' => 1,
@@ -38,9 +40,9 @@ our %streams = (
'quality' => 'hd',
'priority' => 100,
'port' => 80,
- 'url' => 'http://cubemap.tg15.gathering.org/creativia.flv',
+ 'main_url' => 'http://cubemap.tg15.gathering.org/creativia.flv',
'ts_enabled' => 1,
- 'online' => 1,
+ 'online' => 0,
'external' => 1,
'interlaced' => 0,
'has_multicast' => 0,
@@ -53,7 +55,7 @@ our %streams = (
'quality' => 'hd',
'priority' => 110,
'port' => 80,
- 'url' => 'http://cubemap.tg15.gathering.org/game.flv',
+ 'main_url' => 'http://cubemap.tg15.gathering.org/game.flv',
'ts_enabled' => 1,
'online' => 0,
'external' => 1,
@@ -63,26 +65,13 @@ our %streams = (
'source' => 'Event',
'title' => 'Game HD (720p50 H.264) 6Mbit/s'
},
-
-# 'creativia-hd' => {
-# 'type' => 'event',
-# 'quality' => 'hd',
-# 'priority' => 150,
-# 'port' => 5004,
-# 'url' => '/creativia-lounge.ts',
-# 'interlaced' => 0,
-# 'has_multicast' => 0,
-# 'multicast_ip' => 'udp://@[ff7e:a40:2a02:ed02:ffff::15]:2015',
-# 'source' => 'Tech',
-# 'title' => 'Creativia Lounge HD (720p50)'
-# },
'event-sd' => {
'type' => 'event',
'quality' => 'sd',
'priority' => 24,
'port' => 80,
'online' => 0,
- 'url' => '/event-sd.ts',
+ 'main_url' => '/event-sd.ts',
'interlaced' => 0,
'has_multicast' => 0,
'multicast_ip' => 'udp://@[ff7e:a40:2a02:ed02:ffff::14]',
@@ -95,7 +84,7 @@ our %streams = (
'priority' => 25,
'port' => 80,
'online' => 0,
- 'url' => '/event-superlow.ts',
+ 'main_url' => '/event-superlow.ts',
'interlaced' => 0,
'has_multicast' => 0,
'multicast_ip' => 'udp://@[ff7e:a40:2a02:ed02:ffff::16]',
@@ -108,56 +97,111 @@ our %streams = (
# 'priority' => 25,
# 'interlaced' => 0,
# 'external' => 1,
-# 'url' => 'http://www.gathering.org/tg13/no/live-tv/',
+# 'main_url' => 'http://www.gathering.org/tg13/no/live-tv/',
# 'source' => 'Event',
# 'title' => 'Event SD (gathering.org flash player)',
# },
- 'south-raw' => {
+ 'roofcam-raw' => {
'type' => 'camera',
'quality' => 'hd',
- 'priority' => 40,
- 'url' => "http://cubemap.tg15.gathering.org/southcam.flv", # <-- In use (Need to rebuild row 67 in index.pl)
+ 'priority' => 118,
+ 'main_url' => "/roofcam.ts",
'port' => 80,
'ts_enabled' => 0,
- 'interlaced' => 0,
+ 'interlaced' => 1,
+ 'online' => 0,
'has_multicast' => 0,
- 'external' => 1, # <-- In use (Need to rebuild row 67 in index.pl)
- 'online' => 1,
-# 'multicast_ip' => "udp://@[ff7e:a40:2a02:ed02:ffff::16]",
+ #'multicast_ip' => "udp://\@[ff7e:a40:2a02:ed02:ffff::15]",
'source' => 'Tech',
- 'title' => "Webcam South (HD) (720p H.264) 3Mbit/s",
+ 'title' => 'Webcam Roof (HD) (1536x1536 H.264) 8mbps',
},
- 'roofcam-raw' => {
+ 'south-raw' => {
'type' => 'camera',
'quality' => 'hd',
- 'priority' => 118,
- 'url' => "/roofcam.ts",
+ 'priority' => 40,
+ 'main_url' => "http://cubemap.tg16.gathering.org/southcam.flv", # <-- In use (Need to rebuild row 67 in index.pl)
+ 'fallback_url' => 'http://stream.tg16.gathering.org/hls/southcam.m3u8',
'port' => 80,
- 'ts_enabled' => 0,
- 'interlaced' => 1,
- 'online' => 0,
+ 'ts_enabled' => 1,
+ 'interlaced' => 0,
'has_multicast' => 0,
- #'multicast_ip' => "udp://\@[ff7e:a40:2a02:ed02:ffff::15]",
+ 'external' => 1, # <-- In use (Need to rebuild row 67 in index.pl)
+ 'online' => 1,
+# 'multicast_ip' => "udp://@[ff7e:a40:2a02:ed02:ffff::16]",
'source' => 'Tech',
- 'title' => 'Webcam Roof (HD) (1536x1536 H.264) 8mbps',
+ 'title' => "Webcam South (720p H.264 6Mbit/s)",
},
'noccam-raw' => {
'type' => 'camera',
'quality' => 'hd',
'priority' => 130,
- 'url' => 'http://cubemap.tg15.gathering.org/noccam.flv',
+ 'main_url' => 'http://cubemap.tg16.gathering.org/noccam.flv',
+ 'fallback_url' => 'http://stream.tg16.gathering.org/hls/noccam.m3u8',
'port' => 80, # <-- Safe to remove
'external' => 1,
+ 'ts_enabled' => 1,
'has_multicast' => 0, # <-- Safe to remove
'interlaced' => 0, # <-- Safe to remove
'online' => 1,
'multicast_ip' => "udp://@[ff7e:a40:2a02:ed02:ffff::18]:2018",# <-- Safe to remove
'source' => "Tech", # <-- Safe to remove
- 'title' => "Webcam NOC (HD) (720p H.264) 3Mbit/s"
+ 'title' => "Webcam NOC (720p H.264 6Mbit/s)"
},
-);
+ 'Event' => {
+ 'type' => 'event',
+ 'quality' => 'hd',
+ 'priority' => 12,
+ 'main_url' => 'http://cubemap.tg16.gathering.org/event.flv',
+ 'mp4_url' => 'http://cubemap.tg16.gathering.org/event.mp4',
+ 'fallback_url' => 'http://stream.tg16.gathering.org/hls/event.m3u8',
+ 'port' => 80,
+ 'ts_enabled' => 1,
+ 'interlaced' => 0,
+ 'has_multicast' => 0,
+ 'external' => 1, # <-- In use (Need to rebuild row 67 in index.pl)
+ 'online' => 1,
+# 'multicast_ip' => "udp://@[ff7e:a40:2a02:ed02:ffff::16]",
+ 'source' => 'Tech',
+ 'title' => "Event/Stage (720p H.264 6Mbit/s)",
+ },
+
+ 'Game' => {
+ 'type' => 'event',
+ 'quality' => 'hd',
+ 'priority' => 13,
+ 'main_url' => 'http://cubemap.tg16.gathering.org/game.flv',
+ 'fallback_url' => 'http://stream.tg16.gathering.org/hls/game.m3u8',
+ 'port' => 80,
+ 'ts_enabled' => 1,
+ 'interlaced' => 0,
+ 'has_multicast' => 0,
+ 'external' => 1, # <-- In use (Need to rebuild row 67 in index.pl)
+ 'online' => 0,
+# 'multicast_ip' => "udp://@[ff7e:a40:2a02:ed02:ffff::16]",
+ 'source' => 'Tech',
+ 'title' => "Game (720p H.264 6Mbit/s)",
+ },
+
+ 'Creative' => {
+ 'type' => 'event',
+ 'quality' => 'hd',
+ 'priority' => 14,
+ 'main_url' => 'http://cubemap.tg16.gathering.org/creativia.flv',
+ 'fallback_url' => 'http://stream.tg16.gathering.org/hls/creativia.m3u8',
+ 'port' => 80,
+ 'ts_enabled' => 1,
+ 'interlaced' => 0,
+ 'has_multicast' => 0,
+ 'external' => 1, # <-- In use (Need to rebuild row 67 in index.pl)
+ 'online' => 1,
+# 'multicast_ip' => "udp://@[ff7e:a40:2a02:ed02:ffff::16]",
+ 'source' => 'Tech',
+ 'title' => "Creative (720p H.264 6Mbit/s)",
+ }
+
+);
1;