Introduction
Streamlink is a command-line tool that extracts video streams from websites and outputs them to a media player like VLC or mpv. Originally forked from Livestreamer, it has grown into the primary tool for watching live and on-demand video content outside the browser, saving bandwidth and CPU by avoiding web player overhead.
What Streamlink Does
- Extracts video stream URLs from 100+ supported streaming websites
- Pipes streams directly to your preferred media player (VLC, mpv, etc.)
- Supports stream quality selection from source/best down to specific resolutions
- Handles authentication for services that require login credentials
- Records streams to local files for later viewing
Architecture Overview
Streamlink uses a plugin-based architecture where each supported website has a dedicated plugin that handles URL resolution, authentication, and stream extraction. The core engine parses HLS, DASH, and RTMP stream manifests, selects the requested quality level, and forwards the media data to either a player via a named pipe or to a file via output writers. Plugins can be community-contributed and are distributed with the main package.
Self-Hosting & Configuration
- Install globally via pip, or use OS packages for system-wide availability
- Configuration file at
~/.config/streamlink/configstores default options and player path - Set default player with
--player mpvor--player vlcin the config file - Plugin-specific options (authentication tokens, cookies) can be stored in the config
- Supports HTTP proxy and SOCKS proxy for restricted networks
Key Features
- Direct playback in any media player eliminates browser overhead and ads
- Quality selection lets you choose exact stream resolution or auto-select the best available
- Stream recording to file for offline viewing with configurable output formats
- Plugin system supporting Twitch, YouTube, Crunchyroll, and 100+ other services
- Low resource usage compared to watching in a browser with JavaScript-heavy web players
Comparison with Similar Tools
- yt-dlp — focused on downloading rather than live playback; stronger for archival, weaker for live streams
- mpv + youtube-dl — mpv can call yt-dlp internally for similar results, but Streamlink has broader site support for live streams
- Livestreamer — the original project Streamlink forked from; no longer maintained
- FFmpeg — can record streams directly but requires manual URL extraction and has no plugin system
- VLC network streams — VLC can open URLs directly, but lacks Streamlink's site-specific extraction logic
FAQ
Q: Does Streamlink work with Twitch subscriber-only streams?
A: Yes, if you provide an OAuth token. Use --twitch-api-header or the Twitch plugin authentication options.
Q: Can I record a stream to disk?
A: Yes. Use the -o filename.ts flag to save the stream to a file instead of piping to a player.
Q: Which player works best? A: mpv and VLC are both well-supported. mpv tends to be lighter; VLC has a graphical interface for controls.
Q: Is there a GUI for Streamlink? A: Streamlink Twitch GUI is a separate community project that provides a graphical interface for Twitch specifically.