upd: add config option to enable builtin video thumbnail generator
This commit is contained in:
parent
a3c302e756
commit
634259d600
|
@ -198,6 +198,11 @@ proxyRemoteFiles: true
|
|||
# https://example.com/thumbnail.webp?thumbnail=1&url=https%3A%2F%2Fstorage.example.com%2Fpath%2Fto%2Fvideo.mp4
|
||||
#videoThumbnailGenerator: https://example.com
|
||||
|
||||
# Enables the built-in thumbnail generator for remote videos. (default: false)
|
||||
# Only useful if "Cache remote files" is disabled, and "videoThumbnailGenerator" is unset.
|
||||
# Without it, remote video files that are not cached will not have any thumbnails.
|
||||
#enableBuiltinVideoThumbnailGenerator: false
|
||||
|
||||
# Sign to ActivityPub GET request (default: true)
|
||||
signToActivityPubGet: true
|
||||
# check that inbound ActivityPub GET requests are signed ("authorized fetch")
|
||||
|
|
|
@ -213,6 +213,11 @@ proxyRemoteFiles: true
|
|||
# https://example.com/thumbnail.webp?thumbnail=1&url=https%3A%2F%2Fstorage.example.com%2Fpath%2Fto%2Fvideo.mp4
|
||||
#videoThumbnailGenerator: https://example.com
|
||||
|
||||
# Enables the built-in thumbnail generator for remote videos. (default: false)
|
||||
# Only useful if "Cache remote files" is disabled, and "videoThumbnailGenerator" is unset.
|
||||
# Without it, remote video files that are not cached will not have any thumbnails.
|
||||
#enableBuiltinVideoThumbnailGenerator: false
|
||||
|
||||
# Sign to ActivityPub GET request (default: true)
|
||||
signToActivityPubGet: true
|
||||
# check that inbound ActivityPub GET requests are signed ("authorized fetch")
|
||||
|
|
|
@ -86,6 +86,7 @@ type Source = {
|
|||
mediaProxy?: string;
|
||||
proxyRemoteFiles?: boolean;
|
||||
videoThumbnailGenerator?: string;
|
||||
enableBuiltinVideoThumbnailGenerator?: boolean;
|
||||
|
||||
customMOTD?: string[];
|
||||
|
||||
|
@ -167,6 +168,7 @@ export type Config = {
|
|||
mediaProxy: string;
|
||||
externalMediaProxyEnabled: boolean;
|
||||
videoThumbnailGenerator: string | null;
|
||||
enableBuiltinVideoThumbnailGenerator: boolean;
|
||||
redis: RedisOptions & RedisOptionsSource;
|
||||
redisForPubsub: RedisOptions & RedisOptionsSource;
|
||||
redisForJobQueue: RedisOptions & RedisOptionsSource;
|
||||
|
@ -272,6 +274,7 @@ export function loadConfig(): Config {
|
|||
videoThumbnailGenerator: config.videoThumbnailGenerator ?
|
||||
config.videoThumbnailGenerator.endsWith('/') ? config.videoThumbnailGenerator.substring(0, config.videoThumbnailGenerator.length - 1) : config.videoThumbnailGenerator
|
||||
: null,
|
||||
enableBuiltinVideoThumbnailGenerator: config.enableBuiltinVideoThumbnailGenerator ?? false,
|
||||
userAgent: `Misskey/${version} (${config.url})`,
|
||||
clientEntry: clientManifest['src/_boot_.ts'],
|
||||
clientManifestExists: clientManifestExists,
|
||||
|
|
|
@ -51,14 +51,16 @@ export class VideoProcessingService {
|
|||
@bindThis
|
||||
public getExternalVideoThumbnailUrl(url: string): string | null {
|
||||
if (this.config.videoThumbnailGenerator == null) {
|
||||
if (this.config.enableBuiltinVideoThumbnailGenerator) {
|
||||
return appendQuery(
|
||||
`${this.config.url}/proxy/thumbnail.webp`,
|
||||
query({
|
||||
url,
|
||||
}),
|
||||
query({ url }),
|
||||
);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
return appendQuery(
|
||||
`${this.config.videoThumbnailGenerator}/thumbnail.webp`,
|
||||
query({
|
||||
|
|
|
@ -83,12 +83,14 @@ export class FileServerService {
|
|||
.catch(err => this.errorHandler(request, reply, err));
|
||||
});
|
||||
|
||||
if (this.config.enableBuiltinVideoThumbnailGenerator) {
|
||||
fastify.get<{
|
||||
Querystring: { url: string; };
|
||||
}>('/proxy/thumbnail.webp', async (request, reply) => {
|
||||
return await this.videoThumbnailHandler(request, reply)
|
||||
.catch(err => this.errorHandler(request, reply, err));
|
||||
});
|
||||
}
|
||||
|
||||
fastify.get<{
|
||||
Params: { url: string; };
|
||||
|
@ -395,7 +397,7 @@ export class FileServerService {
|
|||
if (file === '404') {
|
||||
reply.code(404);
|
||||
reply.header('Cache-Control', 'max-age=86400');
|
||||
return reply.sendFile('/dummy.png', assets); // TODO: return webp
|
||||
return reply.sendFile('/dummy.png', assets);
|
||||
}
|
||||
|
||||
if (file === '204') {
|
||||
|
|
Loading…
Reference in New Issue