diff --git a/ffmpeg/ffmpeg.go b/ffmpeg/ffmpeg.go index ffe86d9..f2e3d36 100644 --- a/ffmpeg/ffmpeg.go +++ b/ffmpeg/ffmpeg.go @@ -110,8 +110,10 @@ func (av *AVContext) SelectDuration(ts time.Duration) (err error) { if err = av.SeekDuration(ts); err != nil { return } + return av.ProcessFrames(-1) + } else { + return av.ProcessFrames(1) } - return av.ProcessFrames(-1) } func (av *AVContext) SeekPosition(f float64) error { diff --git a/ffmpeg/ffmpeg_test.go b/ffmpeg/ffmpeg_test.go index f6a8d36..9364107 100644 --- a/ffmpeg/ffmpeg_test.go +++ b/ffmpeg/ffmpeg_test.go @@ -55,7 +55,7 @@ func TestAVContext(t *testing.T) { require.NoError(t, os.MkdirAll(baseDir+"golden/export", 0755)) t.Parallel() for _, filename := range files { - for _, n := range []int{-1, 5, 10, 9999, 99999} { + for _, n := range []int{-1, 1, 5, 10, 9999, 99999} { name := filename if n > -1 { name = fmt.Sprintf("%s-%d", filename, n) @@ -84,6 +84,8 @@ func TestAVContext(t *testing.T) { require.NoError(t, av.SelectDuration(time.Second)) } else if n == 9999 { require.NoError(t, av.SelectPosition(0.7)) + } else if n == 1 { + require.NoError(t, av.SelectDuration(0)) } else if n == 5 { require.NoError(t, av.SelectFrame(n)) } else { diff --git a/testdata/golden/export/alpha-webm.webm-1.jpg b/testdata/golden/export/alpha-webm.webm-1.jpg new file mode 100644 index 0000000..a826544 Binary files /dev/null and b/testdata/golden/export/alpha-webm.webm-1.jpg differ diff --git a/testdata/golden/export/everybody-betray-me.mkv-1.jpg b/testdata/golden/export/everybody-betray-me.mkv-1.jpg new file mode 100644 index 0000000..6ad3311 Binary files /dev/null and b/testdata/golden/export/everybody-betray-me.mkv-1.jpg differ diff --git a/testdata/golden/export/macabre.mp4-1.jpg b/testdata/golden/export/macabre.mp4-1.jpg new file mode 100644 index 0000000..d1ab9d8 Binary files /dev/null and b/testdata/golden/export/macabre.mp4-1.jpg differ diff --git a/testdata/golden/export/schizo.flv-1.jpg b/testdata/golden/export/schizo.flv-1.jpg new file mode 100644 index 0000000..a543ab0 Binary files /dev/null and b/testdata/golden/export/schizo.flv-1.jpg differ diff --git a/testdata/golden/export/schizo_0.mp4-1.jpg b/testdata/golden/export/schizo_0.mp4-1.jpg new file mode 100644 index 0000000..9d49888 Binary files /dev/null and b/testdata/golden/export/schizo_0.mp4-1.jpg differ diff --git a/testdata/golden/export/schizo_180.mp4-1.jpg b/testdata/golden/export/schizo_180.mp4-1.jpg new file mode 100644 index 0000000..df99457 Binary files /dev/null and b/testdata/golden/export/schizo_180.mp4-1.jpg differ diff --git a/testdata/golden/export/schizo_270.mp4-1.jpg b/testdata/golden/export/schizo_270.mp4-1.jpg new file mode 100644 index 0000000..8f2ada3 Binary files /dev/null and b/testdata/golden/export/schizo_270.mp4-1.jpg differ diff --git a/testdata/golden/export/schizo_90.mp4-1.jpg b/testdata/golden/export/schizo_90.mp4-1.jpg new file mode 100644 index 0000000..3ef8b0c Binary files /dev/null and b/testdata/golden/export/schizo_90.mp4-1.jpg differ diff --git a/testdata/golden/export/with_cover.mp3-1.jpg b/testdata/golden/export/with_cover.mp3-1.jpg new file mode 100644 index 0000000..aac8c5c Binary files /dev/null and b/testdata/golden/export/with_cover.mp3-1.jpg differ diff --git a/testdata/golden/meta/alpha-webm.webm-1.meta.json b/testdata/golden/meta/alpha-webm.webm-1.meta.json new file mode 100644 index 0000000..e45c027 --- /dev/null +++ b/testdata/golden/meta/alpha-webm.webm-1.meta.json @@ -0,0 +1 @@ +{"orientation":1,"duration":12040,"width":720,"height":576,"fps":25,"has_video":true,"has_audio":false} \ No newline at end of file diff --git a/testdata/golden/meta/everybody-betray-me.mkv-1.meta.json b/testdata/golden/meta/everybody-betray-me.mkv-1.meta.json new file mode 100644 index 0000000..1444d9e --- /dev/null +++ b/testdata/golden/meta/everybody-betray-me.mkv-1.meta.json @@ -0,0 +1 @@ +{"orientation":1,"duration":7407,"width":640,"height":480,"fps":29.97002997002997,"has_video":true,"has_audio":true} \ No newline at end of file diff --git a/testdata/golden/meta/macabre.mp4-1.meta.json b/testdata/golden/meta/macabre.mp4-1.meta.json new file mode 100644 index 0000000..67cbce9 --- /dev/null +++ b/testdata/golden/meta/macabre.mp4-1.meta.json @@ -0,0 +1 @@ +{"orientation":1,"duration":3925,"width":492,"height":360,"fps":29.97002997002997,"has_video":true,"has_audio":true} \ No newline at end of file diff --git a/testdata/golden/meta/schizo.flv-1.meta.json b/testdata/golden/meta/schizo.flv-1.meta.json new file mode 100644 index 0000000..eaa82ba --- /dev/null +++ b/testdata/golden/meta/schizo.flv-1.meta.json @@ -0,0 +1 @@ +{"orientation":1,"duration":2560,"width":480,"height":360,"fps":29.97002997002997,"has_video":true,"has_audio":true} \ No newline at end of file diff --git a/testdata/golden/meta/schizo_0.mp4-1.meta.json b/testdata/golden/meta/schizo_0.mp4-1.meta.json new file mode 100644 index 0000000..d98cf3c --- /dev/null +++ b/testdata/golden/meta/schizo_0.mp4-1.meta.json @@ -0,0 +1 @@ +{"orientation":1,"duration":2544,"width":480,"height":360,"fps":29.97002997002997,"has_video":true,"has_audio":true} \ No newline at end of file diff --git a/testdata/golden/meta/schizo_180.mp4-1.meta.json b/testdata/golden/meta/schizo_180.mp4-1.meta.json new file mode 100644 index 0000000..0dfaf2b --- /dev/null +++ b/testdata/golden/meta/schizo_180.mp4-1.meta.json @@ -0,0 +1 @@ +{"orientation":3,"duration":2544,"width":480,"height":360,"fps":29.97002997002997,"has_video":true,"has_audio":true} \ No newline at end of file diff --git a/testdata/golden/meta/schizo_270.mp4-1.meta.json b/testdata/golden/meta/schizo_270.mp4-1.meta.json new file mode 100644 index 0000000..ecdd37c --- /dev/null +++ b/testdata/golden/meta/schizo_270.mp4-1.meta.json @@ -0,0 +1 @@ +{"orientation":6,"duration":2544,"width":360,"height":480,"fps":29.97002997002997,"has_video":true,"has_audio":true} \ No newline at end of file diff --git a/testdata/golden/meta/schizo_90.mp4-1.meta.json b/testdata/golden/meta/schizo_90.mp4-1.meta.json new file mode 100644 index 0000000..90e1578 --- /dev/null +++ b/testdata/golden/meta/schizo_90.mp4-1.meta.json @@ -0,0 +1 @@ +{"orientation":8,"duration":2544,"width":360,"height":480,"fps":29.97002997002997,"has_video":true,"has_audio":true} \ No newline at end of file diff --git a/testdata/golden/meta/with_cover.mp3-1.meta.json b/testdata/golden/meta/with_cover.mp3-1.meta.json new file mode 100644 index 0000000..00ce5c9 --- /dev/null +++ b/testdata/golden/meta/with_cover.mp3-1.meta.json @@ -0,0 +1 @@ +{"orientation":1,"duration":1906,"width":1280,"height":720,"fps":90000,"has_video":true,"has_audio":true} \ No newline at end of file