Ghost Downloader

Recording Live Streams

Record HLS/DASH live streams with real-time decryption, including on Android.

Ghost Downloader can record any live stream distributed via HLS (M3U8) or DASH (MPD). Recording is powered by the N_m3u8DL-RE runtime -- one-click install in Settings on desktop, built-in on Android.

Starting a Recording

Paste the live stream's M3U8 or MPD manifest URL into the app. The app automatically detects whether the manifest is a live stream (HLS checks for a missing #EXT-X-ENDLIST; DASH checks for type="dynamic").

If the manifest is a multi-bitrate master playlist, the Task Draft card shows a resolution dropdown to pick a specific bitrate tier.

The Task Draft card for a live Task also shows a recording duration limit -- three spinboxes for hours, minutes, and seconds. Leave them at zero for unlimited duration (record until manually stopped).

During Recording

Once recording starts, the task card shows real-time status:

  • Elapsed recording time and duration limit (if set)
  • Current status: "Recording" or "Waiting" (waiting for the next manifest refresh)
  • Live download speed

Live recording does not support pausing. The recording process continuously fetches the manifest, downloads new segments, and merges them in real time. The start/stop button on the task card changes to a confirmation icon during recording; clicking it terminates the process and finalizes the recorded content.

Real-time Decryption

If the live stream uses AES-128 or other encryption, N_m3u8DL-RE can decrypt MP4 segments on the fly (Settings → M3U8 Download → MP4 Real-time Decryption, on by default). You can also provide decryption keys manually in KID:KEY format on the Task Draft card, or point to a KEY text file.

The decryption engine defaults to FFmpeg but can be switched to MP4Decrypt or Shaka Packager (you must provide the executable path yourself).

When Recording Ends

Recording ends when:

  1. The configured duration limit is reached
  2. The user clicks the stop button
  3. The live stream ends (manifest is marked as endlist)
  4. The app exits

In the first three cases, recorded content is merged into a complete file. In the fourth case (app exit or crash), the app marks the unfinished live recording as completed on next launch -- because live streams cannot be resumed from a checkpoint, the downloaded segments are the final result.

The output format is .ts (MPEG-TS). Unlike VOD Tasks, it is not automatically remuxed to MP4 or MKV.

Options related to live recording under Settings → M3U8 Download:

SettingEffect
Keep original segments for live streamsRetains downloaded raw segment files even after real-time merging
Live Pipe RemuxPipes data to FFmpeg for real-time remuxing into a container during recording
Correct VTT subtitles for live streamsAdjusts VTT subtitle timeline based on audio start time
Live refresh wait timeSeconds between manifest fetches; 0 for auto
Live segment fetch countMax segments fetched per refresh; 0 for auto

Known Limitations

  • Live recording does not support pause and resume. Stopping finalizes the recording; it cannot be continued.
  • Output is fixed to .ts format. To convert to MP4, use FFmpeg to remux manually.
  • If network connectivity is lost during recording for longer than the segment validity period, that portion of the recording will be missing.

On this page