overview

What this thing
actually is

Firelet is a video player for Windows. It is open source, it has no ads and no paid tier, and it is built around one idea: the place a video lives should not change how you watch it. This page is the long version — every source, every number, and the parts that are not finished.

What Firelet is

A single window that plays what you point it at. Under it sits libmpv — the same engine mpv uses — with a Qt shell around it, which is why an unusual container or a broken file tends to play here when it does not elsewhere.

Around that engine is a Source Bridge: a loopback HTTP server that turns any provider — an SFTP session, a WebDAV account, a torrent swarm, a SOCKS proxy — into the seekable ranged-HTTP stream the demuxer already understands. That one piece is why a file on a server and a file on your desk behave the same: same seek bar, same subtitle handling, same resume, same playlist.

What it is not: Firelet has no catalogue, no channel directory, no content search, and no index of anybody's cameras. It ships no anonymity software and starts none. Every address it opens is one you supplied or one your own network answered with. That is a design line, not a legal disclaimer — it is why there is nothing here to subscribe to.

Formats and the engine

Playback is libmpv with a statically linked FFmpeg, so the format list is FFmpeg's: MKV, MP4, AVI, MOV, WebM, TS, M2TS, FLV, OGM, WMV and the rest of the containers; H.264, HEVC, AV1, VP9, VC-1, MPEG-2, ProRes and older codecs for video; AAC, AC-3, E-AC-3, DTS, TrueHD, Opus, Vorbis, FLAC, MP3 and PCM for audio; SRT, ASS/SSA, PGS, VobSub, WebVTT and closed captions for subtitles.

Hardware decoding uses d3d11va and is on by default; it is verified on H.264. Audio device changes, drop-outs and driver hiccups are detected — if sound stops while the picture keeps going, Firelet says so and offers to reconnect rather than leaving you to work it out.

Opening a file while Firelet is already running reuses the existing window, and file-type associations are registered by the player itself, so the list of extensions lives in one place and uninstalling puts it back.

Everything it opens

SourceHow it behaves
Local files, USB, optical Played directly. Opening one enqueues the folder around it.
SMB / UNC (\\host\share) A path like any other — no drive letter, no local copy.
http(s), HLS, DASH, RTSP, FTP Paste a URL. Format comes from the response, not the extension.
SFTP, FTPS, WebDAV Saved sources, credentials optional and DPAPI-encrypted, streamed through the Source Bridge.
Magnet links and .torrent files Opt-in, off by default. Sequential streaming with piece deadlines steered by the read position.
M3U, M3U8, PLS, XSPF, ASX, WPL Channel lists and playlists, from a file or a URL.
Xtream Codes, Stalker / MAG Your own portal subscriptions, with their categories and guide.
ONVIF, RTSP, MJPEG, USB cameras Discovery by WS-Discovery, vendor path templates, or the webcam on this PC.
.onion, .i2p, .loki, Freenet Through the client you already run on loopback.

A torrent holding more than one video asks which to play, listing them in episode order with the largest preselected; junk beside the video never appears. All of its videos become the playlist, and each is remembered separately — leave in the middle of episode four and Continue watching comes back to episode four. Only the file you are watching is downloaded.

Playlists, IPTV and guides

Format is decided by content, never by extension. That matters most for .m3u8: an HLS stream and an IPTV channel list share it, and only the #EXT-X- tags tell them apart. HLS goes straight to the player; a channel list is parsed here.

Extended-M3U attributes are kept. group-title becomes the category, tvg-logo and tvg-id link the guide, and #EXTVLCOPT reaches the player as per-file options — without the user-agent and referrer a list names, a great many streams answer 403.

Past a dozen entries the panel grows a search box, a category filter and a sort: list order by default, since a curated list's order means something, then title, category or length. Live entries show LIVE; VOD shows its running time. Lists of 100,000 channels are the point of the design — parsing one takes about 280 ms and the view builds only the rows you can see.

XMLTV guides load automatically when a list names one, and each channel shows what is on now. Only a window around the present — six hours back, forty-eight forward — is kept, so a national guide costs a few megabytes rather than the hundred it is on disk.

Cameras

KindWhat you enterNotes
ONVIF the address, and the login The camera is asked for its own stream addresses, so there is no URL scheme to look up. Find cameras… probes the network and fills the rest in.
RTSP the address, the make, the login Templates for Hikvision (and its Annke/Swann/LTS clones), Dahua (Amcrest, Lorex, Imou), Axis, Reolink, TP-Link Tapo, Foscam, Vivotek and Uniview. Set Channels for a DVR/NVR and each channel becomes a row.
MJPEG the address and path For cameras older than RTSP — doorbells, baby monitors.
On this PC pick from a list A webcam or capture card, by the name Windows reports, optionally with a microphone paired to it.

Discovery sends a WS-Discovery probe out of every interface this machine has — a desktop with a VPN adapter and two Hyper-V switches sends multicast out whichever the routing table prefers, which is regularly not the one the cameras are on. Discovery never crosses a subnet and many cameras ship with it turned off, so anything it misses is added by address.

Subtitles

Ctrl+F searches online and matches the release you are watching. Three keyless providers, so no API credential is ever shipped in the source.

ProviderCoversNotes
Addic7ed TV Plain .srt with release names, through the Gestdown proxy.
SubSource Films and TV ZIP downloads, release names, hearing-impaired flags.
OpenSubtitles Films and TV The biggest catalogue, but no release names — so it ranks last. The IMDb id is resolved through IMDb’s own keyless suggestion endpoint.

