17 ms·
Show HN: CompressX, my FFmpeg wrapper for macOS
Hey HN, just wanted to share my success story with CompressX, my FFmpeg wrapper for macOS.
For those who may not be familiar, FFmpeg is a powerful tool for converting, streaming, and recording audio and video content.
I started CompressX as a weekend project to serve my 9-5 jobs, primarily to compress demo videos for uploading to GitLab and sharing with my colleagues. It took me 2 weeks to make the first working version. I shared the demo on Twitter and the reaction was extraordinary. People loved it, they said that I was bringing the Pied Piper to life.
Four months later, I hit the $9,000 mark in revenue. I never expected to make a dime from this project, let alone eight thousand dollars. It's been a surreal experience, but it's also been incredibly rewarding.
I put a lot of time and effort into developing this tool, and it's amazing to see it paying off. It's been a great journey so far and I'm excited to see where it takes me next.
- throwaway598 2y agoI liked your privacy policy and terms of service. Simple and straightforward.
- hieu_dinh 2y agoThanks
- matthewfelgate 2y agoCongrats. But what's your Weissman score?
- dinhquochan 2y agoCongrats, Hieu!
- hieu_dinh 2y agoThanks!
- lostsoul999 2y agoOne of my good software purchases this year. Good work, Hieu.
- hieu_dinh 2y agoThanks! Feel free to let me know if you have any feedback
- muragekibicho 2y ago[flagged]
- hieu_dinh 2y agoThanks
- nen-nomad 2y agoI like the automation features! Good job; it is well-polished Hieu!
- hieu_dinh 2y agoThanks! Feel free to let me know if you need anything
- fancythat 2y agoJust interested, how do you manage licensing tarpits around certain video codecs supported by ffmpeg?
- zoobab 2y ago"licensing tarpits" patent trolls?
- giantrobot 2y agoVarious codecs ffmpeg supports have legitimate patent licenses. I can't think of any of the patent pools with NPEs, actual patent trolls.
- hieu_dinh 2y agoFFmpeg is not bundled with the app. User will have to install it separately and link it with CompressX. Hope this explains
- ranger207 2y agoLooks like a good tool for dealing with ffmpeg's infamous variety of command line options. Just curious, how much are you contributing upstream?
- edyc5 2y agoCan you describe what you did on your twitter and marketing efforts?
- hieu_dinh 2y agoI share my journey, the development progress, the SEO learnings, the lessons in public
- Solvency 2y agocan you explain why would i pay and use this over Handbrake on a Mac?
- jasonjmcghee 2y agoYou wouldn't, as you know about handbrake. Not trying to be a jerk- but serious. I saw this go viral on Twitter and commenters had no clue ffmpeg was a thing and thought he built this from scratch.
- moralestapia 2y ago<whoops, meant to write to OP but messed it up and wrote it here>
- claytonjy 2y agothe person you're responding to is not the OP
- wpm 2y agoHandbrakes UI is a mess.
- Solvency 2y agohow so? you literally select a file, and choose a preset and export. Not happy with one of the presets? Cool, adjust some quality sliders and hit export.
- CharlesW 2y agoHandbrake settings can be overwhelming for beginners once they escape the playpen of presets, while CompressX provides just a handful of controls, with no bitrates or codec names in sight.
- hieu_dinh 2y agoIf you're a Handbrake user, you most likely won't need this app. The main feature that I think Handbrake users want to have is the automatic compress new files in a folder, and maybe integration with Raycast extension.
- TheDong 2y agoWhile it's true that ffmpeg's license doesn't require you to release the source code of your application, ffmpeg is GPL, and so it's in good form to also make your application open source. You can still charge for it just as you do now, but it will also give your users the essential freedoms they deserve. You wouldn't be able to build this tool so easily without the commons of the open source projects you're building upon, and so it seems fair for you to also contribute back to the same commons.
- deleted 2y ago[deleted]
- MattPalmer1086 2y agoLooks like FFMPEG is mostly LGPL, but there are some GPL parts. You can compile without the GPL parts. Certainly would be prudent to check out https://ffmpeg.org/legal.html https://ffmpeg.org/legal.html
- hieu_dinh 2y agoFFmpeg is not bundled with the app. User will have to install it separately and link it with CompressX. Hope this explains
- Topgamer7 2y agoHe's commenting on the spirit of software released under permissive licenses like GPL. By selling software built on the backs of free developers, you're effectively profiting off of a significant amount of their work. I hope you donate a nice chunk of money to ffmpeg. https://ffmpeg.org/donations.html https://ffmpeg.org/donations.html
- hieu_dinh 2y ago10% of last month revenue was donated to FFmpeg. Thanks for clarifying
- jjice 2y agoI swear the best looking software like this is all built for MacOS. Maybe there's a lot of it on Windows as well, but I don't see a ton of it on HN (maybe just the demo?). Is the ecosystem part of this? Is it that the application demographic leans towards MacOS? Is the dev and monetization experience better? I'm really curious if anyone know why I see so much good native indie software for MacOS specifically.
- cjk2 2y agoIt's because the user interface is actually consistent and normalised across the whole platform and the paradigms are well documented and understood by the developers producing software. On Windows and Linux one minute you're constantly poked in the eye by fucked up scaling issues, different toolkit weirdness and quirks, various layers of abandoned shit going back 25 years and people with the design ability of a three legged goat with cataracts. It is fatiguing.
- Solvency 2y agobut anyone can create an electron app these days with total control over the UI polish with way less effort. in fact electron seems like the perfect use case here for a ffmpeg UI wrapper. surprised no one has done it.
- cjk2 2y agoElectron serves the developer not the user. It also looks shit on every platform then. And eats all your RAM
- dotinvoke 2y agoThe complaint that Chrome eats all your RAM is because it starts a new process for each tab, with all the overhead that entails. You’re not using multiple tabs in an Electron app.
- 2y ago
- racl101 2y agoThis is very, very cool. FFmpeg is an amazing tool but you can't leverage it as a casual user. This makes a lot of sense. Great looking app too.
- hieu_dinh 2y agoThanks
- brigadier132 2y agoCan you share how you did the marketing? Was it just twitter? I'm getting ready to launch an app right now and have no idea where to start with marketing.
- hieu_dinh 2y agoI have an audience on Twitter, so when I launch my app on Product Hunt, my audience helped to spread awareness of the launch. If you don't have an audience, I recommend building one. I also launch my app on other SaaS directories to get some traffic from them.
- egorfine 2y agoAmazing! Congratulations and so happy for you. Could you please share the marketing side? I'd love to start a side project as well but I have exactly zero ideas on how to get initial traction.
- hieu_dinh 2y agoYou can start with getting your idea validated first by making a small demo or MVP and share it somewhere. For me, I use Twitter as the main channel to build an audience and share everything I do publicly there
- egorfine 2y agoHow large you think should the twitter audience be to get initial traction for an MVP?
- ghusto 2y agoYou're being modest in describing it as an FFmpeg "wrapper". Although technically true, I can see a lot of thought and effort went into the UX, and I think that's where the value lies. Good job!
- hieu_dinh 2y agoThanks, I just want to make it clear upfront to avoid any confusion
- ta1243 2y agoYes that's exactly right, the extremely complex and clever code in ffmpeg that's understood by about 12 people in the world and is the basis for the entire media consumption in the world isn't where the value is, some gui frontend is. Do you work for microsoft?
- DistractionRect 2y agoI agree with the GP here. Yes, you can do all this with just FFMPEG, but now you have to wade through all the docs, flags, values to craft your CLI args with a bit of trial and error. The value add here is a coherent front-end that abstracts away all the complexity and lets you cut right to what you want. Further, if it's something you do infrequently, or your workflow changes, you have to rerun the gaunlet of figuring out what flags/values you need. FFMPEG can do a ton, but most people just need to crunch the file size, transcode, and occasionally convert a snippet into a gif
- greggsy 2y agoI had to transcode some files recently. I’m extremely proficient with the ClI, but I would have loved to have a GUI version.
- ranger_danger 2y agoHandbrake...
- 2y ago
- Cyph0n 2y agoNice work! Out of curiosity, is it calling the FFmpeg CLI or linking directly against FFmpeg libav?
- hieu_dinh 2y agoIt’s calling the FFmpeg CLI
- tombert 2y agoThis is actually neat. I know my way around the command line FFmpeg, but this is something I could pretty easily get my dad to use. He does a lot with video but he isn't great with the command line.
- sam0x17 2y agoI sort of hit a wall with ffmpeg where no matter what settings I used, I'd get slightly better output with Handbrake so now I just handbrake everything.
- m3kw9 2y agoWhat’s the command line?
- worg 2y agoI'm going to miss adapter by macroplant the day it stops working
- emmanueloga_ 2y agoLooks cool but raises a bunch of questions :-). Maybe you could add these to your FAQ, I imagine picky users like me may want the answers to at least some of these: "up to 90% file size reduction" What's an example of an input video or image that would see its size reduced by 90% without loosing quality? Also, how do you come up with this percentage? I imagine median/average size reduction must be way lower than 90% in real life. What if anything happens if size reduction fails? The app doesn't seem to allow selection of codec (from the video I imagine "format" refers to the container, like say, mp4). Do you always encode using the same codec? Which one? Which ffmpeg settings do you use to ensure good compression? Does the app generate a log of the ffmpeg command used? Can you trim videos without re-encoding them? ("lossless cut")
- blopker 2y agoThe macOS integration on this app is impressive, but the technical compression bits are a combination of ffmpeg and off-the-shelf image compression libraries. The 90% number is a pretty typical (with lossy) image savings when taking a totally unoptimized jpeg out of a program like Photoshop. There's just a bunch of extra data that can be stripped out (EXIF for one), that doesn't affect how the image looks. For video, I have no idea. Handbrake can usually get me around 50% savings with the same resolution and frame rate. ImageOptim is a good example of a nice UI on top of image compression libraries. Sadly, it hasn't been kept up to date. It's slower and compresses worse than what's possible now. It also doesn't support webp. For my own work, I made an open source clone[0] with the newest stuff in it. I use libcaesium, which is a Rust wrapper around all the compression libraries. Check out the source to see how easy it is. [0]: https://github.com/blopker/alic https://github.com/blopker/alic
- redundantly 2y agoEXIF metadata accounts for so little of the overall file size it isn't even worth mentioning...
- danudey 2y agoThis depends on the size of your file. If you have dozens or hundreds of small sprite/UI images for an app or game, image metadata can add up quite a bit overall.
- threecheese 2y agoHow does your site know that “22 files compressed in the past hour”? Does the app collect this type of metrics from Desktop users, or is there some web-based function that’s being observed?
- kinduff 2y agoThought of this too, how do they know how many GB are being reduced? Hope the analytics can be opted out.
- hieu_dinh 2y agoI will implement the option to opt-out anonymous telemetry this week. Thanks for the feedback
- ranger_danger 2y agoI wouldn't even bother. The vocal minority in here complaining about it aren't the people who would even use the software in the first place.
- ubanholzer 2y agoThe app connects to telemetrydeck.com. Sadly, couldn't find any opt-out setting.
- hbn 2y agoI'd really urge the author to rethink doing something like this at all. The app looks great but those stats on the front page were an immediate turn-off for me (not to mention how it pops up in what looks like an annoying cookie banner). You can talk about user activity on a web service where it makes sense to be hitting a server, but for a local app that should really just be a nice GUI for ffmpeg, I don't want my computer updating you whenever I use it with data about how I used it. And the types of users who are going to be using something like an ffmpeg wrapper are the types who are gonna care about something like that. It's not SaaS anyway, so why would I care about your current to-the-hour success metrics? Might as well just slap your amount of sales up there, it's less intrusive at least. Put some user testimonials, anything other than telemetry data.
- atonse 2y agoWhat tools did you use to make your snazzy screencasts??? I'm currently looking to make a video just like that for our product.
- PsyNyde 2y agoI wonder how much money you donate to ffmpeg itself. also people are paying for this just for Ui/Ux?
- akaru 2y agoWhat does ffmpeg do that AVFoundation does not?
- booi 2y agoSupports hundreds of file formats both new and ancient, ability to control every aspect of encoding, uses libx264/x265 which are much better than the libraries available in AVFoundation etc.. What does AVFoundation do that ffmpeg cannot? Probably streaming libraries, Dolby Vision support, hardware accelerated encoding. AVFoundation is great for what it is, an OS embedded library.
- saagarjha 2y agoffmpeg supports hardware acceleration too via VideoToolbox.
- CharlesW 2y ago> …uses libx264/x265 which are much better than the libraries available in AVFoundation etc. Citations? As a counter-example, AVFoundation's AAC encoder trounces anything in ffmpeg, which ffmpeg thankfully exposes suffixed "_at". ffmpeg -i input.wav -c:a aac_at -profile:a aac_he -b:a 64k output.m4a https://wiki.hydrogenaud.io/index.php?title=Apple_AAC https://wiki.hydrogenaud.io/index.php?title=Apple_AAC
- booi 2y agoOh I thought we were talking about AVFoundation which is more for video than audio. It's well known[1] that x264 is the best h.264 encoding library and produces the highest quality at the lowest bitrate (obviously at the expense of encoding speed). Software encoders for any codec are generally going to get better quality results at lower bitrates because of their ability to use more complex features. OS library encoders are generally more focused on streaming and bitrate stability than quality. And to be honest, QAAC (Apple Core Media's AAC encoder) is kind of an anomaly that I'd chalk up to the absolute amazing amount of engineering that went into the ipod/iphone era. [1] https://www.compression.ru/video/codec_comparison/h264_2012/ https://www.compression.ru/video/codec_comparison/h264_2012/
- alberth 2y agoGPL2 Since FFmpeg is GPL2, doesn’t that require CompressX to disclose its source code? IANAL, apologies if I miss understand license requirements. https://github.com/FFmpeg/FFmpeg?tab=License-1-ov-file https://github.com/FFmpeg/FFmpeg?tab=License-1-ov-file
- pelletier 2y agoDoesn't this license file say that most of ffmpeg is LGPL2? IANAL either, but my understanding is they are fine to distribute their application however they want assuming they did not use any of the opt-in GPL2-licensed functions, and they link to ffmpeg as a shared library. EDIT: seems like the user has to install ffmpeg separately, so seems like they are in the clear anyway? https://hieudinh.notion.site/How-to-setup-CompressX-93a89b0761c04b5b90f368b5c5e047b3 https://hieudinh.notion.site/How-to-setup-CompressX-93a89b07...
- minicoz 2y agoGreat looking product, if anyone wants to do the same stuff for free on windows (except image resizing) I use FFMPEGBatchAVConverter https://ffmpeg-batch.sourceforge.io/ https://ffmpeg-batch.sourceforge.io/ Batch FFMPEG conversion (I usually go from h264 to HEVC with my NVIDIA GPU 3060Ti) > ffmpeg -i file.mp4 -c:v hevc_nvenc -rc vbr -cq 24 -qmin 24 -qmax 24 -profile:v main10 -pix_fmt p010le -b:v 0K -c:a aac -map 0 and LosslessCut https://github.com/mifi/lossless-cut https://github.com/mifi/lossless-cut for ffmpeg cutting and splicing p0rn scenes.
- w10-1 2y agoSince ffmpeg has a wasm build, couldn't this be done client side?
- devwastaken 2y agoWasm is rarely a solution and still has yet to be of much use. FFmpegs codecs are mostly hand written optimized assembly using advanced instruction sets not known to wasm. I crafted my own years ago but you're fighting a runtime that can never specifically leverage critical things like CPU cache.
- c0wb0yc0d3r 2y agoIs it just me or is it deceptive to say that a person saves 50% when buying the "standard" license? Both Claude and Gemini seem to come up with a savings of almost 24%. The only way I can reach the 50% mark is by phrasing it as "buy 1 license and get a second license 50% off." Also "testimonial" should be plural, and "spams" should be singular.
- hieu_dinh 2y agoThanks for the feedback, this is updated to "Save $9" now. Also update "Testimonial" and "No spam"
- pipeline_peak 2y agoI admire you for calling something this effortful as a wrapper. A lot of people would just go “look at this app I made by myself, it compresses files”