From aff20c3012fc25d8167a26f6abfcc7240815cbbe Mon Sep 17 00:00:00 2001 From: calzoneman Date: Mon, 18 Aug 2014 12:00:26 -0500 Subject: [PATCH] Use JWPlayer as flash fallback because it can actually synch --- templates/useroptions.jade | 4 -- www/js/callbacks.js | 11 ---- www/js/data.js | 14 ----- www/js/player.js | 118 +++---------------------------------- www/js/util.js | 7 --- 5 files changed, 7 insertions(+), 147 deletions(-) diff --git a/templates/useroptions.jade b/templates/useroptions.jade index c91b4e3a..c2258bca 100644 --- a/templates/useroptions.jade +++ b/templates/useroptions.jade @@ -73,10 +73,6 @@ mixin us-playback .col-sm-4 .col-sm-8 p.text-info Setting wmode=transparent allows objects to be displayed above the video player, but may cause performance issues on some systems. - mixin rcheckbox("us-no-h264", "Use flash for h.264 playback") - .col-sm-4 - .col-sm-8 - p.text-info CyTube will attempt to autodetect browsers that do not natively support h.264 playback and fall back on a flash player. This overrides that automatic detection and forces use of the flash player. mixin rcheckbox("us-hidevideo", "Remove the video player") mixin rcheckbox("us-playlistbuttons", "Hide playlist buttons by default") mixin rcheckbox("us-oldbtns", "Old style playlist buttons") diff --git a/www/js/callbacks.js b/www/js/callbacks.js index 98e11467..e9608a1c 100644 --- a/www/js/callbacks.js +++ b/www/js/callbacks.js @@ -867,10 +867,6 @@ Callbacks = { } if (data.type === "fi") { - if (USEROPTS.no_h264 && data.meta.codec === "mov/h264") { - data.forceFlash = true; - } - data.url = data.id; } @@ -885,13 +881,6 @@ Callbacks = { data = googlePlusSimulator2014(data); } - /* RTMP player has been replaced with the general flash player */ - if (data.type === "rt") { - data.url = data.id; - data.type = "fi"; - data.forceFlash = true; - } - if (data.type != PLAYER.type) { loadMediaPlayer(data); } diff --git a/www/js/data.js b/www/js/data.js index 1885ff62..21084f32 100644 --- a/www/js/data.js +++ b/www/js/data.js @@ -103,19 +103,6 @@ function getOrDefault(k, def) { return v; } -function default_noh264() { - var ua = navigator.userAgent + ""; - if (ua.match(/Chrome|Chromium/)) { - return false; - } else if (ua.match(/Firefox/)) { - var version = ua.match(/Firefox\/(\d+)/)[1]; - version = parseInt(version); - return version >= 29; - } else { - return true; - } -} - var USEROPTS = { theme : getOrDefault("theme", "/css/themes/slate.css"), layout : getOrDefault("layout", "fluid"), @@ -139,7 +126,6 @@ var USEROPTS = { default_quality : getOrDefault("default_quality", ""), boop : getOrDefault("boop", "never"), secure_connection : getOrDefault("secure_connection", false), - no_h264 : getOrDefault("no_h264", default_noh264()), show_shadowchat : getOrDefault("show_shadowchat", false) }; diff --git a/www/js/player.js b/www/js/player.js index 23bee7a5..75b4de01 100644 --- a/www/js/player.js +++ b/www/js/player.js @@ -687,34 +687,6 @@ var RTMPPlayer = function (data) { }); }; -function flashEventHandler(id, ev, data) { - switch (ev) { - case "timeupdate": - PLAYER.currentTime = data.currentTime; - break; - case "pause": - PLAYER.paused = data.paused; - if (CLIENT.leader) - sendVideoUpdate(); - break; - case "play": - PLAYER.paused = data.paused; - if (CLIENT.leader) - sendVideoUpdate(); - break; - case "volumechange": - PLAYER.volume = (data.muted ? 0 : data.volume); - break; - case "progress": - break; - case "onJavaScriptBridgeCreated": - PLAYER.player = $("#ytapiplayer")[0]; - break; - default: - break; - } -} - var JWPlayer = function (data) { var self = this; self.videoId = data.id; @@ -902,85 +874,6 @@ var CustomPlayer = function (data) { function FilePlayer(data) { var self = this; - self.initFlash = function (data) { - waitUntilDefined(window, "swfobject", function () { - if (!data.url) { - return; - } - self.volume = VOLUME; - self.videoId = data.id; - self.videoURL = data.url; - self.videoLength = data.seconds; - self.paused = false; - self.currentTime = 0; - - var params = { - allowFullScreen: "true", - allowScriptAccess: "always", - allowNetworking: "all", - wMode: "direct" - }; - - var flashvars = { - src: encodeURIComponent(self.videoURL), - // For some reason this param seems not to work - clipStartTime: Math.floor(data.currentTime), - javascriptCallbackFunction: "flashEventHandler", - autoPlay: true, - volume: VOLUME - }; - - if (self.videoURL.indexOf("rtmp") === 0) { - flashvars.streamType = "live"; - } else { - flashvars.streamType = "recorded"; - } - - swfobject.embedSWF("/StrobeMediaPlayback.swf", - "ytapiplayer", - VWIDTH, VHEIGHT, - "10.1.0", - null, - flashvars, - params, - { name: "ytapiplayer" } - ); - - self.player = $("#ytapiplayer")[0]; - resizeStuff(); - - self.pause = function () { - if (self.player && self.player.pause) - self.player.pause(); - }; - - self.play = function () { - // Why is it play2? What happened to play1? - if (self.player && self.player.play2) - self.player.play2(); - }; - - self.getTime = function (cb) { - cb(self.currentTime); - }; - - self.seek = function (to) { - if (self.player && self.player.seek) { - self.player.seek(Math.floor(to)); - } - }; - - self.getVolume = function (cb) { - cb(self.volume); - }; - - self.setVolume = function (vol) { - if (self.player && self.player.setVolume) - self.player.setVolume(vol); - }; - }); - }; - self.init = function (data) { if (!data.url) { return; @@ -1004,7 +897,8 @@ function FilePlayer(data) { video.error(function (err) { setTimeout(function () { console.log("