diff --git a/internal/manager/config/config.go b/internal/manager/config/config.go index bbde86c87..e5e770d96 100644 --- a/internal/manager/config/config.go +++ b/internal/manager/config/config.go @@ -84,7 +84,7 @@ const ( parallelTasksDefault = 1 SpriteInterval = "sprite_interval" - SpriteIntervalDefault = 0 + SpriteIntervalDefault = 30 MinimumSprites = "minimum_sprites" MinimumSpritesDefault = 10 @@ -982,12 +982,20 @@ func (i *Config) GetParallelTasksWithAutoDetection() int { // GetSpriteInterval returns the time to be between each scrubber sprite func (i *Config) GetSpriteInterval() int { - return i.getInt(SpriteInterval) + value := i.getInt(SpriteInterval) + if value <= 0 { + return SpriteIntervalDefault + } + return value } // GetMinimumSprites return the minimum number of sprites that have to be generated func (i *Config) GetMinimumSprites() int { - return i.getInt(MinimumSprites) + value := i.getInt(MinimumSprites) + if value <= 0 { + return MinimumSpritesDefault + } + return value } func (i *Config) GetPreviewAudio() bool { diff --git a/internal/manager/generator_sprite.go b/internal/manager/generator_sprite.go index 1cc50f786..5217f1bdd 100644 --- a/internal/manager/generator_sprite.go +++ b/internal/manager/generator_sprite.go @@ -16,10 +16,6 @@ import ( "github.com/stashapp/stash/pkg/scene/generate" ) -const ( - DefaultSpriteInterval = 30 -) - type SpriteGenerator struct { Info *generatorInfo @@ -41,13 +37,11 @@ func NewSpriteGenerator(videoFile ffmpeg.VideoFile, videoChecksum string, imageO } slowSeek := false - spriteInterval := DefaultSpriteInterval config := config.GetInstance() - if config.GetSpriteInterval() != 0 { - spriteInterval = config.GetSpriteInterval() - } + spriteInterval := config.GetSpriteInterval() minimumSpriteCount := config.GetMinimumSprites() + spriteCount := int64(math.Ceil(videoFile.VideoStreamDuration / float64(spriteInterval))) // For files with small duration / low frame count try to seek using frame number intead of seconds