diff --git a/app/mix/service/logic/media.go b/app/mix/service/logic/media.go index 6b8f9999..f499c6d4 100644 --- a/app/mix/service/logic/media.go +++ b/app/mix/service/logic/media.go @@ -191,14 +191,23 @@ func (m *Media) saveImage(ctx *gin.Context, image *dbstruct.Image) (*dbstruct.Im } id := mediaSeqId.Seq doc := &dbstruct.Image{ - Id: id, - Ct: time.Now().Unix(), - Ut: time.Now().Unix(), - SrcId: image.SrcId, - MD5: image.MD5, - W: image.W, - H: image.H, - Fmt: image.Fmt, + Id: id, + Ct: time.Now().Unix(), + Ut: time.Now().Unix(), + SrcId: image.SrcId, + SizeSrc: 0, + SrcId720: "", + Size720: 0, + SrcId1080: "", + Size1080: 0, + SrcId1440: "", + Size1440: 0, + Status: 0, + ResizeT: 0, + MD5: image.MD5, + W: image.W, + H: image.H, + Fmt: image.Fmt, } err = m.store.SaveImage(ctx, doc) if err != nil { diff --git a/dbstruct/media.go b/dbstruct/media.go index e49235ed..bea94a1a 100644 --- a/dbstruct/media.go +++ b/dbstruct/media.go @@ -6,15 +6,40 @@ import ( ) // 图片 +const ( + ImageStatusResizeInit = 0 + ImageStatusResizeDone = 100 + ImageStatusResizeFail = 101 +) + type Image struct { - Id int64 `json:"id" bson:"_id"` // 图片id - Ct int64 `json:"ct" bson:"ct"` // 创建时间 - Ut int64 `json:"ut" bson:"ut"` // 更新时间 - SrcId string `json:"src_id" bson:"src_id"` // 源id - MD5 string `json:"md5" bson:"md5"` // 视频md5 - W int64 `json:"w" bson:"w"` // 宽 - H int64 `json:"h" bson:"h"` // 高 - Fmt string `json:"fmt" bson:"fmt"` // 图片格式 + Id int64 `json:"id" bson:"_id"` // 图片id + Ct int64 `json:"ct" bson:"ct"` // 创建时间 + Ut int64 `json:"ut" bson:"ut"` // 更新时间 + SrcId string `json:"src_id" bson:"src_id"` // 源id + SizeSrc int64 `json:"size_src" bson:"size_src"` // 原图片大小 + SrcId720 string `json:"src_id_720" bson:"src_id_720"` // 720P图片 + Size720 int64 `json:"size_720" bson:"size_720"` // 720P图片大小 + SrcId1080 string `json:"src_id_1080" bson:"src_id_1080"` // 1080P图片 + Size1080 int64 `json:"size_1080" bson:"size_1080"` // 1080P图片大小 + SrcId1440 string `json:"src_id_1440" bson:"src_id_1440"` // 1440P图片 + Size1440 int64 `json:"size_1440" bson:"size_1440"` // 1440P图片大小 + Status int `json:"status" bson:"status"` // 状态 + ResizeT int64 `json:"resize_t" bson:"resize_t"` // 压缩时间 + MD5 string `json:"md5" bson:"md5"` // 视频md5 + W int64 `json:"w" bson:"w"` // 宽 + H int64 `json:"h" bson:"h"` // 高 + Fmt string `json:"fmt" bson:"fmt"` // 图片格式 +} + +func (i *Image) SelectMinSizeOssId() string { + if i == nil { + return "" + } + if len(i.SrcId720) > 0 && i.Size720 < i.SizeSrc { + return i.SrcId720 + } + return i.SrcId } type ToCImage struct { diff --git a/library/mediafiller/mediafillerhelper.go b/library/mediafiller/mediafillerhelper.go index ce657729..6650e905 100644 --- a/library/mediafiller/mediafillerhelper.go +++ b/library/mediafiller/mediafillerhelper.go @@ -46,12 +46,16 @@ func transToCImage(image *dbstruct.Image) *dbstruct.ToCImage { if image == nil { return nil } + + // 选择内存最小的图片 + imgSrcId := image.SelectMinSizeOssId() + return &dbstruct.ToCImage{ Id: image.Id, W: image.W, H: image.H, Fmt: image.Fmt, - Urls: []string{defaultMediaFiller.fileServerDomainName + image.SrcId}, + Urls: []string{defaultMediaFiller.fileServerDomainName + imgSrcId}, } } @@ -70,7 +74,8 @@ func transToCVideo(video *dbstruct.Video, coverImg *dbstruct.Image) *dbstruct.To ret.CoverW = coverImg.W ret.CoverH = coverImg.H ret.CoverFmt = coverImg.Fmt - ret.CoverUrls = []string{defaultMediaFiller.fileServerDomainName + coverImg.SrcId} + imgSrcId := coverImg.SelectMinSizeOssId() + ret.CoverUrls = []string{defaultMediaFiller.fileServerDomainName + imgSrcId} } return ret }