Xdm – Powerfull download accelerator and video downloader
github.com
github.com
How is it that they work, that is the accelerator part? My guess is an algo to find the optimal amount of parallel downloads?
Edit: also with parallel downloads, is it possible to do a HTTP GET with an bytes offset? With video I guess it’s possible to select what part to stream, but with regular http download I’m not sure
An algo...? Most download managers I tried simply had a set amount of threads they tried to open; the smartest ones will close some of those connections if they think they are being throttled, but that's rare.
That's just all there is to it: single-threaded downloads are severely inefficient in the age of multithreaded CPUs (and of operating systems without a finely-tuned network stack), so by leveraging parallelization anywhere you get a chance, you multiply the speed.
Is the CPU typically the bottleneck when downloading things from the Internet?
Download "acceleration" is snake oil and all "acceleration" does is consume unnecessary resources on both ends.
Download "managers" that can queue up a list of downloads, schedule downloads (say for when you're asleep), automatically retry/partial-resume a big download, throttle a download to a low rate, and so on? That's useful for some folks.
Edit: it's written in java. I'm laughing my ass off.
If there are any network bottlenecks, including at the host, that are enough to stop you saturating your own last-mile link with a single stream, that is simply not true. Or if the sending end sets per-stream limits. Downloading multiple streams from the same source can significantly speed up the process. Maybe it often doesn't, but that doesn't make it snake-oil.
> memory bandwidth over a decade ago was around 3GB/sec
Memory bandwidth is practically irrelevant if the main bottleneck is the remote network or something between you and it.
Twenty year old CPUs had 1600MB/sec memory. 4-5 years later memory speed doubled. In 2010 it doubled again.
The Ryzen in my current desktop has memory that tops out at 25GB/sec.
And some of them reset and restart the download, in case that the bottleneck is neither in the machine nor the server (for example, some routers will throttle long-lived connections).
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Ra...
Also interesting to note that it's not just HTTP it supports but other protocols I haven't heard of like DASH, HDP, HLS [1].
[0] https://github.com/subhra74/xdm/blob/master/app/src/main/jav...
[1] https://github.com/subhra74/xdm/tree/master/app/src/main/jav...
Apparently it is being rewritten from Java to .Net: https://github.com/subhra74/xdm/discussions/768
Want to add a UI? Take a look at WebUI-Aria2: https://github.com/ziahamza/webui-aria2
It is also very easy to integrate with othersoftware via the RPC interface https://aria2.github.io/manual/en/html/aria2c.html?highlight.... You can find wrappers in some languages e.g. the JS bindings: https://github.com/sonnyp/aria2.js
The video platform that I couldn't find a way to download is JW Player. I tried various extensions (Firefox/Chrome) and standalone apps, they couldn't download the video stream from JW Player. The only thing they could grab is m3u/m2u8 file and that it.
Nice to see there are another Java downloader.
* https://en.wikipedia.org/wiki/XDM_(display_manager)
* https://en.wikipedia.org/wiki/X_display_manager
Not sure the Latin alphabet is wide enough for all the acronyms we need in recent years. :)
Edit: reminds me of a story. Supposedly (!) the reason "Xkcd" is named so is because at the time of creation there were no Google results for that letter combination.
It really depends on the cause of the bottleneck. Sometimes you need capabilities on both ends though.
Also, while I'm nitpicking: "xdm" is and will always be the X Display Manager. :(
Steam uses BitTorrent, which is built to parallelize downloads - effectively implementing what download managers do. I think Firefox these days also does clever stuff behind the scenes. The result is downloads that complete faster than before, even though the theoretical max speed of any given connection is the same.
Download managers are somewhat old-fashioned simply because modern software learnt from them and now tries their tricks out of the box.
No, it downloads encrypted chunks from Steam's CDN.
> Multi-threaded fragment downloads: Download multiple fragments of m3u8/mpd videos in parallel. Use --concurrent-fragments (-N) option to set the number of threads used
Not all sites are willing to max out your pipe with a single connection. Making multiple connections to those sites often gets around that.
I've been stuck with a throttled 10mbit fiber connection before, and still had times where sites would throttle me more than that. Now that I have a gigabit connection, it's a much more common problem.