mirror of
https://github.com/stashapp/stash.git
synced 2025-12-18 04:44:37 +03:00
Fix various generate issues (#1322)
Co-authored-by: WithoutPants <53250216+WithoutPants@users.noreply.github.com>
This commit is contained in:
@@ -58,11 +58,6 @@ func (g *PreviewGenerator) Generate() error {
|
||||
}
|
||||
|
||||
encoder := ffmpeg.NewEncoder(instance.FFMPEGPath)
|
||||
|
||||
if err := g.generateConcatFile(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if g.GenerateVideo {
|
||||
if err := g.generateVideo(&encoder, false); err != nil {
|
||||
logger.Warnf("[generator] failed generating scene preview, trying fallback")
|
||||
@@ -101,18 +96,32 @@ func (g *PreviewGenerator) generateVideo(encoder *ffmpeg.Encoder, fallback bool)
|
||||
if !g.Overwrite && outputExists {
|
||||
return nil
|
||||
}
|
||||
err := g.generateConcatFile()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
var tmpFiles []string // a list of tmp files used during the preview generation
|
||||
tmpFiles = append(tmpFiles, g.getConcatFilePath()) // add concat filename to tmpFiles
|
||||
defer func() { removeFiles(tmpFiles) }() // remove tmpFiles when done
|
||||
|
||||
stepSize, offset := g.Info.getStepSizeAndOffset()
|
||||
|
||||
durationSegment := g.Info.ChunkDuration
|
||||
if durationSegment < 0.75 { // a very short duration can create files without a video stream
|
||||
durationSegment = 0.75 // use 0.75 in that case
|
||||
logger.Warnf("[generator] Segment duration (%f) too short.Using 0.75 instead.", g.Info.ChunkDuration)
|
||||
}
|
||||
|
||||
for i := 0; i < g.Info.ChunkCount; i++ {
|
||||
time := offset + (float64(i) * stepSize)
|
||||
num := fmt.Sprintf("%.3d", i)
|
||||
filename := "preview_" + g.VideoChecksum + "_" + num + ".mp4"
|
||||
chunkOutputPath := instance.Paths.Generated.GetTmpPath(filename)
|
||||
|
||||
tmpFiles = append(tmpFiles, chunkOutputPath) // add chunk filename to tmpFiles
|
||||
options := ffmpeg.ScenePreviewChunkOptions{
|
||||
StartTime: time,
|
||||
Duration: g.Info.ChunkDuration,
|
||||
Duration: durationSegment,
|
||||
Width: 640,
|
||||
OutputPath: chunkOutputPath,
|
||||
}
|
||||
@@ -152,3 +161,11 @@ func (g *PreviewGenerator) generateImage(encoder *ffmpeg.Encoder) error {
|
||||
func (g *PreviewGenerator) getConcatFilePath() string {
|
||||
return instance.Paths.Generated.GetTmpPath(fmt.Sprintf("files_%s.txt", g.VideoChecksum))
|
||||
}
|
||||
|
||||
func removeFiles(list []string) {
|
||||
for _, f := range list {
|
||||
if err := os.Remove(f); err != nil {
|
||||
logger.Warnf("[generator] Delete error: %s", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user