fix: GenerateVideoThumbnail (#8825)

* fix: GenerateVideoThumbnail

* CHANGELOG

* fix cleanup

* Revert "fix cleanup"

This reverts commit d54cf8262ac01a3deb6b8dd7689ec144d4d09ea8.
This commit is contained in:
MeiMei 2022-06-14 23:02:14 +09:00 committed by GitHub
parent 3a42fe50c6
commit 1d8ec102f1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 7 deletions

View file

@ -9,6 +9,13 @@
You should also include the user name that made the change. You should also include the user name that made the change.
--> -->
## 12.x.x (unreleased)
### Improvements
### Bugfixes
- Fix GenerateVideoThumbnail failed @mei23
## 12.111.1 (2022/06/13) ## 12.111.1 (2022/06/13)
### Bugfixes ### Bugfixes

View file

@ -1,12 +1,10 @@
import * as fs from 'node:fs'; import * as fs from 'node:fs';
import * as path from 'node:path'; import { createTempDir } from '@/misc/create-temp.js';
import { createTemp } from '@/misc/create-temp.js';
import { IImage, convertToJpeg } from './image-processor.js'; import { IImage, convertToJpeg } from './image-processor.js';
import FFmpeg from 'fluent-ffmpeg'; import FFmpeg from 'fluent-ffmpeg';
export async function GenerateVideoThumbnail(source: string): Promise<IImage> { export async function GenerateVideoThumbnail(source: string): Promise<IImage> {
const [file, cleanup] = await createTemp(); const [dir, cleanup] = await createTempDir();
const parsed = path.parse(file);
try { try {
await new Promise((res, rej) => { await new Promise((res, rej) => {
@ -16,15 +14,15 @@ export async function GenerateVideoThumbnail(source: string): Promise<IImage> {
.on('end', res) .on('end', res)
.on('error', rej) .on('error', rej)
.screenshot({ .screenshot({
folder: parsed.dir, folder: dir,
filename: parsed.base, filename: 'out.png', // must have .png extension
count: 1, count: 1,
timestamps: ['5%'], timestamps: ['5%'],
}); });
}); });
// JPEGに変換 (Webpでもいいが、MastodonはWebpをサポートせず表示できなくなる) // JPEGに変換 (Webpでもいいが、MastodonはWebpをサポートせず表示できなくなる)
return await convertToJpeg(file, 498, 280); return await convertToJpeg(`${dir}/out.png`, 498, 280);
} finally { } finally {
cleanup(); cleanup();
} }