diff options
| author | rinsuki <428rinsuki+git@gmail.com> | 2019-07-20 03:28:14 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2019-07-20 03:28:14 +0900 |
| commit | 7ac13a386c96dbecd7b880baeb049219918857c1 (patch) | |
| tree | bf4e9abe89cd3bef84bdef20fd63b8e512073db7 /src | |
| parent | Improve usability of quote note by pasting url (#5196) (diff) | |
| download | misskey-7ac13a386c96dbecd7b880baeb049219918857c1.tar.gz misskey-7ac13a386c96dbecd7b880baeb049219918857c1.tar.bz2 misskey-7ac13a386c96dbecd7b880baeb049219918857c1.zip | |
Improve GenerateVideoThumbnail (#5186)
* Improve GenerateVideoThumbnail
* use fluent-ffmpeg
* Update src/services/drive/generate-video-thumbnail.ts
Diffstat (limited to 'src')
| -rw-r--r-- | src/services/drive/generate-video-thumbnail.ts | 24 |
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; |