|
@@ -40,9 +40,7 @@ export function createThumbnail(image: string, thumbnail: string) {
|
|
.toFile(thumbnail)
|
|
.toFile(thumbnail)
|
|
}
|
|
}
|
|
|
|
|
|
-export function videoScreenshot(video: string, path: [string, string]) {
|
|
|
|
- const filePath = path.join('/')
|
|
|
|
- const thumbnail = `${filePath}.thmb`
|
|
|
|
|
|
+export function videoScreenshot(video: string, path: string) {
|
|
return new Promise((resolve, reject) => {
|
|
return new Promise((resolve, reject) => {
|
|
// ffmpeg(video)
|
|
// ffmpeg(video)
|
|
// .screenshot({ folder, filename: filename, ...screenshotOptions })
|
|
// .screenshot({ folder, filename: filename, ...screenshotOptions })
|
|
@@ -52,16 +50,15 @@ export function videoScreenshot(video: string, path: [string, string]) {
|
|
// })
|
|
// })
|
|
// .on('error', (error) => reject(error))
|
|
// .on('error', (error) => reject(error))
|
|
ffmpeg(video)
|
|
ffmpeg(video)
|
|
|
|
+ .inputOption('-itsscale', '0.15')
|
|
.outputOption(
|
|
.outputOption(
|
|
'-vf',
|
|
'-vf',
|
|
- 'fps=10,scale=200:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse',
|
|
|
|
|
|
+ 'fps=5,scale=200:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse',
|
|
'-loop',
|
|
'-loop',
|
|
- '0',
|
|
|
|
- '-t',
|
|
|
|
- '3'
|
|
|
|
|
|
+ '-1'
|
|
)
|
|
)
|
|
- .save(thumbnail)
|
|
|
|
- .on('end', () => resolve(thumbnail))
|
|
|
|
|
|
+ .save(path)
|
|
|
|
+ .on('end', () => resolve(path))
|
|
.on('error', (error) => reject(error))
|
|
.on('error', (error) => reject(error))
|
|
})
|
|
})
|
|
}
|
|
}
|
|
@@ -95,18 +92,17 @@ export function mediumMetadata(medium: string): {} {
|
|
|
|
|
|
export async function processImage(stream: any, path: [string, string]) {
|
|
export async function processImage(stream: any, path: [string, string]) {
|
|
const filePath = path.join('/')
|
|
const filePath = path.join('/')
|
|
- const thumbnail = `${filePath}.thmb`
|
|
|
|
|
|
+ const thumbnail = `${filePath}.jpg`
|
|
const metadata = await imageResizeConvertJpg(stream, filePath)
|
|
const metadata = await imageResizeConvertJpg(stream, filePath)
|
|
await createThumbnail(filePath, thumbnail)
|
|
await createThumbnail(filePath, thumbnail)
|
|
return { thumbnail, ...metadata }
|
|
return { thumbnail, ...metadata }
|
|
}
|
|
}
|
|
|
|
|
|
export async function processVideo(stream: any, path: [string, string]) {
|
|
export async function processVideo(stream: any, path: [string, string]) {
|
|
- const [folder] = path
|
|
|
|
const filePath = path.join('/')
|
|
const filePath = path.join('/')
|
|
- const thumbnail = `${filePath}.thmb`
|
|
|
|
|
|
+ const thumbnail = `${filePath}.gif`
|
|
await saveStreamToFile(stream, path)
|
|
await saveStreamToFile(stream, path)
|
|
- await videoScreenshot(filePath, [folder, thumbnail])
|
|
|
|
|
|
+ await videoScreenshot(filePath, thumbnail)
|
|
const metadata = await mediumMetadata(filePath)
|
|
const metadata = await mediumMetadata(filePath)
|
|
return { thumbnail, ...metadata }
|
|
return { thumbnail, ...metadata }
|
|
}
|
|
}
|