diff --git a/server/src/services/media.service.spec.ts b/server/src/services/media.service.spec.ts index 467154fd45..1b935b19b7 100644 --- a/server/src/services/media.service.spec.ts +++ b/server/src/services/media.service.spec.ts @@ -300,7 +300,7 @@ describe(MediaService.name, () => { '-frames:v 1', '-update 1', '-v verbose', - `-vf fps=12,thumbnail=12,select=gt(scene\\,0.1)+gt(n\\,20),scale=-2:1440:flags=lanczos+accurate_rnd+full_chroma_int:out_color_matrix=601:out_range=pc,format=yuv420p`, + `-vf fps=12,thumbnail=12,select=gt(scene\\,0.1)+gt(n\\,20),scale=-2:1440:flags=lanczos+accurate_rnd+full_chroma_int:out_color_matrix=601:out_range=pc,format=gbrpf32le`, ], twoPass: false, }, @@ -327,7 +327,7 @@ describe(MediaService.name, () => { '-frames:v 1', '-update 1', '-v verbose', - `-vf fps=12,thumbnail=12,select=gt(scene\\,0.1)+gt(n\\,20),zscale=t=linear:npl=100,tonemap=hable:desat=0,zscale=p=bt709:t=601:m=bt470bg:range=pc,format=yuv420p`, + `-vf fps=12,thumbnail=12,select=gt(scene\\,0.1)+gt(n\\,20),zscale=t=linear:npl=100,tonemap=hable:desat=0,zscale=p=bt709:t=601:m=bt470bg:range=pc,format=gbrpf32le`, ], twoPass: false, }, @@ -356,7 +356,7 @@ describe(MediaService.name, () => { '-frames:v 1', '-update 1', '-v verbose', - `-vf fps=12,thumbnail=12,select=gt(scene\\,0.1)+gt(n\\,20),zscale=t=linear:npl=100,tonemap=hable:desat=0,zscale=p=bt709:t=601:m=bt470bg:range=pc,format=yuv420p`, + `-vf fps=12,thumbnail=12,select=gt(scene\\,0.1)+gt(n\\,20),zscale=t=linear:npl=100,tonemap=hable:desat=0,zscale=p=bt709:t=601:m=bt470bg:range=pc,format=gbrpf32le`, ], twoPass: false, }, diff --git a/server/src/utils/media.ts b/server/src/utils/media.ts index 6bf8d413ac..cbbb754611 100644 --- a/server/src/utils/media.ts +++ b/server/src/utils/media.ts @@ -392,7 +392,13 @@ export class ThumbnailConfig extends BaseConfig { } getFilterOptions(videoStream: VideoStreamInfo): string[] { - return ['fps=12', 'thumbnail=12', `select=gt(scene\\,0.1)+gt(n\\,20)`, ...super.getFilterOptions(videoStream)]; + const options = ['fps=12', 'thumbnail=12', `select=gt(scene\\,0.1)+gt(n\\,20)`]; + if (this.shouldScale(videoStream)) { + options.push(`scale=${this.getScaling(videoStream)}`); + } + + options.push(...this.getToneMapping(videoStream), 'format=gbrpf32le'); + return options; } getPresetOptions() {