explaingit

nilaoda/n_m3u8dl-cli

15,911C#Audience · generalComplexity · 2/5LicenseSetup · easy

TLDR

A Windows command-line downloader that grabs HLS or DASH video streams, decrypts AES segments, and stitches them into a single MP4 or TS file.

Mindmap

mindmap
  root((N_m3u8DL-CLI))
    Inputs
      M3U8 or DASH URL
      Custom HTTP headers
      AES key
    Outputs
      MP4 or TS file
      Subtitles and audio tracks
    Use Cases
      Archive a stream
      Capture a live broadcast
      Bulk lecture download
    Tech Stack
      C#
      .NET Framework
      FFmpeg
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Save a recorded lecture stream as an MP4 file you can watch offline.

USE CASE 2

Record a live HLS broadcast into a single file while it is being aired.

USE CASE 3

Download only minutes 10 to 25 of a long stream instead of the whole thing.

USE CASE 4

Pull a DASH stream that needs a custom Authorization header from a paid service you have rights to.

Tech stack

C#.NETFFmpeg

Getting it running

Difficulty · easy Time to first run · 5min

Windows-only .NET Framework binary, the original project is in maintenance, use N_m3u8DL-RE for cross-platform.

MIT license: use freely for any purpose including commercial, just keep the copyright notice.

In plain English

N_m3u8DL-CLI is a command-line tool for downloading video streams that use the M3U8 or HLS (HTTP Live Streaming) format. M3U8 is a common format used for streaming video online, rather than one large file, the video is split into many small segments described in a playlist file. This tool downloads all those segments and assembles them into a single video file (MP4 or TS format). The tool supports several practical features for video downloading. It can handle AES-128-CBC encryption (a common method used to protect streaming video) and automatically decrypts the segments. Downloads can run in parallel using multiple threads to speed things up. You can also set a maximum download speed, resume interrupted downloads, record live streams, and download only a specific portion of a video by time range. Custom HTTP headers are supported, which is useful for sites that require specific authentication tokens or cookies. The tool also supports DASH streams and can download separate audio and subtitle tracks from a stream, then optionally merge them into a single file. A simple graphical helper is included for generating common command-line arguments without typing them manually. The readme notes that this original version is based on .NET Framework and is now in maintenance mode, with a newer cross-platform rewrite called N_m3u8DL-RE available for those who need support beyond Windows. Written in C#.

Copy-paste prompts

Prompt 1
Show me the N_m3u8DL-CLI command to download an HLS stream with a custom Referer header and 16 parallel threads.
Prompt 2
Walk me through using the GUI helper to build a command line for downloading a stream with separate audio and subtitle tracks.
Prompt 3
Explain how N_m3u8DL-CLI handles AES-128 segment decryption and when I need to supply the key manually.
Prompt 4
Compare N_m3u8DL-CLI with the newer N_m3u8DL-RE rewrite and tell me which one to pick on macOS.
Open on GitHub → Explain another repo

← nilaoda on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.