top | item 39987579

Show HN: CompressX, my FFmpeg wrapper for macOS

170 points| hieu_dinh | 1 year ago |compressx.app | reply

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.

166 comments

order
[+] emmanueloga_|1 year ago|reply
Looks 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|1 year ago|reply
The 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

[+] hieu_dinh|1 year ago|reply
I usually share example of compression result on my Twitter (as the main marketing channel for now), some of the videos was compressed more than 90% of the size, by re-encoding with h264 codec. Thanks for the feedback, I will update the website to add some example videos and images. For trimming without re-encoding, it's not possible in the current version
[+] orev|1 year ago|reply
I’ve seen many videos produced by phones that are at least 10x larger than they need to be. I think they’re trying for some kind of cinematic quality, or maybe expect people to recompress them after the event (or in the worst case are conveniently choosing settings that use up more local and cloud storage so people need to pay to upgrade).

Other low cost video devices (like dashcams) can use higher bitrates and lower compression modes simply because they don’t have the CPU power to use the most optimal settings while also being able to record real-time streams.

You can save a lot of space by re-encoding these types of files on a real computer.

[+] jjice|1 year ago|reply
I 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|1 year ago|reply
It'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.

[+] jwells89|1 year ago|reply
A lot of it is the frameworks available in Apple platforms. AppKit and UIKit are both wide and deep, providing just about everything needed to build polished apps while also providing well-supported “happy paths” for most tasks.

I can whip up a decent looking AppKit UI for a moderately complex desktop app that can handle the rigors of accessibility settings and internationalization in an afternoon without importing a single third party dependency. That’s hard to beat for indie dev projects.

[+] jasonjmcghee|1 year ago|reply
My gut here is folks who buy apple products are far more likely to be willing to spend money on an app, and tend to care about design / polish.
[+] hieu_dinh|1 year ago|reply
In terms of UI/UX, I believe Apple provides the best development toolkit and guidelines for developers. I'm not using any custom UI component for CompressX, it's just a few buttons, toggles and a video player, but the overall UI looks good enough and consistent with other applications in the macOS
[+] altcognito|1 year ago|reply
It is a single screen with about 5 input boxes and a drag and drop interface.

Probably a bit of hyperbole to put this into a category of "best looking software"

[+] encom|1 year ago|reply
Apple users are probably the only crowd that would pay money for a simplistic ffmpeg frontend.
[+] hvaoc|1 year ago|reply
Another notion among developers as well is macOS users more likely to pay for software.

I myself have this conflict to built something cross platform but then you don’t get well polished out of the box.

What do you folks think about this?

Any success with non macOS non tech savvy users buying your software as much as macOS users?

[+] knubie|1 year ago|reply
I would guess that most people who care about aesthetics don't use Windows. So the only alternative is Mac, and it's the people that care about aesthetics who are the ones that are going to create & buy good looking software.
[+] tailspin2019|1 year ago|reply
I think it’s partly down to the Mac’s long history of being favoured by creative types… especially designers.

And some developers are either pretty good UI designers too (it happens) or at the very least they have good taste for design. If you’re one of those people, it’s hard not to gravitate towards the Mac.

That and Apple care a lot about design too so as others have said, the platform is kind of setup for guiding you (mostly) towards making good decisions in that area.

[+] icar|1 year ago|reply
Linux apps following Gnome HIG look awesome as well.
[+] threecheese|1 year ago|reply
How 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?
[+] ubanholzer|1 year ago|reply
The app connects to telemetrydeck.com. Sadly, couldn't find any opt-out setting.
[+] kinduff|1 year ago|reply
Thought of this too, how do they know how many GB are being reduced? Hope the analytics can be opted out.
[+] ghusto|1 year ago|reply
You'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|1 year ago|reply
Thanks, I just want to make it clear upfront to avoid any confusion
[+] ta1243|1 year ago|reply
Yes 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?

[+] PsyNyde|1 year ago|reply
I wonder how much money you donate to ffmpeg itself. also people are paying for this just for Ui/Ux?
[+] sam0x17|1 year ago|reply
I 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.
[+] fancythat|1 year ago|reply
Just interested, how do you manage licensing tarpits around certain video codecs supported by ffmpeg?
[+] hieu_dinh|1 year ago|reply
FFmpeg is not bundled with the app. User will have to install it separately and link it with CompressX. Hope this explains
[+] zoobab|1 year ago|reply
"licensing tarpits" patent trolls?
[+] alberth|1 year ago|reply
GPL2

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

[+] pelletier|1 year ago|reply
Doesn'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-93a89b07...

[+] matthewfelgate|1 year ago|reply
Congrats. But what's your Weissman score?
[+] tombert|1 year ago|reply
Doesn't that only apply to lossless compression? I haven't seen the show in quite awhile.
[+] minicoz|1 year ago|reply
Great 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/

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 for ffmpeg cutting and splicing p0rn scenes.

[+] racl101|1 year ago|reply
This 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.

[+] edyc5|1 year ago|reply
Can you describe what you did on your twitter and marketing efforts?
[+] hieu_dinh|1 year ago|reply
I share my journey, the development progress, the SEO learnings, the lessons in public
[+] throwaway598|1 year ago|reply
I liked your privacy policy and terms of service. Simple and straightforward.
[+] brigadier132|1 year ago|reply
Can 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|1 year ago|reply
I 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.
[+] pipeline_peak|1 year ago|reply
I 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”

[+] Cyph0n|1 year ago|reply
Nice work! Out of curiosity, is it calling the FFmpeg CLI or linking directly against FFmpeg libav?
[+] tombert|1 year ago|reply
This 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.
[+] egorfine|1 year ago|reply
Amazing! 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|1 year ago|reply
You 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
[+] m3kw9|1 year ago|reply
What’s the command line?
[+] atonse|1 year ago|reply
What tools did you use to make your snazzy screencasts??? I'm currently looking to make a video just like that for our product.