DamnVid 1.0 was released recently (You can download it at Google Code). In this endless-beta world, I guess it's rare to see software getting out of beta, but hey, DamnVid did!
I haven't talked about DamnVid on this blog yet. I guess I should, now that it's out there, no? Let's start by some history.
You see, there's a lot of video downloaders and converters out there. Some are free and online, like Vixy, Zamzar or YouConvertIt, but their quality is disgustingly low, or they add their own logo at the end of the video, etc. There's also a few "software" converters out there (Who hasn't seen these junk, often-malware-filled "free ipod converters", "free youtube downloaders"?), and although I wanted to cleanse this world of not-so-great converters. Although some of them are great (MediaCoder, Handbrake), they're mostly Windows-only, and they don't download videos, they just convert them.
From there, DamnVid was born. I aimed for it to be your be-all, end-all video downloader and converter, no intermediate, no compromises, good quality, etc. But mostly, cross-platform, open-source, dammit. From the name, you could suppose I was not really happy about the state of media downloading/converting, and you'd be half right. The name was also inspired after Damn NFO Viewer, a tool to view NFO file for those who don't know how to use Notepad.
It was also the occasion for me to try out what I had learned with Python, and its cross-platform-ness.
I already knew about FFmpeg, the command-line tool, swiss-army-knife of video conversion. It was awesome, and I've been using it from the command line for ages. I taught some friends how to use it too, but it seemed never to get into their heads. They weren't used to the command line, they wanted a simple GUI. Ease-of-use, right? Well, DamnVid attempts to fill this need too. So, yes, it is yet another of these countless FFmpeg GUIs. All of them have their shortcomings, and DamnVid has some, too, of course. You can't please everyone. DamnVid simply tries to suck less.
Enough about boring software history. Let's get to something more visual, screenshots. Yummy.
So what can DamnVid do, exactly?
Convert videos. Yes, really. Anything that FFmpeg can read, DamnVid can convert.
FFmpeg is used in a lot of open-source projects like VLC. If VLC can read it, DamnVid can convert it.
- Download videos. Yes, really, too! DamnVid supports a few dozens of video sites... Icons time!
- But best of all, DamnVid can download and convert. At the same time. It converts while downloading. This makes the whole process much faster than most downloaders/converters do.
- Integrated YouTube search
- Clipboard monitoring
- New, fresher FFmpeg build behind everything
- A whole bunch of new supported video websites.
- Extensibility. This might seem obvious, but hey, it's awesome and cannot not be mentioned. Anyone can add functionality to the software without touching its base code. It "crowdsources" the whole development process. Isn't that what open-source is partially about, besides transparency?
- Code cleanliness. Before modules, DamnVid only supported YouTube and Dailymotion, so it was (almost) reasonable to have those hardcoded into the whole thing, and release an update whenever one of them changed and broke DamnVid's ability to download videos from these sites. But as the number of supported sites grew, DamnVid's "breakability" increased and the code got cluttered up. Modules solved everything: No code clutter, separate updates, separate configuration, installing/uninstalling ability.
So that's pretty much it about modules. Why not code up your own?
All in all, DamnVid was (is! it's not over yet) a good learning experience. It taught me about Python, its numerous GUI toolkits (DamnVid is built using wxPython) and their quirks (sizers, for wxPython, but they work once you get the hang of it), modularity, cross-platform code, but it also taught me a lot about the different ways to compile stuff from source on different operating systems, how to link libraries (static or shared), etc. It also taught me about a few protocols I never knew about (RTMP, RTSP, AMF) on top of HTTP (over which most Flash videos are still served nowadays), and about packet analysis with Wireshark, Flash "decompilation", reverse-engineering hashing algorithms, etc. There's much more knowledge I've acquired thanks to DamnVid than one could at first imagine.
After all this rambling... Why not actually download DamnVid and take it for a spin? You won't regret it. If you do, express your criticism in the comments. It is always appreciated (although bug fixes and feature suggestions should be posted in the Google Code issues list instead).