mirror of
				https://github.com/immich-app/immich.git
				synced 2025-11-04 03:27:09 -05:00 
			
		
		
		
	fix(server): add fallback for video thumbnail generation (#10034)
they called me a madman
This commit is contained in:
		
							parent
							
								
									69193598cb
								
							
						
					
					
						commit
						62f8bd80f4
					
				@ -300,7 +300,7 @@ describe(MediaService.name, () => {
 | 
				
			|||||||
            '-frames:v 1',
 | 
					            '-frames:v 1',
 | 
				
			||||||
            '-update 1',
 | 
					            '-update 1',
 | 
				
			||||||
            '-v verbose',
 | 
					            '-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=gbrpf32le`,
 | 
					            String.raw`-vf fps=12:round=up,thumbnail=12,select=gt(scene\,0.1)-eq(prev_selected_n\,n)+isnan(prev_selected_n)+gt(n\,20),trim=end_frame=2,reverse,scale=-2:1440:flags=lanczos+accurate_rnd+full_chroma_int:out_color_matrix=601:out_range=pc,format=yuv420p`,
 | 
				
			||||||
          ],
 | 
					          ],
 | 
				
			||||||
          twoPass: false,
 | 
					          twoPass: false,
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
@ -327,7 +327,7 @@ describe(MediaService.name, () => {
 | 
				
			|||||||
            '-frames:v 1',
 | 
					            '-frames:v 1',
 | 
				
			||||||
            '-update 1',
 | 
					            '-update 1',
 | 
				
			||||||
            '-v verbose',
 | 
					            '-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=gbrpf32le`,
 | 
					            String.raw`-vf fps=12:round=up,thumbnail=12,select=gt(scene\,0.1)-eq(prev_selected_n\,n)+isnan(prev_selected_n)+gt(n\,20),trim=end_frame=2,reverse,zscale=t=linear:npl=100,tonemap=hable:desat=0,zscale=p=bt709:t=601:m=bt470bg:range=pc,format=yuv420p`,
 | 
				
			||||||
          ],
 | 
					          ],
 | 
				
			||||||
          twoPass: false,
 | 
					          twoPass: false,
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
@ -356,7 +356,7 @@ describe(MediaService.name, () => {
 | 
				
			|||||||
            '-frames:v 1',
 | 
					            '-frames:v 1',
 | 
				
			||||||
            '-update 1',
 | 
					            '-update 1',
 | 
				
			||||||
            '-v verbose',
 | 
					            '-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=gbrpf32le`,
 | 
					            String.raw`-vf fps=12:round=up,thumbnail=12,select=gt(scene\,0.1)-eq(prev_selected_n\,n)+isnan(prev_selected_n)+gt(n\,20),trim=end_frame=2,reverse,zscale=t=linear:npl=100,tonemap=hable:desat=0,zscale=p=bt709:t=601:m=bt470bg:range=pc,format=yuv420p`,
 | 
				
			||||||
          ],
 | 
					          ],
 | 
				
			||||||
          twoPass: false,
 | 
					          twoPass: false,
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
 | 
				
			|||||||
@ -392,12 +392,18 @@ export class ThumbnailConfig extends BaseConfig {
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  getFilterOptions(videoStream: VideoStreamInfo): string[] {
 | 
					  getFilterOptions(videoStream: VideoStreamInfo): string[] {
 | 
				
			||||||
    const options = ['fps=12', 'thumbnail=12', `select=gt(scene\\,0.1)+gt(n\\,20)`];
 | 
					    const options = [
 | 
				
			||||||
 | 
					      'fps=12:round=up',
 | 
				
			||||||
 | 
					      'thumbnail=12',
 | 
				
			||||||
 | 
					      String.raw`select=gt(scene\,0.1)-eq(prev_selected_n\,n)+isnan(prev_selected_n)+gt(n\,20)`,
 | 
				
			||||||
 | 
					      'trim=end_frame=2',
 | 
				
			||||||
 | 
					      'reverse',
 | 
				
			||||||
 | 
					    ];
 | 
				
			||||||
    if (this.shouldScale(videoStream)) {
 | 
					    if (this.shouldScale(videoStream)) {
 | 
				
			||||||
      options.push(`scale=${this.getScaling(videoStream)}`);
 | 
					      options.push(`scale=${this.getScaling(videoStream)}`);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    options.push(...this.getToneMapping(videoStream), 'format=gbrpf32le');
 | 
					    options.push(...this.getToneMapping(videoStream), 'format=yuv420p');
 | 
				
			||||||
    return options;
 | 
					    return options;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user