47 lines
1.2 KiB
Markdown
47 lines
1.2 KiB
Markdown
# SDL - Stream Downloader CLI
|
|
|
|
`sdl` is a simple command-line tool written in Go for downloading HTTP Live Streaming (HLS) video streams.
|
|
|
|
## Installation
|
|
|
|
```bash
|
|
go install ./...
|
|
```
|
|
|
|
This installs the `sdl` binary into your `GOBIN` (defaults to `~/go/bin`). Ensure this directory is on your `PATH`.
|
|
|
|
## Usage
|
|
|
|
```bash
|
|
sdl https://example.com/page-with-video
|
|
```
|
|
|
|
If the target URL is a webpage, `sdl` scans it for embedded HLS playlists (`.m3u8`) and downloads each one it finds. You can override the output filename (or prefix when multiple videos exist):
|
|
|
|
```bash
|
|
sdl -o myvideo.mp4 https://example.com/path/to/playlist.m3u8
|
|
```
|
|
|
|
## Features
|
|
|
|
- Follows HTTP redirects (up to 5 hops)
|
|
- Scrapes webpages for embedded HLS playlists (`<video>`, `<source>`, data attributes, script references)
|
|
- Supports HLS master playlists (auto-select highest bandwidth variant)
|
|
- Produces `.mp4` output via `ffmpeg`
|
|
- Respects basic HTTP timeouts (30 seconds per request)
|
|
|
|
## Limitations
|
|
|
|
- Requires `ffmpeg` in `PATH` for transmuxing
|
|
- Webpage scraping is best-effort; dynamic players that load playlists via JS APIs may not be detected
|
|
- No retry logic beyond standard HTTP redirects
|
|
|
|
## Development
|
|
|
|
```bash
|
|
go build ./...
|
|
go test ./...
|
|
```
|
|
|
|
Contributions and issue reports are welcome!
|