mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-08 10:56:15 -08:00
Fix mobile subtitle
This commit is contained in:
1 parent
ce2184f016
commit
489b81bb43
9 files changed
+92
-51
No files matched your search
@@ -240,7 +240,7 @@ class Artplayer extends (0, _emitterDefault.default) {
|
||||
return "development";
|
||||
}
|
||||
static get build() {
|
||||
return "1660786773540";
|
||||
return "1662532087791";
|
||||
}
|
||||
static get config() {
|
||||
return 0, _configDefault.default;
|
||||
@@ -1193,7 +1193,9 @@ class Template {
|
||||
static get html() {
|
||||
return `
|
||||
<div class="art-video-player art-subtitle-show art-layer-show art-control-show art-mask-show">
|
||||
<video class="art-video"></video>
|
||||
<video class="art-video">
|
||||
<track default kind="metadata"></track>
|
||||
</video>
|
||||
<div class="art-poster"></div>
|
||||
<div class="art-subtitle"></div>
|
||||
<div class="art-danmuku"></div>
|
||||
@@ -1261,6 +1263,7 @@ class Template {
|
||||
if (!option.useSSR) this.$container.innerHTML = Template.html;
|
||||
this.$player = this.query(".art-video-player");
|
||||
this.$video = this.query(".art-video");
|
||||
this.$track = this.query("track");
|
||||
this.$poster = this.query(".art-poster");
|
||||
this.$subtitle = this.query(".art-subtitle");
|
||||
this.$danmuku = this.query(".art-danmuku");
|
||||
@@ -1860,7 +1863,7 @@ function fullscreenMix(art1) {
|
||||
await (0, _screenfullDefault.default).exit();
|
||||
(0, _utils.removeClass)($player, "art-fullscreen");
|
||||
art.emit("resize");
|
||||
art.emit("fullscreen");
|
||||
art.emit("fullscreen", false);
|
||||
notice.show = "";
|
||||
}
|
||||
}
|
||||
@@ -1879,7 +1882,7 @@ function fullscreenMix(art1) {
|
||||
notice.show = "";
|
||||
} else {
|
||||
$video.webkitExitFullscreen();
|
||||
art.emit("fullscreen");
|
||||
art.emit("fullscreen", false);
|
||||
notice.show = "";
|
||||
}
|
||||
}
|
||||
@@ -2054,7 +2057,7 @@ function fullscreenWebMix(art) {
|
||||
art.aspectRatioReset = true;
|
||||
art.autoSize = art.option.autoSize;
|
||||
art.emit("resize");
|
||||
art.emit("fullscreenWeb");
|
||||
art.emit("fullscreenWeb", false);
|
||||
notice.show = "";
|
||||
}
|
||||
}
|
||||
@@ -2090,7 +2093,7 @@ function nativePip(art) {
|
||||
art.emit("pip", true);
|
||||
});
|
||||
proxy($video, "leavepictureinpicture", ()=>{
|
||||
art.emit("pip");
|
||||
art.emit("pip", false);
|
||||
});
|
||||
}
|
||||
function webkitPip(art) {
|
||||
@@ -2107,7 +2110,7 @@ function webkitPip(art) {
|
||||
art.emit("pip", true);
|
||||
} else {
|
||||
$video.webkitSetPresentationMode("inline");
|
||||
art.emit("pip");
|
||||
art.emit("pip", false);
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -2351,7 +2354,7 @@ function miniMix(art) {
|
||||
art.playbackRate = false;
|
||||
art.autoSize = option.autoSize;
|
||||
art.notice.show = "";
|
||||
art.emit("mini");
|
||||
art.emit("mini", false);
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -3724,7 +3727,14 @@ class Subtitle extends (0, _componentDefault.default) {
|
||||
constructor(art){
|
||||
super(art);
|
||||
this.name = "subtitle";
|
||||
this.eventDestroy = ()=>null;
|
||||
this.init(art.option.subtitle);
|
||||
art.on("fullscreen", (state)=>{
|
||||
if (!this.url || !(0, _utils.isMobile)) return;
|
||||
const { $video } = this.art.template;
|
||||
if (state && $video.webkitDisplayingFullscreen) this.createTrack("subtitles", this.url);
|
||||
else this.createTrack("metadata", this.url);
|
||||
});
|
||||
}
|
||||
get url() {
|
||||
return this.art.template.$track.src;
|
||||
@@ -3762,22 +3772,25 @@ class Subtitle extends (0, _componentDefault.default) {
|
||||
if (newOption.name) notice.show = `${i18n.get("Switch Subtitle")}: ${newOption.name}`;
|
||||
return subUrl;
|
||||
}
|
||||
init(subtitleOption) {
|
||||
createTrack(kind, url) {
|
||||
const { template , proxy } = this.art;
|
||||
const { $video , $track } = template;
|
||||
const $newTrack = (0, _utils.createElement)("track");
|
||||
$newTrack.default = true;
|
||||
$newTrack.kind = kind;
|
||||
$newTrack.src = url;
|
||||
this.eventDestroy();
|
||||
(0, _utils.remove)($track);
|
||||
(0, _utils.append)($video, $newTrack);
|
||||
template.$track = $newTrack;
|
||||
this.eventDestroy = proxy(this.textTrack, "cuechange", ()=>this.update());
|
||||
}
|
||||
async init(subtitleOption) {
|
||||
const { notice , template: { $subtitle } , } = this.art;
|
||||
(0, _optionValidatorDefault.default)(subtitleOption, (0, _schemeDefault.default).subtitle);
|
||||
if (!subtitleOption.url) return;
|
||||
const { notice , events: { proxy } , template: { $subtitle , $video , $track } , } = this.art;
|
||||
if (!$track) {
|
||||
const $track = (0, _utils.createElement)("track");
|
||||
$track.default = true;
|
||||
$track.kind = "metadata";
|
||||
$video.appendChild($track);
|
||||
this.art.template.$track = $track;
|
||||
proxy(this.textTrack, "cuechange", this.update.bind(this));
|
||||
}
|
||||
this.style(subtitleOption.style);
|
||||
(0, _utils.errorHandle)(window.fetch, "fetch not support");
|
||||
return fetch(subtitleOption.url).then((response)=>response.arrayBuffer()).then((buffer)=>{
|
||||
(0, _utils.errorHandle)(window.TextDecoder, "TextDecoder not support");
|
||||
const decoder = new TextDecoder(subtitleOption.encoding);
|
||||
const text = decoder.decode(buffer);
|
||||
this.art.emit("subtitleLoad", subtitleOption.url);
|
||||
@@ -3795,7 +3808,7 @@ class Subtitle extends (0, _componentDefault.default) {
|
||||
$subtitle.innerHTML = "";
|
||||
if (this.url === subUrl) return subUrl;
|
||||
URL.revokeObjectURL(this.url);
|
||||
this.art.template.$track.src = subUrl;
|
||||
this.createTrack("metadata", subUrl);
|
||||
this.art.emit("subtitleSwitch", subUrl);
|
||||
return subUrl;
|
||||
}).catch((err)=>{
|
||||
@@ -3915,7 +3928,7 @@ function hoverInit(art, events) {
|
||||
art.emit("hover", true);
|
||||
}, ()=>{
|
||||
(0, _utils.removeClass)($player, "art-hover");
|
||||
art.emit("hover");
|
||||
art.emit("hover", false);
|
||||
});
|
||||
}
|
||||
exports.default = hoverInit;
|
||||
|
||||
@@ -1 +1 @@
|
||||
{"mappings":"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 truncated
|
||||
{"mappings":"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 truncated
|
||||
@@ -11,7 +11,7 @@ export default function hoverInit(art, events) {
|
||||
},
|
||||
() => {
|
||||
removeClass($player, 'art-hover');
|
||||
art.emit('hover');
|
||||
art.emit('hover', false);
|
||||
},
|
||||
);
|
||||
}
|
||||
@@ -31,7 +31,7 @@ export default function fullscreenMix(art) {
|
||||
await screenfull.exit();
|
||||
removeClass($player, 'art-fullscreen');
|
||||
art.emit('resize');
|
||||
art.emit('fullscreen');
|
||||
art.emit('fullscreen', false);
|
||||
notice.show = '';
|
||||
}
|
||||
},
|
||||
@@ -51,7 +51,7 @@ export default function fullscreenMix(art) {
|
||||
notice.show = '';
|
||||
} else {
|
||||
$video.webkitExitFullscreen();
|
||||
art.emit('fullscreen');
|
||||
art.emit('fullscreen', false);
|
||||
notice.show = '';
|
||||
}
|
||||
},
|
||||
|
||||
@@ -24,7 +24,7 @@ export default function fullscreenWebMix(art) {
|
||||
art.aspectRatioReset = true;
|
||||
art.autoSize = art.option.autoSize;
|
||||
art.emit('resize');
|
||||
art.emit('fullscreenWeb');
|
||||
art.emit('fullscreenWeb', false);
|
||||
notice.show = '';
|
||||
}
|
||||
},
|
||||
|
||||
@@ -87,7 +87,7 @@ export default function miniMix(art) {
|
||||
art.playbackRate = false;
|
||||
art.autoSize = option.autoSize;
|
||||
art.notice.show = '';
|
||||
art.emit('mini');
|
||||
art.emit('mini', false);
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
@@ -34,7 +34,7 @@ function nativePip(art) {
|
||||
});
|
||||
|
||||
proxy($video, 'leavepictureinpicture', () => {
|
||||
art.emit('pip');
|
||||
art.emit('pip', false);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -54,7 +54,7 @@ function webkitPip(art) {
|
||||
art.emit('pip', true);
|
||||
} else {
|
||||
$video.webkitSetPresentationMode('inline');
|
||||
art.emit('pip');
|
||||
art.emit('pip', false);
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
@@ -1,4 +1,16 @@
|
||||
import { setStyle, setStyles, srtToVtt, vttToBlob, getExt, assToVtt, escape, errorHandle, createElement } from './utils';
|
||||
import {
|
||||
setStyle,
|
||||
setStyles,
|
||||
srtToVtt,
|
||||
vttToBlob,
|
||||
getExt,
|
||||
assToVtt,
|
||||
escape,
|
||||
remove,
|
||||
append,
|
||||
isMobile,
|
||||
createElement,
|
||||
} from './utils';
|
||||
import Component from './utils/component';
|
||||
import validator from 'option-validator';
|
||||
import scheme from './scheme';
|
||||
@@ -6,10 +18,19 @@ import scheme from './scheme';
|
||||
export default class Subtitle extends Component {
|
||||
constructor(art) {
|
||||
super(art);
|
||||
|
||||
this.name = 'subtitle';
|
||||
|
||||
this.eventDestroy = () => null;
|
||||
this.init(art.option.subtitle);
|
||||
|
||||
art.on('fullscreen', (state) => {
|
||||
if (!this.url || !isMobile) return;
|
||||
const { $video } = this.art.template;
|
||||
if (state && $video.webkitDisplayingFullscreen) {
|
||||
this.createTrack('subtitles', this.url);
|
||||
} else {
|
||||
this.createTrack('metadata', this.url);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
get url() {
|
||||
@@ -58,32 +79,36 @@ export default class Subtitle extends Component {
|
||||
return subUrl;
|
||||
}
|
||||
|
||||
init(subtitleOption) {
|
||||
validator(subtitleOption, scheme.subtitle);
|
||||
if (!subtitleOption.url) return;
|
||||
createTrack(kind, url) {
|
||||
const { template, proxy } = this.art;
|
||||
const { $video, $track } = template;
|
||||
|
||||
const $newTrack = createElement('track');
|
||||
$newTrack.default = true;
|
||||
$newTrack.kind = kind;
|
||||
$newTrack.src = url;
|
||||
|
||||
this.eventDestroy();
|
||||
remove($track);
|
||||
|
||||
append($video, $newTrack);
|
||||
template.$track = $newTrack;
|
||||
this.eventDestroy = proxy(this.textTrack, 'cuechange', () => this.update());
|
||||
}
|
||||
|
||||
async init(subtitleOption) {
|
||||
const {
|
||||
notice,
|
||||
events: { proxy },
|
||||
template: { $subtitle, $video, $track },
|
||||
template: { $subtitle },
|
||||
} = this.art;
|
||||
|
||||
if (!$track) {
|
||||
const $track = createElement('track');
|
||||
$track.default = true;
|
||||
$track.kind = 'metadata';
|
||||
$video.appendChild($track);
|
||||
this.art.template.$track = $track;
|
||||
proxy(this.textTrack, 'cuechange', this.update.bind(this));
|
||||
}
|
||||
|
||||
validator(subtitleOption, scheme.subtitle);
|
||||
if (!subtitleOption.url) return;
|
||||
this.style(subtitleOption.style);
|
||||
|
||||
errorHandle(window.fetch, 'fetch not support');
|
||||
return fetch(subtitleOption.url)
|
||||
.then((response) => response.arrayBuffer())
|
||||
.then((buffer) => {
|
||||
errorHandle(window.TextDecoder, 'TextDecoder not support');
|
||||
const decoder = new TextDecoder(subtitleOption.encoding);
|
||||
const text = decoder.decode(buffer);
|
||||
|
||||
@@ -103,7 +128,7 @@ export default class Subtitle extends Component {
|
||||
$subtitle.innerHTML = '';
|
||||
if (this.url === subUrl) return subUrl;
|
||||
URL.revokeObjectURL(this.url);
|
||||
this.art.template.$track.src = subUrl;
|
||||
this.createTrack('metadata', subUrl);
|
||||
this.art.emit('subtitleSwitch', subUrl);
|
||||
return subUrl;
|
||||
})
|
||||
|
||||
@@ -34,7 +34,9 @@ export default class Template {
|
||||
static get html() {
|
||||
return `
|
||||
<div class="art-video-player art-subtitle-show art-layer-show art-control-show art-mask-show">
|
||||
<video class="art-video"></video>
|
||||
<video class="art-video">
|
||||
<track default kind="metadata"></track>
|
||||
</video>
|
||||
<div class="art-poster"></div>
|
||||
<div class="art-subtitle"></div>
|
||||
<div class="art-danmuku"></div>
|
||||
@@ -108,6 +110,7 @@ export default class Template {
|
||||
|
||||
this.$player = this.query('.art-video-player');
|
||||
this.$video = this.query('.art-video');
|
||||
this.$track = this.query('track');
|
||||
this.$poster = this.query('.art-poster');
|
||||
this.$subtitle = this.query('.art-subtitle');
|
||||
this.$danmuku = this.query('.art-danmuku');
|
||||
|
||||
Reference in new issue
Block a user