diff --git a/build-player.js b/build-player.js new file mode 100644 index 00000000..4512f3b3 --- /dev/null +++ b/build-player.js @@ -0,0 +1,29 @@ +var coffee = require('coffee-script'); +var fs = require('fs'); +var path = require('path'); + +var order = [ + 'base.coffee', + 'vimeo.coffee', + 'youtube.coffee', + 'dailymotion.coffee', + 'videojs.coffee', + 'raw-file.coffee', + 'soundcloud.coffee', + 'livestream.com.coffee', + 'twitch.coffee', + 'embed.coffee', + 'custom-embed.coffee', + 'rtmp.coffee', + 'hitbox.coffee', + 'ustream.coffee', + 'imgur.coffee', + 'update.coffee' +]; + +var buffer = ''; +order.forEach(function (file) { + buffer += fs.readFileSync(path.join('player', file)) + '\n'; +}); + +fs.writeFileSync(path.join('www', 'js', 'player.js'), coffee.compile(buffer)); diff --git a/player/raw-file.coffee b/player/raw-file.coffee new file mode 100644 index 00000000..f16f9735 --- /dev/null +++ b/player/raw-file.coffee @@ -0,0 +1,27 @@ +guessMimeTypeBecauseBrowsersAreDumb = (link) -> + m = /.*\.([a-zA-Z0-9]+)[^.]*$/.exec(link) + if m + return m[1] + else + # Couldn't guess mime type; give up and hope flash can play it + return 'flv' + +window.FilePlayer = class FilePlayer extends VideoJSPlayer + constructor: (data) -> + if not (this instanceof FilePlayer) + return new FilePlayer(data) + + data.meta.direct = + 480: [{ + contentType: guessMimeTypeBecauseBrowsersAreDumb(data.id) + link: data.id + }] + super(data) + + load: (data) -> + data.meta.direct = + 480: [{ + contentType: guessMimeTypeBecauseBrowsersAreDumb(data.id) + link: data.id + }] + super(data) diff --git a/player/update.coffee b/player/update.coffee index 8550bdb0..eda70405 100644 --- a/player/update.coffee +++ b/player/update.coffee @@ -4,6 +4,8 @@ TYPE_MAP = dm: DailymotionPlayer gd: VideoJSPlayer gp: VideoJSPlayer + fi: FilePlayer + jw: FilePlayer sc: SoundCloudPlayer li: LivestreamPlayer tw: TwitchPlayer diff --git a/player/videojs.coffee b/player/videojs.coffee index 913506cf..f2edb53d 100644 --- a/player/videojs.coffee +++ b/player/videojs.coffee @@ -32,6 +32,10 @@ sortSources = (sources) -> quality: source.quality ) +waitUntilDefined(window, 'videojs', => + videojs.options.flash.swf = '/video-js.swf' +) + window.VideoJSPlayer = class VideoJSPlayer extends Player constructor: (data) -> if not (this instanceof VideoJSPlayer) diff --git a/templates/channel.jade b/templates/channel.jade index b9f4800f..f95799a1 100644 --- a/templates/channel.jade +++ b/templates/channel.jade @@ -4,7 +4,7 @@ html(lang="en") include head mixin head() link(href="//code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css", rel="stylesheet") - link(rel="stylesheet", href="https://vjs.zencdn.net/4.12/video-js.css") + link(rel="stylesheet", href="/css/video-js.css") body #wrap nav.navbar.navbar-inverse.navbar-fixed-top(role="navigation") @@ -219,14 +219,12 @@ html(lang="en") script(src="/js/data.js") script(src="/sioconfig") script(src="/js/util.js") - script(src="/js/player-new.js") + script(src="/js/player.js") script(src="/js/paginator.js") script(src="/js/ui.js") script(src="/js/callbacks.js") script(defer, src="https://www.youtube.com/iframe_api") - script(defer, src="//api.dmcdn.net/all.js") - script(defer, src="//jwpsrv.com/library/QouFCLBMEeKC+CIACpYGxA.js") + script(defer, src="https://api.dmcdn.net/all.js") script(defer, src="/js/sc.js") script(defer, src="/js/froogaloop.min.js") - script(defer, src="/js/swf.js") - script(defer, src="https://vjs.zencdn.net/4.12/video.js") + script(defer, src="/js/video.js") diff --git a/www/css/font/vjs.eot b/www/css/font/vjs.eot new file mode 100644 index 00000000..a2c0f5f2 Binary files /dev/null and b/www/css/font/vjs.eot differ diff --git a/www/css/font/vjs.svg b/www/css/font/vjs.svg new file mode 100644 index 00000000..fa6aa7b5 --- /dev/null +++ b/www/css/font/vjs.svg @@ -0,0 +1,28 @@ + + + +Generated by IcoMoon + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/www/css/font/vjs.ttf b/www/css/font/vjs.ttf new file mode 100644 index 00000000..682a9b21 Binary files /dev/null and b/www/css/font/vjs.ttf differ diff --git a/www/css/font/vjs.woff b/www/css/font/vjs.woff new file mode 100644 index 00000000..a79d0fa0 Binary files /dev/null and b/www/css/font/vjs.woff differ diff --git a/www/css/video-js.css b/www/css/video-js.css new file mode 100644 index 00000000..97113b50 --- /dev/null +++ b/www/css/video-js.css @@ -0,0 +1,1011 @@ +/*! +Video.js Default Styles (http://videojs.com) +Version 4.12.7 +Create your own skin at http://designer.videojs.com +*/ +/* SKIN +================================================================================ +The main class name for all skin-specific styles. To make your own skin, +replace all occurrences of 'vjs-default-skin' with a new name. Then add your new +skin name to your video tag instead of the default skin. +e.g.