diff --git a/ffmpeg/ffmpeg.go b/ffmpeg/ffmpeg.go index 26790b1..f05119e 100644 --- a/ffmpeg/ffmpeg.go +++ b/ffmpeg/ffmpeg.go @@ -85,6 +85,9 @@ func LoadAVContext(ctx context.Context, reader io.Reader, size int64) (*AVContex } func (av *AVContext) ProcessFrames(maxFrames int) (err error) { + if av.formatContext == nil || av.codecContext == nil { + return ErrDecoderNotFound + } if av.thumbContext == nil { return createThumbContext(av, C.int(maxFrames)) } diff --git a/processor_test.go b/processor_test.go index e088d74..32adde3 100644 --- a/processor_test.go +++ b/processor_test.go @@ -55,6 +55,8 @@ func TestProcessor(t *testing.T) { {name: "image", path: "fit-in/100x100/demo.png"}, {name: "alpha", path: "fit-in/filters:format(png)/alpha-webm.webm"}, {name: "corrupted", path: "fit-in/100x100/corrupt/everybody-betray-me.mkv", expectCode: 406}, + {name: "no cover meta", path: "meta/no_cover.mp3"}, + {name: "no cover 406", path: "fit-in/100x100/no_cover.mp3", expectCode: 406}, }, 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}, diff --git a/testdata/golden/result/fit-in/100x100/no_cover.mp3 b/testdata/golden/result/fit-in/100x100/no_cover.mp3 new file mode 100644 index 0000000..5bfd67a Binary files /dev/null and b/testdata/golden/result/fit-in/100x100/no_cover.mp3 differ diff --git a/testdata/golden/result/meta/no_cover.mp3 b/testdata/golden/result/meta/no_cover.mp3 new file mode 100644 index 0000000..6f0994b --- /dev/null +++ b/testdata/golden/result/meta/no_cover.mp3 @@ -0,0 +1 @@ +{"format":"mp3","content_type":"audio/mpeg","orientation":0,"duration":13536,"has_video":false,"has_audio":true} \ No newline at end of file diff --git a/testdata/no_cover.mp3 b/testdata/no_cover.mp3 new file mode 100644 index 0000000..9c6f3d9 Binary files /dev/null and b/testdata/no_cover.mp3 differ