compute fps

master
Bel LaPointe 2024-09-19 07:44:48 -04:00
parent 03cd2dedcc
commit 3dd752cb34
1 changed files with 16 additions and 4 deletions

View File

@ -67,17 +67,29 @@ func Run(ctx context.Context, args []string) error {
if seriesHasMovement, err := seriesHasMovement(ctx, seriesFiles, movementInterval); err != nil { if seriesHasMovement, err := seriesHasMovement(ctx, seriesFiles, movementInterval); err != nil {
return err return err
} else if seriesHasMovement { } 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") outd := strings.ReplaceAll(cam, "record", "movement")
os.MkdirAll(outd, os.ModePerm) os.MkdirAll(outd, os.ModePerm)
cmd := exec.CommandContext(ctx, cmd := exec.CommandContext(ctx,
"ffmpeg", "ffmpeg",
"-y", "-y",
"-framerate", "3", "-framerate", strconv.Itoa(fps),
"-pattern_type", "glob", "-pattern_type", "glob",
"-i", path.Join(cam, series)+".*.jpg", "-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", strconv.Itoa(fps),
"-r", "3",
path.Join(outd, series+".mp4"), path.Join(outd, series+".mp4"),
) )
if out, err := cmd.CombinedOutput(); err != nil { if out, err := cmd.CombinedOutput(); err != nil {