summaryrefslogtreecommitdiff
path: root/src/services/drive/generate-video-thumbnail.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/services/drive/generate-video-thumbnail.ts')
-rw-r--r--src/services/drive/generate-video-thumbnail.ts24
1 files changed, 14 insertions, 10 deletions
diff --git a/src/services/drive/generate-video-thumbnail.ts b/src/services/drive/generate-video-thumbnail.ts
index c2646182db..f0adc7c338 100644
--- a/src/services/drive/generate-video-thumbnail.ts
+++ b/src/services/drive/generate-video-thumbnail.ts
@@ -1,7 +1,7 @@
import * as fs from 'fs';
import * as tmp from 'tmp';
import { IImage, convertToJpeg } from './image-processor';
-const ThumbnailGenerator = require('video-thumbnail-generator').default;
+import * as FFmpeg from 'fluent-ffmpeg';
export async function GenerateVideoThumbnail(path: string): Promise<IImage> {
const [outDir, cleanup] = await new Promise<[string, any]>((res, rej) => {
@@ -11,14 +11,18 @@ export async function GenerateVideoThumbnail(path: string): Promise<IImage> {
});
});
- const tg = new ThumbnailGenerator({
- sourcePath: path,
- thumbnailPath: outDir,
- });
-
- await tg.generateOneByPercent(5, {
- size: '100%',
- filename: 'output.png',
+ await new Promise((res, rej) => {
+ FFmpeg({
+ source: path
+ })
+ .on('end', res)
+ .on('error', rej)
+ .screenshot({
+ folder: outDir,
+ filename: 'output.png',
+ count: 1,
+ timestamps: ['5%']
+ });
});
const outPath = `${outDir}/output.png`;
@@ -26,7 +30,7 @@ export async function GenerateVideoThumbnail(path: string): Promise<IImage> {
const thumbnail = await convertToJpeg(outPath, 498, 280);
// cleanup
- fs.unlinkSync(outPath);
+ await fs.promises.unlink(outPath);
cleanup();
return thumbnail;