summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMeiMei <30769358+mei23@users.noreply.github.com>2019-02-02 23:30:34 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2019-02-02 23:30:34 +0900
commit84931003eab16ed72da952949b38dbff4e80f44c (patch)
tree72799431b04535e0faa137642038721674aa1283 /src
parent[Client] Resolve #3226 (diff)
downloadsharkey-84931003eab16ed72da952949b38dbff4e80f44c.tar.gz
sharkey-84931003eab16ed72da952949b38dbff4e80f44c.tar.bz2
sharkey-84931003eab16ed72da952949b38dbff4e80f44c.zip
Fix video thumbnails (#4095)
* Fix video thumbnails * Fix import
Diffstat (limited to 'src')
-rw-r--r--src/services/drive/add-file.ts2
-rw-r--r--src/services/drive/generate-video-thumbnail.ts18
2 files changed, 14 insertions, 6 deletions
diff --git a/src/services/drive/add-file.ts b/src/services/drive/add-file.ts
index 1d5f31c504..c6fa44a3ef 100644
--- a/src/services/drive/add-file.ts
+++ b/src/services/drive/add-file.ts
@@ -122,8 +122,6 @@ async function save(path: string, name: string, type: string, hash: string, size
} else if (type.startsWith('video/')) {
try {
thumbnail = await GenerateVideoThumbnail(path);
- thumbnailExt = 'png';
- thumbnailType = 'image/png';
} catch (e) {
console.log(`GenerateVideoThumbnail failed: ${e}`);
}
diff --git a/src/services/drive/generate-video-thumbnail.ts b/src/services/drive/generate-video-thumbnail.ts
index 0ee69be4a7..14b3b98f97 100644
--- a/src/services/drive/generate-video-thumbnail.ts
+++ b/src/services/drive/generate-video-thumbnail.ts
@@ -1,5 +1,6 @@
import * as fs from 'fs';
import * as tmp from 'tmp';
+import * as sharp from 'sharp';
const ThumbnailGenerator = require('video-thumbnail-generator').default;
export async function GenerateVideoThumbnail(path: string): Promise<Buffer> {
@@ -15,18 +16,27 @@ export async function GenerateVideoThumbnail(path: string): Promise<Buffer> {
thumbnailPath: outDir,
});
- await tg.generateOneByPercent(10, {
- size: '498x280',
+ await tg.generateOneByPercent(5, {
+ size: '100%',
filename: 'output.png',
});
const outPath = `${outDir}/output.png`;
- const buffer = fs.readFileSync(outPath);
+ const thumbnail = await sharp(outPath)
+ .resize(498, 280, {
+ fit: 'inside',
+ withoutEnlargement: true
+ })
+ .jpeg({
+ quality: 85,
+ progressive: true
+ })
+ .toBuffer();
// cleanup
fs.unlinkSync(outPath);
cleanup();
- return buffer;
+ return thumbnail;
}