diff --git a/kittens/choose_files/ffmpeg.go b/kittens/choose_files/ffmpeg.go index ebc6e564a..940d06ecf 100644 --- a/kittens/choose_files/ffmpeg.go +++ b/kittens/choose_files/ffmpeg.go @@ -22,9 +22,6 @@ import ( var _ = fmt.Print -// ffmpeg -y -i bath.mp4 -t 5 -vf "fps=10,scale=320:-1:flags=lanczos" -c:v -// libwebp -lossless 0 -compression_level 0 -q:v 75 -loop 0 output_quality.webp - const FFMPEG_METADATA_KEY = "ffmpeg-metadata.json" type ffmpeg_renderer int @@ -146,13 +143,8 @@ func (c ffmpeg_renderer) ShowMetadata(h *Handler, s ShowData) (offset int) { } ext := filepath.Ext(s.abspath) text := fmt.Sprintf("%s: %s", ext, humanize.Bytes(uint64(s.metadata.Size()))) - icon := icons.IconForPath(s.abspath) - w(icon+" "+text, true) r := s.custom_metadata.custom.(*FFMpegMetadata) - if d, perr := strconv.ParseFloat(r.Format.Duration, 64); perr == nil { - duration := time.Duration(d * float64(time.Second)) - w("Duration: "+durafmt.Parse(duration).LimitFirstN(1).String(), false) - } + icon := icons.IconForPath(s.abspath) var width, height int for _, s := range r.Streams { if s.Width > 0 && s.Height > 0 { @@ -160,9 +152,14 @@ func (c ffmpeg_renderer) ShowMetadata(h *Handler, s ShowData) (offset int) { break } } - if width*height > 0 { - w(fmt.Sprintf("Resolution: %dx%d", width, height), false) + text += fmt.Sprintf(" %dx%d", width, height) + w(icon+" "+text, true) + st := humanize.Time(s.metadata.ModTime()) + if d, perr := strconv.ParseFloat(r.Format.Duration, 64); perr == nil { + duration := time.Duration(d * float64(time.Second)) + st += fmt.Sprintf(", %s", durafmt.Parse(duration).LimitFirstN(1).String()) } + w(st, true) return } diff --git a/kittens/choose_files/image_preview.go b/kittens/choose_files/image_preview.go index 6900c2e46..9daa092e3 100644 --- a/kittens/choose_files/image_preview.go +++ b/kittens/choose_files/image_preview.go @@ -9,7 +9,9 @@ import ( "strconv" "sync" "sync/atomic" + "time" + "github.com/hako/durafmt" "github.com/kovidgoyal/go-parallel" "github.com/kovidgoyal/kitty/tools/disk_cache" "github.com/kovidgoyal/kitty/tools/icons" @@ -248,7 +250,19 @@ func (p ImagePreviewRenderer) ShowMetadata(h *Handler, s ShowData) int { text = icon + " " + text offset += h.render_wrapped_text_in_region(text, s.x, s.y, s.width, s.height, true) } - offset += h.render_wrapped_text_in_region(humanize.Time(s.metadata.ModTime()), s.x, s.y+offset, s.width, s.height-offset, true) + st := humanize.Time(s.metadata.ModTime()) + if s.custom_metadata.image != nil && len(s.custom_metadata.image.Frames) > 0 { + var d time.Duration + for _, f := range s.custom_metadata.image.Frames { + if f.Delay_ms > 0 { + d += time.Duration(time.Duration(f.Delay_ms) * time.Millisecond) + } + } + if d > 0 { + st += fmt.Sprintf(", %s", durafmt.Parse(d).LimitFirstN(1).String()) + } + } + offset += h.render_wrapped_text_in_region(st, s.x, s.y+offset, s.width, s.height-offset, true) return offset }