ffmpeg (optional, recommended) only required for transmuxing and transcoding streams.
chrome / chromium (optional) only required for capture and collect subcommands.
Visit releases for prebuilt binaries. Download and extract archive and copy vsd binary to any path. Now add that path to your PATH environment variable. Build instructions can be found here.
For quick testing purposes you may use https://test-streams.mux.dev as direct input. These streams are used by hls.js for testing purposes.
Downloading and saving HLS and DASH playlists to disk.
bash
$ vsd save <url> -o video.mp4
Collecting .m3u8 (HLS), .mpd (Dash) and subtitles from a website and saving them locally.
bash
$ vsd collect <url>
Help
bash
$ vsd --help
```
Download video streams served over HTTP from websites, HLS and DASH playlists
Usage: vsd.exe
Commands:
capture Capture requests made to fetch playlists
collect Collect playlists and subtitles from a website and save them locally
decrypt Decrypt encrypted streams using keys
extract Extract subtitles embedded inside an mp4 file
merge Merge multiple segments to a single file
save Download and save HLS and DASH playlists to disk
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help information (use --help for more detail)
-V, --version Print version information
```
bash
$ vsd save --help
```
Download and save HLS and DASH playlists to disk
Options:
-a, --alternative
Download alternative audio or subtitles stream from playlist instead all streams. For
downloading video stream only, use --skip flag
--baseurl
Base url for all segments. Usually needed for local m3u8 file
-d, --directory
Change directory path for temporarily downloaded files. By default current working
directory is used
-k, --key <|(base64:)KEY>
Decryption keys for decrypting CENC encrypted streams. Key value should be specified in
hex. Use base64: prefix if key is in base64 format. Streams encrypted with a single key
can use --key base64:MhbcGzyxPfkOsp3FS8qPyA== like key format. Streams encrypted with
multiple keys can use `--key
eb676abbcb345e96bbcf616630f1a3da:100b6c20940f779a4589152b57d2dacb like key format. This
option can be used multiple times
-o, --output
Client Options:
--cookies
Enable cookie store and fill it with some existing cookies. Example --cookies "foo=bar;
Domain=yolo.local" https://yolo.local. This option can be used multiple times
--enable-cookies
Enable cookie store which allows cookies to be stored
--header
Custom headers for requests. This option can be used multiple times
--proxy-address
Set http or https proxy address for requests
--user-agent
Update and set custom user agent for requests [default: "Mozilla/5.0 (Windows NT 10.0;
Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36"]
```
Alternatives
List of alternatives to vsd:
N_m3u8DL-RE is the best alternative to vsd. It also supports live playlist which vsd doesn't. It doesn't come with features like capture and collect. Also, CENC encrypted playlist decryption is slow.
N_m3u8DL-CLI is good but it is not cross platform.
m3u8-downloader is also good but it has very few customizable options.
webvideo-downloader opens websites using chrome and captures the m3u8 links and then downloads it. A similar functionality can achieved with vsd too by using capture and collect subcommands.
dash-mpd-cli is very good for downloading DASH playlists. Also most of the vsd functionalities for parsing and downloading DASH playlists is taken for it's main project.