diff --git a/ffmpeg/ffmpeg.go b/ffmpeg/ffmpeg.go index 2187d89..497ee98 100644 --- a/ffmpeg/ffmpeg.go +++ b/ffmpeg/ffmpeg.go @@ -132,6 +132,9 @@ func (av *AVContext) SeekPosition(f float64) error { // SeekDuration seeks to keyframe before the specified duration func (av *AVContext) SeekDuration(ts time.Duration) error { + if av.formatContext == nil || av.codecContext == nil { + return ErrDecoderNotFound + } return seekDuration(av, ts) } diff --git a/processor_test.go b/processor_test.go index 9b45767..3bb3fb5 100644 --- a/processor_test.go +++ b/processor_test.go @@ -64,6 +64,7 @@ func TestProcessor(t *testing.T) { }, WithDebug(true), WithLogger(zap.NewExample())) doGoldenTests(t, filepath.Join(testDataDir, "golden/result-fallback-image"), []test{ {name: "corrupted with fallback image", path: "fit-in/100x100/corrupt/everybody-betray-me.mkv", expectCode: 406}, + {name: "corrupted with fallback image", path: "filters:seek(0.1)/no_cover.mp3", expectCode: 406}, }, WithDebug(false), WithLogger(zap.NewExample()), WithFallbackImage("demo.png")) } diff --git a/testdata/golden/result-fallback-image/filters%3Aseek%280.1%29/no_cover.mp3 b/testdata/golden/result-fallback-image/filters%3Aseek%280.1%29/no_cover.mp3 new file mode 100644 index 0000000..8c74ba6 --- /dev/null +++ b/testdata/golden/result-fallback-image/filters%3Aseek%280.1%29/no_cover.mp3 @@ -0,0 +1 @@ +{"message":"ffmpeg: decoder not found","status":406} \ No newline at end of file