Try to fix bad timestamps in .srt
This commit is contained in:
parent
27b785dcfc
commit
c9ae74d6bc
|
@ -3,6 +3,8 @@ import { join } from 'path'
|
||||||
import * as srt2vtt from 'srt-to-vtt'
|
import * as srt2vtt from 'srt-to-vtt'
|
||||||
import { MVideoCaption } from '@server/types/models'
|
import { MVideoCaption } from '@server/types/models'
|
||||||
import { CONFIG } from '../initializers/config'
|
import { CONFIG } from '../initializers/config'
|
||||||
|
import { pipelinePromise } from './core-utils'
|
||||||
|
import { Transform } from 'stream'
|
||||||
|
|
||||||
async function moveAndProcessCaptionFile (physicalFile: { filename: string, path: string }, videoCaption: MVideoCaption) {
|
async function moveAndProcessCaptionFile (physicalFile: { filename: string, path: string }, videoCaption: MVideoCaption) {
|
||||||
const videoCaptionsDir = CONFIG.STORAGE.CAPTIONS_DIR
|
const videoCaptionsDir = CONFIG.STORAGE.CAPTIONS_DIR
|
||||||
|
@ -30,17 +32,22 @@ export {
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
function convertSrtToVtt (source: string, destination: string) {
|
function convertSrtToVtt (source: string, destination: string) {
|
||||||
return new Promise<void>((res, rej) => {
|
const fixVTT = new Transform({
|
||||||
const file = createReadStream(source)
|
transform: (chunk, _encoding, cb) => {
|
||||||
const converter = srt2vtt()
|
let block: string = chunk.toString()
|
||||||
const writer = createWriteStream(destination)
|
|
||||||
|
|
||||||
for (const s of [ file, converter, writer ]) {
|
block = block.replace(/(\d\d:\d\d:\d\d)(\s)/g, '$1.000$2')
|
||||||
s.on('error', err => rej(err))
|
.replace(/(\d\d:\d\d:\d\d),(\d)(\s)/g, '$1.00$2$3')
|
||||||
|
.replace(/(\d\d:\d\d:\d\d),(\d\d)(\s)/g, '$1.0$2$3')
|
||||||
|
|
||||||
|
return cb(undefined, block)
|
||||||
}
|
}
|
||||||
|
|
||||||
return file.pipe(converter)
|
|
||||||
.pipe(writer)
|
|
||||||
.on('finish', () => res())
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
return pipelinePromise(
|
||||||
|
createReadStream(source),
|
||||||
|
srt2vtt(),
|
||||||
|
fixVTT,
|
||||||
|
createWriteStream(destination)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue