From 38ea2b81286982691500af7a680d1dd2e151368d Mon Sep 17 00:00:00 2001 From: Bel LaPointe <153096461+breel-render@users.noreply.github.com> Date: Wed, 18 Sep 2024 11:26:31 -0400 Subject: [PATCH] passes tests by converting a series to a webm --- testdata/ffmpeg.d/cmd/prune/main.go | 25 +++++++++++++++--------- testdata/ffmpeg.d/cmd/prune/main_test.go | 23 +++++----------------- 2 files changed, 21 insertions(+), 27 deletions(-) diff --git a/testdata/ffmpeg.d/cmd/prune/main.go b/testdata/ffmpeg.d/cmd/prune/main.go index ac32481..e8dfbc7 100644 --- a/testdata/ffmpeg.d/cmd/prune/main.go +++ b/testdata/ffmpeg.d/cmd/prune/main.go @@ -66,16 +66,23 @@ func Run(ctx context.Context, args []string) error { if seriesHasMovement, err := seriesHasMovement(ctx, seriesFiles, movementInterval); err != nil { return err } else if seriesHasMovement { - for _, seriesFile := range seriesFiles { - if err := mv(strings.ReplaceAll(seriesFile, "record", "movement"), seriesFile); err != nil { - return fmt.Errorf("failed to mv series %s: %w", series, err) - } + outd := strings.ReplaceAll(cam, "record", "movement") + os.MkdirAll(outd, os.ModePerm) + cmd := exec.CommandContext(ctx, "ffmpeg", + "-y", + "-framerate", "1", + "-pattern_type", "glob", + "-i", path.Join(cam, series)+".*.jpg", + "-r", "3", + path.Join(outd, series+".webm"), + ) + if out, err := cmd.CombinedOutput(); err != nil { + return fmt.Errorf("failed to webm series %s: (%w) %s", series, err, out) } - } else { - for _, seriesFile := range seriesFiles { - if err := os.Remove(seriesFile); err != nil { - return fmt.Errorf("failed to rm series %s[%s]: %w", series, seriesFile, err) - } + } + for _, seriesFile := range seriesFiles { + if err := os.Remove(seriesFile); err != nil { + return fmt.Errorf("failed to rm series %s[%s]: %w", series, seriesFile, err) } } return nil diff --git a/testdata/ffmpeg.d/cmd/prune/main_test.go b/testdata/ffmpeg.d/cmd/prune/main_test.go index b07bdff..ea2ae32 100644 --- a/testdata/ffmpeg.d/cmd/prune/main_test.go +++ b/testdata/ffmpeg.d/cmd/prune/main_test.go @@ -1,7 +1,6 @@ package main import ( - "bytes" "context" "os" "path" @@ -48,35 +47,23 @@ func TestRun(t *testing.T) { } if err := Run(context.Background(), []string{path.Dir(d), "1s"}); err != nil { + t.Error(err) + time.Sleep(time.Minute) t.Fatal(err) } if results, err := lsf(path.Join(path.Dir(d), "movement")); err != nil { t.Fatal("failed to lsf for results:", err) - } else if len(results) != 4 { + } else if len(results) != 1 { t.Fatal(results) - } else if path.Base(results[0]) != "series.0.jpg" { + } else if path.Base(results[0]) != "series.webm" { t.Fatal(results) - } else if b0, err := os.ReadFile(results[0]); err != nil || !bytes.Equal(a, b0) { - t.Fatal("series.0.jpg changed", err) - } else if path.Base(results[1]) != "series.1.jpg" { - t.Fatal(results) - } else if b1, err := os.ReadFile(results[1]); err != nil || !bytes.Equal(a, b1) { - t.Fatal("series.1.jpg changed", err) - } else if path.Base(results[2]) != "series.2.jpg" { - t.Fatal(results) - } else if b2, err := os.ReadFile(results[2]); err != nil || !bytes.Equal(b, b2) { - t.Fatal("series.2.jpg changed", err) - } else if path.Base(results[3]) != "series.3.jpg" { - t.Fatal(results) - } else if b3, err := os.ReadFile(results[3]); err != nil || !bytes.Equal(b, b3) { - t.Fatal("series.3.jpg changed", err) } if records, err := lsf(d); err != nil { t.Fatal(err) } else if len(records) != 1 { - t.Fatal(err) + t.Fatal(records) } else if path.Base(records[0]) != "zlast.0.jpg" { t.Fatal(err) }