Lazycut: A simple terminal video trimmer using FFmpeg

(github.com)

110 points | by masterpos 8 hours ago ago

28 comments

  • chris_va 2 hours ago

    Invoking ffmpeg, gzip and tar commands is a sort of reverse Turing test for LLMs

  • tptacek 4 hours ago

    This is very cool. I built one of these myself around Christmas; Claude Code can put one together in just a couple prompts (this is also how I worked out how to have Claude test TUIs with tmux). What was striking about my finished product --- which is much less slick than this --- was how much of the heavy lifting was just working out which arguments to pass to ffmpeg.

    It's surprisingly handy to have something like this hanging around; I just use mine to fix up screen caps.

    Commenting mostly because when I did this I thought I was doing something very silly, and I'm glad I'm not completely crazy.

    • booi an hour ago

      You can use AI to figure out the arguments to ffmpeg. But indeed it seems like there's just a single call to FFmpeg CLI to power the whole thing which is amazing.

        ffmpegCmd := exec.Command("ffmpeg",
          "-ss", fmt.Sprintf("%.3f", position.Seconds()),
          "-i", p.path,
          "-vf", strings.Join(filters, ","),
          "-vframes", "1",
          "-f", "image2pipe",
          "-vcodec", "bmp",
          "-loglevel", "error",
          "-",
        )
  • sorenjan 4 hours ago

    I don't find trimming videos with ffmpeg particularly difficult, is just-ss xx -to xx -c copy basically. Sure, you need to get those time stamps using a media player, but you probably already have one so that isn't really an issue.

    What I've found to be trickier is dividing a video into multiple clips, where one clip can start at the end of another, but not necessarily.

    • ramon156 3 hours ago

      I don't find Sharing files with people very difficult, just login to your FTP and give an account to another user. - Person commenting on OneDrive

      • sorenjan 3 hours ago

        Missed opportunity to reference the famous Dropbox hn comment.

        I just think there are other closely related use cases where a separate program can add more value, especially in the terminal. I wouldn't suggest most people should use ffmpeg instead of a gui, those are too dissimilar. Another example is cutting out a part of a video, with ffmpeg you need to make two temporary videos and then concatenate them, that process would greatly benefit from a better ux.

        • tptacek 2 hours ago

          Point of order: the Dropbox HN comment is famously misconstrued. People think it was about Dropbox; it was about the Dropbox YC application, and was both well-intentioned and constructive.

        • gyan 2 hours ago

          > with ffmpeg you need to make two temporary videos and then concatenate them

          It can be done in a single command, no temp files needed.

    • bolangi an hour ago

      FWIW, here's a simple command line utility for joining and trimming the multiple video files produced by a video camera.

      https://metacpan.org/dist/App-fftrim/view/script/fftrim

    • hiccuphippo 3 hours ago

      I used a plugin in mpv to do it but I can't find it anymore. You just pressed a key to mark the start and end. And with . and , you could do it at keyframe resolution not just seconds.

  • ariym 6 hours ago

    I think this is the first instance I've seen of an actual terminal video player. Very fun to play with.

    • mikkupikku 4 hours ago

      mplayer, mpv and I think VLC can do it, with the right output driver settings (libcaca or a few other choices.)

      • tptacek 4 hours ago

        You can just use ffmpeg to extract frames, and then just render the raw images with unicode blocks.

        (There's Kitty Graphics too, but I couldn't figure out how to make terminal UI layout work with it.)

        • mikkupikku 29 minutes ago

          I'd use ffmpeg to downscale the frames to the terminal size too. There are also various filters that could help quantizing the colors to what your terminal supports. The paletteuse filter will get you free dithering too.

      • chadrs 4 hours ago

        yeah I remember learning this trick in like 2007 with libaa and later caca for color.

        It looks like this app is shelling out to ffmpeg to get the bitmap of a frame and then shelling to something called chafa to covert to nice terminal-friendly video.

        https://github.com/hpjansson/chafa/

  • kawsper an hour ago

    I asked about this tool 3 days ago, HN is a magical place! https://news.ycombinator.com/item?id=47363432

  • noiv 2 hours ago

    On MacOs I just press space and trim with finder. Even avoids re-compressing.

  • mhuffman 3 hours ago

    I have been using this one[0] and it is small, fast, and seems to work pretty great for me so far.

    [0]https://github.com/wong-justin/vic

    • wonger_ 38 minutes ago

      Happy to hear! Some of my thoughts when building it:

      - I haven't implemented audio support yet, but it would be nice

      - I like --dry-run

      - I didn't use a TUI widget library, but now it's at the point where it's tedious to refactor the UI / make it prettier

      - I like OP's timeline widget

      - Wanted to focus on static binaries. I got chafa static linking working for Linux, but haven't bundled ffmpeg yet

      - which reminds me of licenses -- chafa and ffmpeg are LGPL iirc

      - a couple other notes from early on: https://wonger.dev/posts/chafa-ffmpeg-progress

  • Acrobatic_Road 2 hours ago

    Could have really used this a couple days ago. I had to record a video an assignment, but due to lack of global hotkeys on OBS with wayland, I had to start and stop the video on the OBS GUI. I tried to figure out ffmpeg but I was too tired and it was getting close to the deadline so I spent some time learning how to to do it with kdenlive.

  • bfrjjrhfbf 4 hours ago

    Having to separately download ffmpeg in the windows distribution does not really make sense

    Just bundle it

    • ftchd 2 hours ago

      People that use GUIs/tools for things like ffmpeg, rclone etc really want the developer to autodetect if they have it already, and use that instead of installing a separate version/binary.

      How do I know? I built one (https://github.com/rclone-ui/rclone-ui)

    • sorenjan 4 hours ago

      I disagree, I don't want another ffmpeg binary, I already have one. Winget works well, especially since this is already a terminal program.

    • karlosvomacka 4 hours ago

      afaik winget can automatically manage package dependencies.

  • faangguyindia 5 hours ago

    I've been using ffmpeg with claude as video editor for long time.

    • hsuduebc2 3 hours ago

      You mean you let create claude command or it itself runs ffmpeg on your local machine and returns you finished cut?

  • mandeepj 5 hours ago

    I guess I can find another implementation to combine trimmed parts after taking out certain scenes?

    • hiccuphippo 4 hours ago

      Write a text file with all the parts like this:

          file 'file1.mp4'
          file 'file2.mp4'
          file 'file3.mp4'
      
      Then call ffmpeg like this:

          ffmpeg -f concat -i files.txt -c copy output.mp4
      
      And I guess you could make an LLM write a {G,T}UI for this if you really want.