Ffmpeg Buddy

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • HandBrake

    HandBrake's main development repository

  • Have you had a look at Handbrake (https://handbrake.fr/)?

    At least some of your requirements are directly implemented in Handbrake, e.g., there are different transcoding presets and burning in subs [1]. It uses ffmpeg under the hood as well.

    [1] https://handbrake.fr/docs/en/1.5.0/advanced/subtitles.html

  • ffmpeg.wasm

    FFmpeg for browser, powered by WebAssembly

  • Ooh, if this also used ffmpeg-wasm [1], you could then run the command itself in the browser!

    [1] https://github.com/ffmpegwasm/ffmpeg.wasm

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • ffmpeg-python

    Python bindings for FFmpeg - with complex filtering support

  • I've been using ffmpeg-python recently, and it will do a lot of the crazy complex transforms for you, and you can write sane python code vs. trying to deal with the crazy default ffmpeg syntax.

    https://github.com/kkroening/ffmpeg-python

  • chromium

    The official GitHub mirror of the Chromium source

  • FWIT we’ve been using ffmpeg-wasm on one of our products [0] for a couple months and the main issue is garbage collection. You’re limited to 4GB memory, but if you don’t kill and restart the workers every N operations it crashes the browser tab (even with proper unlinking of files in the virtual FS).

    I suspect you could still make it work with clever usage of the File System Access API as a cache, and process larger files in chunks. Then you’d mostly be limited by the Blob storage limits [1], and memory required to merge processed chunks together.

    [0] https://nft-inator.com/app

    [1] https://chromium.googlesource.com/chromium/src/+/224e43ce1ca...

  • bubbletea

    A powerful little TUI framework 🏗

  • textual

    The lean application framework for Python. Build sophisticated user interfaces with a simple Python API. Run your apps in the terminal and a web browser.

  • Axiom

    An FFmpeg GUI for Windows (by MattMcManis)

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • ffmpeg-buddy

    a lil webpage that helps you write ffmpeg commands

  • wasm-audio-clipper

  • It works for me. Here's a wasm-ffmpeg solution I created trim audio.

    https://wasm-audio-clipper.netlify.app/

    Check the repo: https://github.com/marclundgren/wasm-audio-clipper. I ended up lazily registering the context. The memory footprint stays lower even after trimming multiple clips on the same session.

  • Gooey

    Turn (almost) any Python command line program into a full GUI application with one line

  • > In particular I'm not sure how to really tell ffmpeg to handle multiple audio/sub streams without programmatic interaction - you kinda need to know there are 2 audio streams and 4 sub streams, because you need to tell it what to do with each stream you want included in the output file, even if you do the exact same thing to every stream.

    I made a script that converts all the videos in a directory above a certain bitrate to H.265 to save space and found that just using the flags `-map 0` to grab every stream, and `-c:s copy` was enough to avoid having to probe the source for every stream since subtitles were the most problematic if any streams were bitmaps. It then checks if there were any errors before replacing the original video. I still get the occasional outlier that I either fix by hand or just leave as is.

    Also the script was written with python and argparse, so it would be relatively easy for me to create a GUI with Gooey[1] if there was interest.

    [1] https://github.com/chriskiehl/Gooey

  • ffmpeg-koraktor

    An occasionally-growing selection of FFmpeg invocations that have proven handy in various situations.

  • Cli2Gui

    Use this module to convert a cli program to a gui

  • tealdeer

    A very fast implementation of tldr in Rust.

  • tldr

    📚 Collaborative cheatsheets for console commands

  • mpv

    🎥 Command line video player

  • I think I vaguely remembering trying it and eventually gave up as it wasn't working. I believe I arrived at this bug report which still seems open - https://github.com/mpv-player/mpv/issues/8818

    Overall I just found it better to leave pretty much everything to the more battle-tested `ffmpeg` and then use mpv to play the content (or can also use ffplay, but I do have have some customizations in mpv which I like).

  • GPSOverlay

    Adds GPS data overlay to video

  • Something like https://github.com/buma/GPSOverlay might give you some pointers.

    Although it's not clear if you want to display your additional data as an overlay (like this example) or keep it as some kind of metadata stream. I'm not sure if the second option is even a thing.

  • lossless-cut

    The swiss army knife of lossless video/audio editing

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts