refactor: metadata add format and content type

This commit is contained in:
Adrian Shum 2022-10-12 10:55:13 +08:00 committed by GitHub
parent 8914d4c8de
commit b130ff89ad
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -69,9 +69,9 @@ func (p *Processor) Process(ctx context.Context, in *imagor.Blob, params imagorp
} }
}() }()
var filters imagorpath.Filters var filters imagorpath.Filters
var mime = mimetype.Detect(in.Sniff()).String() var mime = mimetype.Detect(in.Sniff())
if !strings.HasPrefix(mime, "video/") && if typ := mime.String(); !strings.HasPrefix(typ, "video/") &&
!strings.HasPrefix(mime, "audio/") { !strings.HasPrefix(typ, "audio/") {
// forward identical for non video nor audio // forward identical for non video nor audio
err = imagor.ErrForward{Params: params} err = imagor.ErrForward{Params: params}
out = in out = in
@ -79,17 +79,14 @@ func (p *Processor) Process(ctx context.Context, in *imagor.Blob, params imagorp
} }
var r io.ReadCloser var r io.ReadCloser
var rs io.ReadSeekCloser var rs io.ReadSeekCloser
var size int64 var size = in.Size()
switch mime { if size > 0 {
case "video/webm", "video/x-matroska": switch mime.String() {
// media types that does not require seek case "video/webm", "video/x-matroska":
if r, size, err = in.NewReader(); err != nil { // media types that does not require seek
return if r, _, err = in.NewReader(); err != nil {
} return
if size <= 0 { }
// size must be known
_ = r.Close()
r = nil
} }
} }
if r == nil { if r == nil {
@ -117,7 +114,11 @@ func (p *Processor) Process(ctx context.Context, in *imagor.Blob, params imagorp
defer av.Close() defer av.Close()
meta := av.Metadata() meta := av.Metadata()
if params.Meta { if params.Meta {
out = imagor.NewBlobFromJsonMarshal(meta) out = imagor.NewBlobFromJsonMarshal(Metadata{
Format: mime.Extension(),
ContentType: mime.String(),
Metadata: meta,
})
return return
} }
switch meta.Orientation { switch meta.Orientation {
@ -149,4 +150,10 @@ func (p *Processor) Process(ctx context.Context, in *imagor.Blob, params imagorp
return return
} }
type Metadata struct {
Format string `json:"format"`
ContentType string `json:"content_type"`
*ffmpeg.Metadata
}
var transPixel = []byte("\x47\x49\x46\x38\x39\x61\x01\x00\x01\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x21\xF9\x04\x01\x00\x00\x00\x00\x2C\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x02\x44\x01\x00\x3B") var transPixel = []byte("\x47\x49\x46\x38\x39\x61\x01\x00\x01\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x21\xF9\x04\x01\x00\x00\x00\x00\x2C\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x02\x44\x01\x00\x3B")