diff --git a/testdata/ffmpeg.d/cmd/prune/main.go b/testdata/ffmpeg.d/cmd/prune/main.go index 7c6b6cd..0262415 100644 --- a/testdata/ffmpeg.d/cmd/prune/main.go +++ b/testdata/ffmpeg.d/cmd/prune/main.go @@ -67,17 +67,29 @@ func Run(ctx context.Context, args []string) error { if seriesHasMovement, err := seriesHasMovement(ctx, seriesFiles, movementInterval); err != nil { return err } else if seriesHasMovement { - log.Println("found movement in", series) + firstFileInfo, err := os.Stat(seriesFiles[0]) + if err != nil { + return err + } + lastFileInfo, err := os.Stat(seriesFiles[len(seriesFiles)-1]) + if err != nil { + return err + } + durationSeconds := lastFileInfo.ModTime().Sub(firstFileInfo.ModTime()).Seconds() + frames := len(seriesFiles) + fps := int(float64(frames) / durationSeconds) + + log.Println("found movement in", series, "over", durationSeconds, "seconds at", fps, "fps") + outd := strings.ReplaceAll(cam, "record", "movement") os.MkdirAll(outd, os.ModePerm) cmd := exec.CommandContext(ctx, "ffmpeg", "-y", - "-framerate", "3", + "-framerate", strconv.Itoa(fps), "-pattern_type", "glob", "-i", path.Join(cam, series)+".*.jpg", - //"-filter_complex", "fps=3,scale=-1:-1:flags=lanczos[x];[x]split[x1][x2];[x1]palettegen[p];[x2][p]paletteuse", - "-r", "3", + "-r", strconv.Itoa(fps), path.Join(outd, series+".mp4"), ) if out, err := cmd.CombinedOutput(); err != nil {