mirror of
https://github.com/ThaUnknown/miru.git
synced 2026-04-13 03:20:23 +00:00
32nuirn213ui vrj3i
This commit is contained in:
parent
3a0b9fbd46
commit
b6784511a3
2 changed files with 25 additions and 43 deletions
|
|
@ -31,19 +31,18 @@ function subStream(stream) {
|
|||
playerData.subtitleStream.on('subtitle', (subtitle, trackNumber) => {
|
||||
console.log("subtitle")
|
||||
if (playerData.headers) {
|
||||
if (!playerData.subtitles[trackNumber].has(subtitle)) {
|
||||
playerData.subtitles[trackNumber].add(subtitle)
|
||||
// if (playerData.selectedHeader == trackNumber){
|
||||
renderSubs(trackNumber, subtitle)
|
||||
// }
|
||||
let formatSub = "Dialogue: " + subtitle.layer + "," + new Date(subtitle.time).toISOString().slice(12, -1).slice(0, -1) + "," + new Date(subtitle.time + subtitle.duration).toISOString().slice(12, -1).slice(0, -1) + "," + subtitle.style + "," + subtitle.name + "," + subtitle.marginL + "," + subtitle.marginR + "," + subtitle.marginV + "," + subtitle.effect + "," + subtitle.text
|
||||
if (!playerData.subtitles[trackNumber].has(formatSub)) {
|
||||
playerData.subtitles[trackNumber].add(formatSub)
|
||||
if (playerData.selectedHeader == trackNumber)
|
||||
renderSubs.call(null, trackNumber)
|
||||
}
|
||||
} else {
|
||||
if (!Object.values(playerData.tracks[trackNumber].cues).some(c => c.text == subtitle.text && c.startTime == subtitle.time / 1000 && c.endTime == (subtitle.time + subtitle.duration) / 1000)) {
|
||||
let cue = new VTTCue(subtitle.time / 1000, (subtitle.time + subtitle.duration) / 1000, subtitle.text)
|
||||
playerData.tracks[trackNumber].addCue(cue)
|
||||
}
|
||||
}
|
||||
// } else {
|
||||
// if (!Object.values(playerData.tracks[trackNumber].cues).some(c => c.text == subtitle.text && c.startTime == subtitle.time / 1000 && c.endTime == (subtitle.time + subtitle.duration) / 1000)) {
|
||||
// let cue = new VTTCue(subtitle.time / 1000, (subtitle.time + subtitle.duration) / 1000, subtitle.text)
|
||||
// playerData.tracks[trackNumber].addCue(cue)
|
||||
// }
|
||||
// }
|
||||
})
|
||||
playerData.subtitleStream.on('file', file => {
|
||||
file.mimetype == ("application/x-truetype-font" || "application/font-woff") ? playerData.fonts.push(window.URL.createObjectURL(new Blob([file.data], { type: file.mimetype }))) : ""
|
||||
|
|
@ -51,44 +50,28 @@ function subStream(stream) {
|
|||
stream.pipe(playerData.subtitleStream)
|
||||
}
|
||||
}
|
||||
function renderSubs(trackNumber, subtitle) {
|
||||
if (trackNumber) {
|
||||
var trackContent = playerData.headers[trackNumber].header.slice(0, -1)
|
||||
// playerData.subtitles[trackNumber].join("\n")
|
||||
console.log("1")
|
||||
} else {
|
||||
var trackContent = playerData.headers[3].header.slice(0, -1)
|
||||
console.log("2")
|
||||
}
|
||||
function renderSubs(trackNumber) {
|
||||
if (!playerData.octopusInstance) {
|
||||
console.log("3")
|
||||
let options = {
|
||||
video: video,
|
||||
subContent: trackContent,
|
||||
subContent: trackNumber ? playerData.headers[trackNumber].header.slice(0, -1) + Array.from(playerData.subtitles[trackNumber]).join("\n") : playerData.headers[3].header.slice(0, -1),
|
||||
lossyRender: settings.subtitle2,
|
||||
fonts: playerData.fonts.length == 0 ? ["https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9fBBc4.woff2"] : playerData.fonts,
|
||||
workerUrl: 'js/subtitles-octopus-worker.js'
|
||||
};
|
||||
playerData.octopusInstance = new SubtitlesOctopus(options);
|
||||
playerData.octopusInstance.getStyles()
|
||||
} else {
|
||||
pushSub(trackNumber)
|
||||
}
|
||||
console.log("4")
|
||||
// playerData.octopusInstance.setTrack(trackContent)
|
||||
let subObject = {
|
||||
Start: subtitle.time,
|
||||
Duration: subtitle.duration,
|
||||
ReadOrder: playerData.subtitles[trackNumber].size - 1,
|
||||
Layer: parseInt(subtitle.layer),
|
||||
Style: 1, //playerData.styles.findIndex(style => style.Name == subtitle.style) + 1 ||
|
||||
Name: subtitle.name || "",
|
||||
MarginL: parseInt(subtitle.marginL),
|
||||
MarginR: parseInt(subtitle.marginR),
|
||||
MarginV: parseInt(subtitle.marginV),
|
||||
Effect: subtitle.effect || "",
|
||||
Text: subtitle.text
|
||||
}
|
||||
console.log(subObject)
|
||||
playerData.octopusInstance.createEvent(subObject)
|
||||
playerData.octopusInstance.getEvents()
|
||||
}
|
||||
|
||||
let octopusTimeout
|
||||
function pushSub(trackNumber) {
|
||||
if (!octopusTimeout) {
|
||||
octopusTimeout = setTimeout(() => {
|
||||
console.log("pushing sub data!")
|
||||
octopusTimeout = undefined
|
||||
playerData.octopusInstance.setTrack(trackNumber ? playerData.headers[trackNumber].header.slice(0, -1) + Array.from(playerData.subtitles[trackNumber]).join("\n") : playerData.headers[3].header.slice(0, -1))
|
||||
}, 1000)
|
||||
}
|
||||
}
|
||||
|
|
@ -19,7 +19,7 @@ var SubtitlesOctopus = function (options) {
|
|||
self.dropAllAnimations = options.dropAllAnimations || false;
|
||||
self.libassMemoryLimit = options.libassMemoryLimit || 0; // set libass bitmap cache memory limit in MiB (approximate)
|
||||
self.libassGlyphLimit = options.libassGlyphLimit || 0; // set libass glyph cache memory limit in MiB (approximate)
|
||||
self.targetFps = options.targetFps || 60;
|
||||
self.targetFps = options.targetFps || 30;
|
||||
self.prescaleTradeoff = options.prescaleTradeoff || null; // render subtitles less than viewport when less than 1.0 to improve speed, render to more than 1.0 to improve quality; set to null to disable scaling
|
||||
self.softHeightLimit = options.softHeightLimit || 1080; // don't apply prescaleTradeoff < 1 when viewport height is less that this limit
|
||||
self.hardHeightLimit = options.hardHeightLimit || 2160; // don't ever go above this limit
|
||||
|
|
@ -686,7 +686,6 @@ var SubtitlesOctopus = function (options) {
|
|||
case 'get-styles': {
|
||||
console.log(data.target);
|
||||
console.log(data.styles);
|
||||
playerData.styles = data.styles
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
|
|
|||
Loading…
Reference in a new issue