Videodl Installation
Environment Requirements
Operating system: Linux, macOS, or Windows.
Python version: Python 3.10+ with requirements in videodl requirements.txt.
Installation Instructions
You have three installation methods to choose from,
# from pip
pip install videofetch
# from github repo method-1
pip install git+https://github.com/CharlesPikachu/videodl.git@master
# from github repo method-2
git clone https://github.com/CharlesPikachu/videodl.git
cd videodl
python setup.py install
Some of the video downloaders supported by videodl rely on additional CLI tools to enable video decryption, stream parsing and downloading, accelerated stream downloading, and other extended features such as resuming interrupted downloads. Specifically, these CLI tools include,
FFmpeg: All video downloaders that need to handle HLS (HTTP Live Streaming) streams depend on FFmpeg. ❗ Therefore, we recommend that all videodl users install FFmpeg. ❗ Specifically, you need to ensure that, after installation, FFmpeg can be invoked directly from your system environment (i.e., it is on your
PATH). A quick way to verify this is to open a terminal (or Command Prompt on Windows) and run,ffmpeg -versionIf the installation is correct, you should see detailed version information instead of a “command not found” or “’ffmpeg’ is not recognized” error.
N_m3u8DL-RE: FFmpeg is a general-purpose media tool that can download standard HLS/m3u8 streams, but it assumes that the playlist and segment URLs strictly follow the protocol. N_m3u8DL-RE is a specialized m3u8 downloader that adds extensive logic for handling encryption, anti-leech headers, redirects, and malformed playlists, so it can capture many “protected” or non-standard videos that FFmpeg fails on. In many cases it’s also faster, because N_m3u8DL-RE can download HLS segments in parallel with optimized retries/merging, while FFmpeg typically pulls segments sequentially by default. ❗ Therefore, we recommend that all videodl users install N_m3u8DL-RE to ensure videodl delivers the best possible performance. ❗ You can skip installing it, but videodl may then be unable to parse some platforms, including but not limited to,
CCTVVideoClient, FoxNewsVideoClient, TencentVideoClient, GVVIPVideoClient, SnapAnyVideoClient, VgetVideoClient, ArteTVVideoClient, XMFlvVideoClient, RedditVideoClient, IIILabVideoClient, WWEVideoClient, IQiyiVideoClient, PlusFIFAVideoClient, IM1907VideoClient, M1905VideoClient, SENJiexiVideoClient, etc.
and downloads from many other sites that provide m3u8/HLS streams may also be significantly limited. As with FFmpeg, after installation you should make sure this tool can be run directly from the command line, i.e., its location is included in your system
PATH. A quick way to check whether N_m3u8DL-RE has been installed successfully is to open a terminal (or Command Prompt on Windows) and run,N_m3u8DL-RE --versionIf N_m3u8DL-RE is installed correctly,
N_m3u8DL-RE --versionwill print the N_m3u8DL-RE version (e.g.,0.5.1+c1f6db5639397dde362c31b31eebd88c796c90da). If you see a similarcommand not found/not recognizederror, N_m3u8DL-RE is not installed correctly or not available on yourPATH.Bento4: Bento4 is an open-source MP4/DASH/HLS/CMAF toolkit, and in the N_m3u8DL-RE ecosystem it is mainly related as the source of auxiliary utilities such as “mp4decrypt” for handling certain packaged media workflows. Therefore, when using N_m3u8DL-RE to handle some packaged media workflows that involve encryption (e.g.,
TBNUKVideoClient,PlayerPLVideoClientandPlusFIFAVideoClient), you need to make sure the Bento4 tools are available in your runtime environment. A quick way to verify Bento4 is that you should be able to runmp4decrypt --versionIf it returns the version information successfully, Bento4 is installed correctly, otherwise the installation has failed or the tool is not in your
PATH.Node.js: Currently, Node.js is only used in
YouTubeVideoClient,CCTVVideoClientandTencentVideoClientto execute certain JavaScript code for video parsing. Therefore, if you don’t need to useYouTubeVideoClient,CCTVVideoClientandTencentVideoClient, you can safely skip installing this CLI tool. A quick way to check whether Node.js has been installed successfully is to open a terminal and run,node -v (npm -v)
If Node.js is installed correctly,
node -vwill print the Node.js version (e.g.,v22.11.0), andnpm -vwill print the npm version. If you see a similarcommand not found/not recognizederror, Node.js is not installed correctly or not available on yourPATH.aria2c: videodl now also supports manually integrating aria2c to accelerate downloads (for example, MP4 files) and to enable resuming interrupted video downloads, etc. Before using this feature, you must ensure that aria2c is available on the system
PATHin your runtime environment. You can verify this by opening a terminal and runningaria2c --version(oraria2c -v); if the command returns version information instead of a“command not found”error, then aria2c is correctly installed and detectable. On Linux/macOS you can also runwhich aria2c, and on Windowswhere aria2c, to confirm that the executable can be found. To enable aria2c during video downloading, please refer to the Quick Start section.