mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2025-12-14 23:33:02 -06:00
[feature] For video attachments, store + return fps, bitrate, duration (#1282)
* start messing about with different mp4 metadata extraction * heyyooo it works * add test cow * move useful multierror to gtserror package * error out if video doesn't seem to be a real mp4 * test parsing mkv in disguise as mp4 * tidy up error handling * remove extraneous line * update framerate formatting * use float32 for aspect * fixy mctesterson
This commit is contained in:
parent
eabb906268
commit
1659f75ae6
19 changed files with 433 additions and 108 deletions
|
|
@ -249,16 +249,32 @@ func (p *ProcessingMedia) loadFullSize(ctx context.Context) error {
|
|||
}
|
||||
|
||||
// set appropriate fields on the attachment based on the image we derived
|
||||
|
||||
// generic fields
|
||||
p.attachment.File.UpdatedAt = time.Now()
|
||||
p.attachment.FileMeta.Original = gtsmodel.Original{
|
||||
Width: decoded.width,
|
||||
Height: decoded.height,
|
||||
Size: decoded.size,
|
||||
Aspect: decoded.aspect,
|
||||
}
|
||||
p.attachment.File.UpdatedAt = time.Now()
|
||||
p.attachment.Processing = gtsmodel.ProcessingStatusProcessed
|
||||
|
||||
// nullable fields
|
||||
if decoded.duration != 0 {
|
||||
i := decoded.duration
|
||||
p.attachment.FileMeta.Original.Duration = &i
|
||||
}
|
||||
if decoded.framerate != 0 {
|
||||
i := decoded.framerate
|
||||
p.attachment.FileMeta.Original.Framerate = &i
|
||||
}
|
||||
if decoded.bitrate != 0 {
|
||||
i := decoded.bitrate
|
||||
p.attachment.FileMeta.Original.Bitrate = &i
|
||||
}
|
||||
|
||||
// we're done processing the full-size image
|
||||
p.attachment.Processing = gtsmodel.ProcessingStatusProcessed
|
||||
atomic.StoreInt32(&p.fullSizeState, int32(complete))
|
||||
log.Tracef("finished processing full size image for attachment %s", p.attachment.URL)
|
||||
fallthrough
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue