diff options
Diffstat (limited to 'web')
-rw-r--r-- | web/etc/nginx/default.conf | 10 | ||||
-rwxr-xr-x | web/stream.gathering.org/embed.pl | 90 | ||||
-rw-r--r-- | web/stream.gathering.org/embed.tmpl | 92 | ||||
-rw-r--r-- | web/stream.gathering.org/event.vlc | 3 | ||||
-rwxr-xr-x | web/stream.gathering.org/generate_vlc.pl | 4 | ||||
-rwxr-xr-x | web/stream.gathering.org/index.pl | 41 | ||||
-rw-r--r-- | web/stream.gathering.org/index.tmpl | 111 | ||||
-rw-r--r-- | web/stream.gathering.org/noccam.vlc | 3 | ||||
-rw-r--r-- | web/stream.gathering.org/resources/css/core.css | 30 | ||||
-rw-r--r-- | web/stream.gathering.org/southcam.vlc | 3 | ||||
-rw-r--r-- | web/stream.gathering.org/streamlib/stream/config.pm | 128 |
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&file=http://wat.gathering.org:9094/southcam.flv&autostart=true"></embed> - <p> </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; |