A video downloader that extracts metadata and media from supported sites, downloads via HTTP, HLS, or DASH with parallel chunking, and post-processes with FFmpeg library bindings. Inspired by yt-dlp.
- HTTP, HLS, and DASH (static VoD) downloads with resume support
- Parallel chunked transfers with adaptive controller
- FFmpeg-based post-processing (remux, transcode, audio extraction, metadata/thumbnail embedding)
- Audio normalization (peak / EBU R128 loudnorm) with limiter-boost fallback
- Subtitle download, format conversion, and embedding
- yt-dlp-compatible format selection and output templates
- Browser cookie extraction (Chrome, Firefox) and Netscape cookie files
- Browser TLS fingerprint impersonation for sites that block other downloaders
- Keyword search across supported sites with filters (13 search-capable extractors)
- Signed WASM plugin system for adding new sites without recompiling
- Rate limiting, download archive, JSON metadata export
- Interactive format and container selection
PornHub, XHamster, RedTube, HQPorner, XTits, TNAFlix, EMPFlix, MovieFap, NineAnime, KoreanPornMovie, XVideos, XNXX, EPorner, ABXXX, plus a generic fallback extractor.
See rdlp --list-extractors for the current list.
Requires Rust 1.85+ and FFmpeg shared libraries.
git clone https://github.com/crippledgeek/rdlp.git
cd rdlp
cargo build --release # library crates only
cargo build --release -p rdlp-cli # CLI binary
cargo build --release -p rdlp-desktop # Tauri desktop app
cargo build --release --workspace # everything
The workspace uses default-members so cargo build compiles only library
crates. Use -p to target a specific binary.
See BUILDING.md for platform-specific FFmpeg setup and troubleshooting.
rdlp URL # download best quality
rdlp -i URL # interactive format selection
rdlp --remux=mp4 URL # remux to MP4
rdlp -f "bv[height<=720]+ba" URL # format selection
rdlp --audio-multistreams URL # use bv+ba/b instead of bv*+ba/b
rdlp -x --audio-format=flac URL # extract audio
rdlp --cookies-from-browser chrome URL # use browser cookies
rdlp --dump-json URL # metadata as JSON
rdlp --search "query" --search-site redtube # keyword search
Run rdlp --help for the full option list.
19-crate Cargo workspace. Three-stage pipeline: extract, download, post-process.
| Crate | Purpose |
|---|---|
rdlp-types |
Data types (Config, Format, InfoDict) |
rdlp-core |
Traits and error types |
rdlp-api |
Frontend-agnostic download engine |
rdlp-security |
SSRF protection, URL validation |
rdlp-http |
HTTP client factory with TLS fingerprint impersonation |
rdlp-ratelimit |
Token-bucket rate limiter |
rdlp-crypto |
URL decryption |
rdlp-extractor |
Site extractors and search |
rdlp-downloader |
HTTP, HLS, and DASH downloaders |
rdlp-ffmpeg |
FFmpeg library bindings |
rdlp-postprocess |
Post-processing pipeline |
rdlp-cookies |
Browser cookie extraction |
rdlp-jsinterp |
JavaScript interpreter |
rdlp-plugin-manifest |
WASM plugin manifest schema |
rdlp-plugin |
WASM plugin host (Wasmtime + WASI 0.2) |
rdlp-probe |
Extractor authoring CLI (fetch, eval, extract, record) |
rdlp-table |
Format selection table layout |
rdlp-desktop |
Tauri v2 desktop GUI |
rdlp-cli |
CLI application |
See CONTRIBUTING.md and CODING_RULES.md. For adding a new site extractor, start at EXTRACTORS.md.
Dual-licensed under either of:
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
rdlp links against FFmpeg shared libraries at build time via ffmpeg-the-third. The Rust source code in this repository is dual MIT/Apache-2.0 licensed and does not contain any GPL or nonfree code.
Release binaries are built against LGPL-only FFmpeg (system packages) and can be freely distributed.
Local builds may link against a custom FFmpeg compiled with
--enable-gpl or --enable-nonfree (e.g., libfdk-aac). Binaries built
this way are subject to FFmpeg's license terms and must not be
redistributed if nonfree codecs are included. See the
FFmpeg Legal page for details.