iceshrimp/src/services/drive/generate-video-thumbnail.ts
MeiMei 0a8cff4f3c アニメーションを自動再生しないオプション (#4131)
* Refactor

* settings

* Media Proxy

* Replace API response
2019-02-05 03:01:36 +09:00

34 lines
782 B
TypeScript

import * as fs from 'fs';
import * as tmp from 'tmp';
import { IImage, ConvertToJpeg } from './image-processor';
const ThumbnailGenerator = require('video-thumbnail-generator').default;
export async function GenerateVideoThumbnail(path: string): Promise<IImage> {
const [outDir, cleanup] = await new Promise<[string, any]>((res, rej) => {
tmp.dir((e, path, cleanup) => {
if (e) return rej(e);
res([path, cleanup]);
});
});
const tg = new ThumbnailGenerator({
sourcePath: path,
thumbnailPath: outDir,
});
await tg.generateOneByPercent(5, {
size: '100%',
filename: 'output.png',
});
const outPath = `${outDir}/output.png`;
const thumbnail = await ConvertToJpeg(outPath, 498, 280);
// cleanup
fs.unlinkSync(outPath);
cleanup();
return thumbnail;
}