Results are ranked by how many release tokens they share with your file — an exact S01E02.1080p.WEB-DL match beats a popular mismatch. The feature is off until you accept it once, and the dialog says exactly what is sent. Downloads land next to the video as <video>.<lang>.srt so the player finds them by itself next time; if that folder is not writable they go to the cache instead. Podnapisi was dropped in August 2026 — its domain stopped publishing an A record, so it could not be reached at all.

Privacy networks

Paste an .onion, .i2p, .loki or Freenet address and it plays, through the client you already run: your Tor SOCKS port (socks5h://127.0.0.1:9050), your I2P HTTP proxy (http://127.0.0.1:4444), your Freenet gateway (http://127.0.0.1:8888), or nothing at all for .loki, which Lokinet routes and resolves itself.

Names are resolved by the proxysocks5h, not socks5 — so a hidden-service name never leaves through your resolver. There is a switch to route every network source through Tor, and a separate one for torrent traffic that is off with a warning on it: the peer protocol still hands your address to the swarm, and the Tor Project asks people not to push bulk transfers through it.

The numbers

Measured on the development machine, not modelled. The ones that are not good are here too.

Cold start
81 ms
to a visible window (the target was 400 ms)
Memory
177 MB
while playing
Player binary
350 KB
firelet.exe itself
Installer
~45 MB
LZMA2, per-user, no admin prompt
Installed runtime
~150 MB
nearly all of it statically linked FFmpeg
100k-entry channel list
~280 ms
to parse; only visible rows are built
Hardware decode
d3d11va
verified on H.264
4K HEVC on an iGPU
not yet measured
needs a 4K HEVC sample and an iGPU laptop

Keyboard reference

  • Space / K Play or pause
  • F / double-click Fullscreen
  • Esc Back to the default window
  • ← / → Seek 5 seconds
  • Shift + ← / → Seek 60 seconds
  • Home Restart this one
  • ↑ / ↓ / wheel Volume
  • M Mute
  • , / . Frame step
  • [ / ] Speed down or up
  • N / P Next or previous
  • T Playlist panel
  • PgUp / PgDn Previous or next chapter
  • L A–B loop: mark A, mark B, clear
  • Z / X Subtitle delay
  • D Cycle deinterlace
  • V Picture size: fit, fill, stretch, original
  • I Playback info panel
  • S / Ctrl + S Screenshot with or without subtitles
  • Ctrl + O Open a file
  • Ctrl + U Open a URL or network source
  • Ctrl + Shift + U Saved sources
  • Ctrl + Shift + C Cameras
  • Ctrl + F Search subtitles online
  • Ctrl + M Mini player
  • Ctrl + , Settings
  • Ctrl + . Stop everything, back to the start screen
  • Ctrl + 1 / 2 / 3 Default window, cinema, fullscreen
  • Media keys Play/pause, next, previous, stop

What it sends

Nothing, by default. There is no telemetry, no crash reporting, no account, no update ping that carries anything about you, and no analytics of any kind. The exceptions are all things you ask for, and all of them are listed here:

  • Subtitle search — off until you accept it once. When on, a search sends the title, season, episode and language to the provider you are searching.
  • The sources you open — a URL, a server, a portal or a magnet talks to exactly the host you gave it, and to the swarm in the torrent case.
  • Camera discovery — a WS-Discovery probe on your own local network. It reaches no vendor cloud, no relay and no directory.

Credentials for servers and cameras are stored DPAPI-encrypted, and a camera password never appears in a title bar, a toast or a log — what is shown is the name you gave it. Cameras are deliberately kept out of Continue watching, because the address carries the password to a live picture of your home and the thumbnail would be a still of the room it points at.

Roadmap

Three states, and nothing dated — a date on an unfinished thing is a guess wearing a suit.

  1. now

    Windows build in test

    Phase 0 and the Phase 1 MVP are implemented and building: the frameless shell, transport, tracks and subtitles, playlist, resume, seek thumbnails, the Source Bridge and the opt-in torrent module.

  2. next

    Public download and the Microsoft Store

    A signed installer here, and the same build listed on the Store for people who would rather not download an installer from a website.

  3. next

    Firelet Video for Android

    The same sources — files, shares, servers, portals, cameras — on a phone and a tablet, on Google Play.

  4. next

    Firelet Audio for Android

    An audio player for the same library, with the same no-ads, no-account rules.

  5. later

    A feature-trimmed FFmpeg build

    The installed runtime is ~150 MB because FFmpeg is linked whole. Trimming it is the only way to make what sits on disk meaningfully smaller.

  6. later

    The 4K HEVC power measurement

    The Phase 0 exit criterion still open: under 15 % CPU on an integrated GPU. When it is measured, the number is published — pass or fail.

Licence

Firelet is free software. The application layer is GPL-2.0-or-later; the player and source layers are LGPL-2.1-or-later so they can be embedded in other software. Every source file carries an SPDX header matching its directory, and CI checks it.

The binary we distribute is a different question from the source, and the honest answer is stricter: it bundles a GPL-configured libmpv and FFmpeg, links Qt under LGPL v3, and contains Apache-2.0 components. That combination is GPLv3-effective, so the installer presents the GPLv3 and the licence texts and third-party notices ship beside the binary. Anyone who needs pure-LGPL terms pairs the LGPL directories with LGPL-configured builds of mpv and FFmpeg.

Contributions are accepted under the licence of the directory they touch, by DCO sign-off. There is no CLA — nobody is asked to sign their copyright over to anybody.