Embed: webrtc play promise, webrtc options.setTracks fix
This commit is contained in:
parent
070ba94f50
commit
5c7c2bd801
6 changed files with 126 additions and 36 deletions
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -14,45 +14,45 @@ echo "Minimizing player code..";
|
|||
|
||||
echo " Minimizing JS..";
|
||||
|
||||
if elementIn "embed/util.js" "${CHANGES[@]}" || elementIn "embed/skins.js" "${CHANGES[@]}" || elementIn "embed/controls.js" "${CHANGES[@]}" || elementIn "embed/player.js" "${CHANGES[@]}" ; then
|
||||
# if elementIn "embed/util.js" "${CHANGES[@]}" || elementIn "embed/skins.js" "${CHANGES[@]}" || elementIn "embed/controls.js" "${CHANGES[@]}" || elementIn "embed/player.js" "${CHANGES[@]}" ; then
|
||||
echo " Minimizing 'util.js skins.js controls.js player.js' into 'min/player.js'..";
|
||||
terser -mc -o min/player.js -- util.js skins.js controls.js player.js
|
||||
fi
|
||||
#fi
|
||||
echo " Done.";
|
||||
|
||||
echo " Minimizing wrappers.."
|
||||
|
||||
if elementIn "embed/wrappers/dashjs.js" "${CHANGES[@]}"; then
|
||||
#if elementIn "embed/wrappers/dashjs.js" "${CHANGES[@]}"; then
|
||||
echo " Minimizing dashjs";
|
||||
terser -mn -o min/wrappers/dashjs.js -- wrappers/dashjs.js
|
||||
fi
|
||||
if elementIn "embed/wrappers/flash_strobe.js" "${CHANGES[@]}"; then
|
||||
#fi
|
||||
#if elementIn "embed/wrappers/flash_strobe.js" "${CHANGES[@]}"; then
|
||||
echo " Minimizing flash_strobe";
|
||||
terser -mn -o min/wrappers/flash_strobe.js -- wrappers/flash_strobe.js
|
||||
fi
|
||||
if elementIn "embed/wrappers/html5.js" "${CHANGES[@]}"; then
|
||||
#fi
|
||||
#if elementIn "embed/wrappers/html5.js" "${CHANGES[@]}"; then
|
||||
echo " Minimizing html5";
|
||||
terser -mn -o min/wrappers/html5.js -- wrappers/html5.js
|
||||
fi
|
||||
if elementIn "embed/wrappers/videojs.js" "${CHANGES[@]}"; then
|
||||
#fi
|
||||
#if elementIn "embed/wrappers/videojs.js" "${CHANGES[@]}"; then
|
||||
echo " Minimizing videojs";
|
||||
terser -mn -o min/wrappers/videojs.js -- wrappers/videojs.js
|
||||
fi
|
||||
if elementIn "embed/wrappers/webrtc.js" "${CHANGES[@]}"; then
|
||||
#fi
|
||||
#if elementIn "embed/wrappers/webrtc.js" "${CHANGES[@]}"; then
|
||||
echo " Minimizing webrtc";
|
||||
terser -mn -o min/wrappers/webrtc.js -- wrappers/webrtc.js
|
||||
fi
|
||||
#fi
|
||||
echo " Done.";
|
||||
|
||||
echo " Minimizing CSS..";
|
||||
|
||||
if elementIn "embed/skins/default.css" "${CHANGES[@]}" || elementIn "embed/skins/general.css" "${CHANGES[@]}"; then
|
||||
#if elementIn "embed/skins/default.css" "${CHANGES[@]}" || elementIn "embed/skins/general.css" "${CHANGES[@]}"; #then
|
||||
echo " Minimizing default";
|
||||
cleancss --format keep-breaks -o min/skins/default.css skins/general.css skins/default.css
|
||||
fi
|
||||
if elementIn "embed/skins/default.css" "${CHANGES[@]}" || elementIn "embed/skins/general.css" "${CHANGES[@]}" || elementIn "embed/skins/dev.css" "${CHANGES[@]}"; then
|
||||
#fi
|
||||
#if elementIn "embed/skins/default.css" "${CHANGES[@]}" || elementIn "embed/skins/general.css" "${CHANGES[@]}" || elementIn "embed/skins/dev.css" "${CHANGES[@]}"; then
|
||||
echo " Minimizing dev";
|
||||
cleancss --format keep-breaks -o min/skins/dev.css skins/general.css skins/default.css skins/dev.css
|
||||
fi
|
||||
#fi
|
||||
echo " Done.";
|
||||
echo "Done.";
|
||||
|
|
|
@ -727,7 +727,7 @@ function MistVideo(streamName,options) {
|
|||
};
|
||||
|
||||
//add track selection function
|
||||
if (!("setTrack" in MistVideo.player.api)) {
|
||||
if (!("setTracks" in MistVideo.player.api)) {
|
||||
MistVideo.player.api.setTracks = function(usetracks){
|
||||
|
||||
//check tracks exist
|
||||
|
@ -782,6 +782,15 @@ function MistVideo(streamName,options) {
|
|||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
//add general setTracks function if setTrack exists
|
||||
if (!("setTracks" in MistVideo.player.api) && ("setTrack" in MistVideo.player.api)) {
|
||||
MistVideo.player.api.setTracks = function(usetracks){
|
||||
for (var i in usetracks) {
|
||||
MistVideo.player.api.setTrack(i,usetracks[i]);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
if (options.setTracks) {
|
||||
|
|
|
@ -91,12 +91,13 @@ MistSkins["default"] = {
|
|||
children: [{
|
||||
type: "volume",
|
||||
mode: "horizontal",
|
||||
size: {height: 22}
|
||||
size: {height: 22},
|
||||
classes: ["mistvideo-pointer"]
|
||||
}]
|
||||
},
|
||||
{
|
||||
type: "speaker",
|
||||
classse: ["mistvideo-pointer"],
|
||||
classes: ["mistvideo-pointer"],
|
||||
style: {"margin-left": "-2px"}
|
||||
}
|
||||
]
|
||||
|
@ -129,7 +130,7 @@ MistSkins["default"] = {
|
|||
show: "right: 5px;",
|
||||
viewport: "right: 0; left: 0; bottom: 0; top: -1000px"
|
||||
},
|
||||
button: {type: "settings"},
|
||||
button: {type: "settings", classes: ["mistvideo-pointer"]},
|
||||
window: {type: "submenu"}
|
||||
}
|
||||
]}
|
||||
|
@ -1190,7 +1191,7 @@ MistSkins["default"] = {
|
|||
},
|
||||
settings: function(){
|
||||
var button = this.skin.icons.build("settings");
|
||||
|
||||
button.setAttribute("onclick","");
|
||||
return button;
|
||||
},
|
||||
loop: function(){
|
||||
|
|
|
@ -73,8 +73,10 @@ p.prototype.build = function (MistVideo,callback) {
|
|||
seekoffset = 0;
|
||||
hasended = false;
|
||||
this.webrtc.play();
|
||||
MistUtil.event.send("webrtc_connected",null,video);
|
||||
},
|
||||
on_disconnected: function() {
|
||||
MistUtil.event.send("webrtc_disconnected",null,video);
|
||||
MistVideo.log("Websocket sent on_disconnect");
|
||||
/*
|
||||
If a VoD file ends, we receive an on_stop, but no on_disconnect
|
||||
|
@ -105,10 +107,50 @@ p.prototype.build = function (MistVideo,callback) {
|
|||
duration = d;
|
||||
MistUtil.event.send("durationchange",d,video);
|
||||
}
|
||||
|
||||
if (currenttracks != ev.tracks) {
|
||||
var tracks = MistUtil.tracks.parse(MistVideo.info.meta.tracks);
|
||||
for (var i in ev.tracks) {
|
||||
if (currenttracks.indexOf(ev.tracks[i]) < 0) {
|
||||
//find track type
|
||||
var type;
|
||||
for (var j in tracks) {
|
||||
if (ev.tracks[i] in tracks[j]) {
|
||||
type = j;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!type) {
|
||||
//track type not found, this should not happen
|
||||
continue;
|
||||
}
|
||||
|
||||
//create an event to pass this to the skin
|
||||
MistUtil.event.send("playerUpdate_trackChanged",{
|
||||
type: type,
|
||||
trackid: ev.tracks[i]
|
||||
},MistVideo.video);
|
||||
}
|
||||
}
|
||||
|
||||
currenttracks = ev.tracks;
|
||||
}
|
||||
},
|
||||
on_seek: function(){
|
||||
var thisPlayer = this;
|
||||
MistUtil.event.send("seeked",seekoffset,video);
|
||||
video.play();
|
||||
if ("seekPromise" in this.webrtc.signaling){
|
||||
video.play().then(function(){
|
||||
if ("seekPromise" in thisPlayer.webrtc.signaling) {
|
||||
thisPlayer.webrtc.signaling.seekPromise.resolve("Play promise resolved");
|
||||
}
|
||||
}).catch(function(){
|
||||
if ("seekPromise" in thisPlayer.webrtc.signaling) {
|
||||
thisPlayer.webrtc.signaling.seekPromise.reject("Play promise rejected");
|
||||
}
|
||||
});
|
||||
}
|
||||
else { video.play(); }
|
||||
},
|
||||
on_stop: function(){
|
||||
MistVideo.log("Websocket sent on_stop");
|
||||
|
@ -185,8 +227,25 @@ p.prototype.build = function (MistVideo,callback) {
|
|||
this.signaling.send({type: "stop"});
|
||||
};
|
||||
this.seek = function(seekTime){
|
||||
if (!this.isConnected) { return; }
|
||||
this.signaling.send({type: "seek", "seek_time": seekTime*1e3});
|
||||
var p = new Promise(function(resolve,reject){
|
||||
if (!thisWebRTCPlayer.isConnected || !thisWebRTCPlayer.signaling) { return reject("Failed seek: not connected"); }
|
||||
thisWebRTCPlayer.signaling.send({type: "seek", "seek_time": seekTime*1e3});
|
||||
if ("seekPromise" in thisWebRTCPlayer.signaling) {
|
||||
thisWebRTCPlayer.signaling.seekPromise.reject("Doing new seek");
|
||||
}
|
||||
|
||||
thisWebRTCPlayer.signaling.seekPromise = {
|
||||
resolve: function(msg){
|
||||
resolve("seeked");
|
||||
delete thisWebRTCPlayer.signaling.seekPromise;
|
||||
},
|
||||
reject: function(msg) {
|
||||
reject("Failed to seek: "+msg);
|
||||
delete thisWebRTCPlayer.signaling.seekPromise;
|
||||
}
|
||||
};
|
||||
});
|
||||
return p;
|
||||
};
|
||||
this.pause = function(){
|
||||
if (!this.isConnected) { throw "Not connected, cannot pause." }
|
||||
|
@ -265,6 +324,7 @@ p.prototype.build = function (MistVideo,callback) {
|
|||
|
||||
//override video duration
|
||||
var duration;
|
||||
var currenttracks = [];
|
||||
Object.defineProperty(this.api,"duration",{
|
||||
get: function(){ return duration; }
|
||||
});
|
||||
|
@ -322,17 +382,28 @@ p.prototype.build = function (MistVideo,callback) {
|
|||
//redirect play
|
||||
me.api.play = function(){
|
||||
if (me.api.currentTime) {
|
||||
if ((!me.webrtc.isConnected) || (me.webrtc.peerConn.iceConnectionState != "completed")) {
|
||||
me.webrtc.connect(function(){
|
||||
me.webrtc.seek(me.api.currentTime);
|
||||
});
|
||||
}
|
||||
else {
|
||||
me.webrtc.seek(me.api.currentTime);
|
||||
}
|
||||
var p = new Promise(function(resolve,reject){
|
||||
if ((!me.webrtc.isConnected) || (me.webrtc.peerConn.iceConnectionState != "completed")) {
|
||||
me.webrtc.connect(function(){
|
||||
me.webrtc.seek(me.api.currentTime).then(function(msg){
|
||||
resolve("played "+msg);
|
||||
}).catch(function(msg){
|
||||
reject(msg);
|
||||
});
|
||||
});
|
||||
}
|
||||
else {
|
||||
me.webrtc.seek(me.api.currentTime).then(function(msg){
|
||||
resolve("played "+msg);
|
||||
}).catch(function(msg){
|
||||
reject(msg);
|
||||
});
|
||||
}
|
||||
});
|
||||
return p;
|
||||
}
|
||||
else {
|
||||
video.play();
|
||||
return video.play();
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -347,7 +418,16 @@ p.prototype.build = function (MistVideo,callback) {
|
|||
};
|
||||
|
||||
me.api.setTracks = function(obj){
|
||||
me.webrtc.setTrack(obj);
|
||||
if (me.webrtc.isConnected) {
|
||||
me.webrtc.setTrack(obj);
|
||||
}
|
||||
else {
|
||||
var f = function(){
|
||||
me.webrtc.setTrack(obj);
|
||||
MistUtil.event.removeListener({type: "webrtc_connected", callback: f, element: video});
|
||||
};
|
||||
MistUtil.event.addListener(video,"webrtc_connected",f);
|
||||
}
|
||||
};
|
||||
function correctSubtitleSync() {
|
||||
if (!me.api.textTracks[0]) { return; }
|
||||
|
|
Loading…
Add table
Reference in a new issue