mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2025-10-29 07:12:25 -05:00
[feature] Use gifv type for short soundless mp4 videos (#3182)
This commit is contained in:
parent
3045782b49
commit
b19cfee7ae
5 changed files with 49 additions and 8 deletions
|
|
@ -91,6 +91,7 @@ const (
|
|||
FileTypeImage FileType = 1 // FileTypeImage is for jpegs, pngs, and standard gifs
|
||||
FileTypeAudio FileType = 2 // FileTypeAudio is for audio-only files (no video)
|
||||
FileTypeVideo FileType = 3 // FileTypeVideo is for files with audio + visual
|
||||
FileTypeGifv FileType = 4 // FileTypeGifv is for short video-only files (20s or less, mp4, no audio).
|
||||
)
|
||||
|
||||
// String returns a stringified, frontend API compatible form of FileType.
|
||||
|
|
@ -104,6 +105,8 @@ func (t FileType) String() string {
|
|||
return "audio"
|
||||
case FileTypeVideo:
|
||||
return "video"
|
||||
case FileTypeGifv:
|
||||
return "gifv"
|
||||
default:
|
||||
panic("invalid filetype")
|
||||
}
|
||||
|
|
|
|||
|
|
@ -305,7 +305,15 @@ func (res *result) GetFileType() (gtsmodel.FileType, string) {
|
|||
case "mov,mp4,m4a,3gp,3g2,mj2":
|
||||
switch {
|
||||
case len(res.video) > 0:
|
||||
return gtsmodel.FileTypeVideo, "mp4"
|
||||
if len(res.audio) == 0 &&
|
||||
res.duration <= 30 {
|
||||
// Short, soundless
|
||||
// video file aka gifv.
|
||||
return gtsmodel.FileTypeGifv, "mp4"
|
||||
} else {
|
||||
// Video file (with or without audio).
|
||||
return gtsmodel.FileTypeVideo, "mp4"
|
||||
}
|
||||
case len(res.audio) > 0 &&
|
||||
res.audio[0].codec == "aac":
|
||||
// m4a only supports [aac] audio.
|
||||
|
|
|
|||
|
|
@ -202,7 +202,8 @@ func (p *ProcessingMedia) store(ctx context.Context) error {
|
|||
|
||||
switch p.media.Type {
|
||||
case gtsmodel.FileTypeImage,
|
||||
gtsmodel.FileTypeVideo:
|
||||
gtsmodel.FileTypeVideo,
|
||||
gtsmodel.FileTypeGifv:
|
||||
// Attempt to clean as metadata from file as possible.
|
||||
if err := clearMetadata(ctx, temppath); err != nil {
|
||||
return gtserror.Newf("error cleaning metadata: %w", err)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue