Support storyboards on very short shorts (#3128)

This commit is contained in:
absidue 2023-02-05 20:19:24 +01:00 committed by GitHub
parent c3867259e9
commit 29f511372f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 7 deletions

View File

@ -89,13 +89,18 @@ export function toLocalePublicationString ({ publishText, isLive = false, isUpco
return i18n.t('Video.Publicationtemplate', { number: strings[0], unit })
}
export function buildVTTFileLocally(storyboard) {
export function buildVTTFileLocally(storyboard, videoLengthSeconds) {
let vttString = 'WEBVTT\n\n'
// how many images are in one image
const numberOfSubImagesPerImage = storyboard.columns * storyboard.rows
// the number of storyboard images
const numberOfImages = Math.ceil(storyboard.thumbnail_count / numberOfSubImagesPerImage)
const intervalInSeconds = storyboard.interval / 1000
let intervalInSeconds
if (storyboard.interval > 0) {
intervalInSeconds = storyboard.interval / 1000
} else {
intervalInSeconds = videoLengthSeconds / (numberOfImages * numberOfSubImagesPerImage)
}
let startHours = 0
let startMinutes = 0
let startSeconds = 0
@ -110,11 +115,11 @@ export function buildVTTFileLocally(storyboard) {
// add the timestamp information
const paddedStartHours = startHours.toString().padStart(2, '0')
const paddedStartMinutes = startMinutes.toString().padStart(2, '0')
const paddedStartSeconds = startSeconds.toString().padStart(2, '0')
const paddedStartSeconds = startSeconds.toFixed(3).padStart(6, '0')
const paddedEndHours = endHours.toString().padStart(2, '0')
const paddedEndMinutes = endMinutes.toString().padStart(2, '0')
const paddedEndSeconds = endSeconds.toString().padStart(2, '0')
vttString += `${paddedStartHours}:${paddedStartMinutes}:${paddedStartSeconds}.000 --> ${paddedEndHours}:${paddedEndMinutes}:${paddedEndSeconds}.000\n`
const paddedEndSeconds = endSeconds.toFixed(3).padStart(6, '0')
vttString += `${paddedStartHours}:${paddedStartMinutes}:${paddedStartSeconds} --> ${paddedEndHours}:${paddedEndMinutes}:${paddedEndSeconds}\n`
// add the current image url as well as the x, y, width, height information
vttString += `${currentUrl}#xywh=${xCoord},${yCoord},${storyboard.thumbnail_width},${storyboard.thumbnail_height}\n\n`
// update the variables

View File

@ -643,7 +643,7 @@ export default defineComponent({
}
if (result.storyboards?.type === 'PlayerStoryboardSpec') {
await this.createLocalStoryboardUrls(result.storyboards.boards[2])
await this.createLocalStoryboardUrls(result.storyboards.boards.at(-1))
}
}
@ -1290,7 +1290,7 @@ export default defineComponent({
},
createLocalStoryboardUrls: async function (storyboardInfo) {
const results = buildVTTFileLocally(storyboardInfo)
const results = buildVTTFileLocally(storyboardInfo, this.videoLengthSeconds)
const userData = await getUserDataPath()
let fileLocation
let uriSchema