Embed: allow options.setTracks to set subtitles
This commit is contained in:
parent
b5750a5de7
commit
06eb78c345
5 changed files with 128 additions and 61 deletions
File diff suppressed because one or more lines are too long
|
@ -782,21 +782,68 @@ function MistVideo(streamName,options) {
|
|||
|
||||
}
|
||||
|
||||
if (options.setTracks) {
|
||||
if ("setTrack" in MistVideo.player.api) {
|
||||
MistVideo.player.onready(function(){
|
||||
for (var i in options.setTracks) {
|
||||
MistVideo.player.api.setTrack(i,options.setTracks[i]);
|
||||
}
|
||||
|
||||
if (options.setTracks) {
|
||||
var setTracks = MistUtil.object.extend({},options.setTracks);
|
||||
if (("subtitle" in options.setTracks) && ("setSubtitle" in MistVideo.player.api)) {
|
||||
MistVideo.player.onready(function(){
|
||||
|
||||
//find the source for subtitles
|
||||
var subtitleSource = false;
|
||||
for (var i in MistVideo.info.source) {
|
||||
var source = MistVideo.info.source[i];
|
||||
//this is a subtitle source, and it's the same protocol (HTTP/HTTPS) as the video source
|
||||
if ((source.type == "html5/text/vtt") && (MistUtil.http.url.split(source.url).protocol == MistUtil.http.url.split(MistVideo.source.url).protocol)) {
|
||||
subtitleSource = source.url.replace(/.srt$/,".vtt");
|
||||
break;
|
||||
}
|
||||
});
|
||||
}
|
||||
else if ("setTracks" in MistVideo.player.api) {
|
||||
MistVideo.player.onready(function(){
|
||||
MistVideo.player.api.setTracks(options.setTracks);
|
||||
});
|
||||
}
|
||||
}
|
||||
if (!subtitleSource) { return; }
|
||||
|
||||
//find the track meta information
|
||||
var tracks = MistUtil.tracks.parse(MistVideo.info.meta.tracks);
|
||||
if (!("subtitle" in tracks) || !(setTracks.subtitle in tracks.subtitle)) { return; }
|
||||
meta = tracks.subtitle[setTracks.subtitle];
|
||||
|
||||
//add source to the meta
|
||||
meta.src = MistUtil.http.url.addParam(subtitleSource,{track:setTracks.subtitle});
|
||||
|
||||
meta.label = "automatic";
|
||||
meta.lang = "unknown";
|
||||
|
||||
MistVideo.player.api.setSubtitle(meta);
|
||||
MistUtil.event.send("playerUpdate_trackChanged",{
|
||||
type: "subtitle",
|
||||
trackid: setTracks.subtitle
|
||||
}, MistVideo.video);
|
||||
|
||||
delete setTracks.subtitle;
|
||||
});
|
||||
}
|
||||
|
||||
if ("setTrack" in MistVideo.player.api) {
|
||||
MistVideo.player.onready(function(){
|
||||
for (var i in setTracks) {
|
||||
MistVideo.player.api.setTrack(i,setTracks[i]);
|
||||
MistUtil.event.send("playerUpdate_trackChanged",{
|
||||
type: i,
|
||||
trackid: setTracks[i]
|
||||
}, MistVideo.video);
|
||||
}
|
||||
});
|
||||
}
|
||||
else if ("setTracks" in MistVideo.player.api) {
|
||||
MistVideo.player.onready(function(){
|
||||
MistVideo.player.api.setTracks(setTracks);
|
||||
});
|
||||
for (var i in setTracks) {
|
||||
MistUtil.event.send("playerUpdate_trackChanged",{
|
||||
type: i,
|
||||
trackid: setTracks[i]
|
||||
}, MistVideo.video);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1292,23 +1292,23 @@ MistSkins["default"] = {
|
|||
return MistVideo.player.api.setTrack(type,value);
|
||||
}
|
||||
else {
|
||||
//gather what tracks we should use
|
||||
var usetracks = {};
|
||||
for (var i in selections) {
|
||||
if ((i == "subtitle") || (selections[i].value == "")) { continue; } //subtitle tracks are handled seperately
|
||||
usetracks[i] = selections[i].value;
|
||||
}
|
||||
if (value != ""){ usetracks[type] = value; }
|
||||
//use setTracks
|
||||
if ("setTracks" in MistVideo.player.api) {
|
||||
return MistVideo.player.api.setTracks(usetracks);
|
||||
}
|
||||
//use setSource
|
||||
if ("setSource" in MistVideo.player.api) {
|
||||
return MistVideo.player.api.setSource(
|
||||
MistUtil.http.url.addParam(MistVideo.source.url,usetracks)
|
||||
);
|
||||
}
|
||||
//gather what tracks we should use
|
||||
var usetracks = {};
|
||||
for (var i in selections) {
|
||||
if ((i == "subtitle") || (selections[i].value == "")) { continue; } //subtitle tracks are handled seperately
|
||||
usetracks[i] = selections[i].value;
|
||||
}
|
||||
if (value != ""){ usetracks[type] = value; }
|
||||
//use setTracks
|
||||
if ("setTracks" in MistVideo.player.api) {
|
||||
return MistVideo.player.api.setTracks(usetracks);
|
||||
}
|
||||
//use setSource
|
||||
if ("setSource" in MistVideo.player.api) {
|
||||
return MistVideo.player.api.setSource(
|
||||
MistUtil.http.url.addParam(MistVideo.source.url,usetracks)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1463,8 +1463,12 @@ MistSkins["default"] = {
|
|||
|
||||
|
||||
//add options to the select
|
||||
function n(str) {
|
||||
if (str == "") { return -1; }
|
||||
return Number(str);
|
||||
}
|
||||
var options = MistUtil.object.keys(t,function(a,b){
|
||||
return Number(a) - Number(b);
|
||||
return n(a) - n(b);
|
||||
}); //sort them
|
||||
for (var i in options) {
|
||||
var track = t[options[i]];
|
||||
|
@ -1479,6 +1483,15 @@ MistSkins["default"] = {
|
|||
option.appendChild(document.createTextNode("Track "+(Number(i)+1)));
|
||||
}
|
||||
}
|
||||
|
||||
MistUtil.event.addListener(MistVideo.video,"playerUpdate_trackChanged",function(e){
|
||||
|
||||
if (e.message.type != type) { return; }
|
||||
select.value = e.message.trackid;
|
||||
MistVideo.log("Player selected "+type+" track with id "+e.message.trackid);
|
||||
|
||||
},select);
|
||||
|
||||
if (type == "subtitle") {
|
||||
MistUtil.event.addListener(select,"change",function(){
|
||||
try {
|
||||
|
@ -1538,13 +1551,6 @@ MistSkins["default"] = {
|
|||
}
|
||||
*/
|
||||
|
||||
MistUtil.event.addListener(MistVideo.video,"playerUpdate_trackChanged",function(e){
|
||||
|
||||
if (e.message.type != type) { return; }
|
||||
select.value = e.message.trackid;
|
||||
MistVideo.log("Player selected "+type+" track with id "+e.message.trackid);
|
||||
|
||||
},select);
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue