refactor(ffmpeg): refactor process frames

* refactor best frame process

* refactor best frame process, remove alpha

* move thumb context to export

* process_frames() filter

* test: update golden files

* process_frames() filter

* test: update golden files

* tweak fps

* test: update golden files

* cleanup
This commit is contained in:
Adrian Shum 2022-10-13 15:23:23 +08:00 committed by GitHub
parent c86b39430d
commit 4d71837fb8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
17 changed files with 127 additions and 122 deletions

View file

@ -112,6 +112,23 @@ func (p *Processor) Process(ctx context.Context, in *imagor.Blob, params imagorp
return
}
defer av.Close()
bands := 3
for _, filter := range params.Filters {
switch filter.Name {
case "format":
if s := strings.ToLower(filter.Args); s == "webp" || s == "png" {
switch mime.Extension() {
case ".webm", ".flv", ".mov", ".avi":
bands = 4
}
break
}
case "process_frames":
if err = av.ProcessFrames(); err != nil {
return
}
}
}
meta := av.Metadata()
if params.Meta {
out = imagor.NewBlobFromJsonMarshal(Metadata{
@ -129,17 +146,13 @@ func (p *Processor) Process(ctx context.Context, in *imagor.Blob, params imagorp
case 8:
filters = append(filters, imagorpath.Filter{Name: "orient", Args: "90"})
}
buf, err := av.Export()
buf, err := av.Export(bands)
if err != nil || len(buf) == 0 {
if err == nil {
err = imagor.ErrUnsupportedFormat
}
return
}
bands := 3
if meta.HasAlpha {
bands = 4
}
out = imagor.NewBlobFromMemory(buf, meta.Width, meta.Height, bands)
if len(filters) > 0 {