# fanmingming/live: A Direct-Access TV and Radio Logo Library With EPG and M3U Tools

> A GPL-3.0 icon library and set of web utilities for IPTV playlist builders, served over IPv4 and IPv6 from GitHub Pages and CloudFlare Pages. The logos are the product; the streams are not.

**fanmingming/live** — ✯ 可直连访问的电视/广播图标库与相关工具项目 ✯ 🔕 永久免费 直连访问 完整开源 不断完善的台标 支持IPv4/IPv6双栈访问 🔕

- Repository: https://github.com/fanmingming/live
- Website: https://live.fanmingming.com/
- Stars: 28,471 · Forks: 4,217
- Language: JavaScript
- License: GPL-3.0
- Published: 2026-09-21 · Updated: 2026-09-21 · Language: en
- Canonical page: https://hysenlabs.com/projects/fanmingming-live

## The gap fanmingming/live fills: logos and plumbing, not streams

IPTV playlists are easy to write and ugly to look at. A line in an M3U file needs a tvg-logo attribute to show a channel icon, and most people assembling a playlist by hand end up with either no icons or dead image links. This project publishes a directory of television and radio logos under predictable URL paths, so a playlist line can point at a stable address instead of a file someone re-uploaded to an image host.

The audience is narrow and specific: people who maintain their own m3u files and subscribe to them in a player. The README's own workflow assumes that. You download a blank demo.m3u, replace placeholder stream URLs with ones that work on your network, upload the result to a GitHub repository, enable Pages, and point your player at it. The project supplies the logos, the EPG endpoint, and a handful of conversion tools. It does not supply working streams, and the README is explicit that it stores no streaming content and that all legal responsibility falls on the user.

The logo library itself is the durable part. Television icons are served from the tv/ directory and radio icons from radio/, both reachable through the live.fanmingming.cn mirror domain. The README lists the last update dates for each as 2025.04.01 for television and 2024.8.29 for radio, with a 2025.04.01 changelog entry adding a Beijing TV 4K logo. Those dates are worth reading carefully: the icon set is updated by pull request, not on a schedule.

## How the logo URLs, EPG endpoint and mirror domains are wired

There is no application server in the usual sense. The repository is a static site. The main domain live.fanmingming.com is built by GitHub Pages and sits behind CloudFlare for CDN and security, according to the README. The mirror domain live.fanmingming.cn serves the same resources and is built by GitHub Actions onto CloudFlare Pages. That split matters when you are debugging a broken icon: the two hostnames are separate deployments of the same content, and the README's examples mix them, using .cn for logo and tool paths and .com for the online M3U-to-TXT demo link.

Logo addressing is path-based and name-driven: https://live.fanmingming.cn/tv/{name}.png, where {name} is the channel identifier such as CCTV1. Radio follows the same shape under /radio/. Because the filename is the channel name, a playlist author has to know the exact spelling used in the repository. There is no search endpoint documented, so the tv/ and radio/ directories in the repository are the index.

The EPG endpoint is a single XML file at https://live.fanmingming.cn/e.xml, and the sample playlist references it through the x-tvg-url attribute. The README states plainly that this EPG is distributed by the 112114.xyz site and that the project cannot ensure its accuracy. Treat the guide data as a convenience, not as a source of truth for programme times.

Around that core sit four browser tools: an m3u8 online downloader, a TXT-to-M3U converter, an online M3U-to-TXT converter, and an M3U8 web player. The README says the M3U-to-TXT tool is built on Vercel and does not log access, and that the TXT-to-M3U tool converts in the browser without uploading your file. Those two claims are about where your data goes, and they are the kind of claim you should confirm yourself before pasting a private playlist into any web form.

## Building a playlist with the logo library and the demo.m3u template

The README's workflow starts with a blank template rather than an installer. Download demo.m3u from the .cn mirror and open it in a text editor. The critical part is the header line and the attribute block, which is where the EPG URL and the logo path are declared.

```
#EXTM3U x-tvg-url="https://live.fanmingming.cn/e.xml"
#EXTINF:-1 tvg-name="CCTV1" tvg-logo="https://live.fanmingming.cn/tv/CCTV1.png" group-title="央视",CCTV-1 综合
可用的CCTV1节目源
```

Replace the placeholder line under each #EXTINF entry with a stream URL that works on your own network. The README gives no source for those URLs and states that the contents of /tv/m3u/ and /radio/m3u/ are collected from the internet for testing and research, with no guarantee of validity. You are expected to bring your own.

Once the file is edited, upload it to a GitHub repository and enable Pages for that repository. The README points at GitHub's own Pages quickstart documentation for that step rather than reproducing it. Then subscribe to the published URL in your player. If you only want to check a single stream before committing to a playlist, the web player takes the stream as a query parameter:

```
https://live.fanmingming.cn/player/?vurl=https://0472.org/hls/cgtn.m3u8
```

The README notes one constraint for that player: the stream URL must use https. An http stream will not play there, even if it plays fine in a desktop application.

## Where fanmingming/live stops being useful

The most important limitation is stated by the project itself: it does not store any streaming content, and the m3u files under /tv/m3u/ and /radio/m3u/ are collected from the internet with no guarantee of validity. This is not a stream directory that someone checks daily. It is a set of example playlists. If your goal is a source of working channels that stays working, this project is the wrong tool, and the README says so in two separate places.

The EPG is the second weak point. It is redistributed from 112114.xyz, and the project disclaims accuracy. Programme schedules shift, and a guide that is merely redistributed cannot be corrected by the project. If your setup depends on accurate start times for recording, this endpoint is a liability rather than an asset.

Third, the update cadence for logos is uneven and driven by contributions. The README shows television icons last updated 2025.04.01 and radio icons 2024.8.29, and describes the contribution path as forking the repository, uploading missing logos to tv/ or radio/, and opening a pull request that gets verified before publication. That means a missing or outdated logo is fixed by you, not by a support channel. The Telegram contact @AirfoneBot exists for resource access problems, but the README frames it as a place to report access issues, not a general support desk.

Finally, the tools are single-purpose web pages. The TXT-to-M3U converter is client-side, which is good for privacy, but it is a converter, not a validator. It will not tell you whether the stream URLs in your pasted list actually resolve.

## Compared with pulling logos from an EPG or logo aggregator

The obvious alternative is to let a player or an EPG source supply the icons. Many IPTV clients fetch tvg-logo images from whatever URL the playlist author embedded, and some guide aggregators bundle logos alongside programme data. The difference in approach is ownership of the asset. With an aggregator, the logo URL is whatever that service decided to publish, and it can change or disappear without notice. With fanmingming/live, the logo is a file in a public Git repository, addressed by channel name, under a GPL-3.0 licence, and you can fork it, add the missing icon, and serve your own copy.

That forkability is the real distinction. If you need a logo that does not exist, the README's contribution path is the same path you would use for your own private copy: put the file in tv/ or radio/ and host it. You do not have to wait for upstream. The trade-off is that you also inherit the maintenance. A self-hosted fork of a logo directory is a directory you now have to keep current.

The second alternative is to skip logos entirely and run a plain playlist. That is a legitimate choice. Logos cost bandwidth and add a second failure mode per channel: a stream that works but an icon that 404s still looks broken in most players. If your playlist is for personal use on one device, the icon library is decoration. It becomes more valuable when the playlist is shared, because the icons are what make a long channel list scannable.

## Licence, maintenance and what upgrading actually costs

The repository is licensed GPL-3.0. For the common case of pointing a playlist at a logo URL, the licence question is mostly about redistribution: if you fork the repository and republish the icons, the GPL-3.0 terms travel with the fork. This is not legal advice, and anyone repackaging the icon set into a product should read the LICENSE file rather than rely on a summary.

Maintenance is a real consideration because the project is a static site with two build pipelines. The .cn mirror is built by GitHub Actions onto CloudFlare Pages; the .com domain is built by GitHub Pages behind CloudFlare. An upgrade is therefore not something you install. There is no version number and no release artifact. Your playlist keeps working as long as the hostnames resolve and the paths stay the same, and it breaks silently if a path convention changes or a domain is retired.

The practical cost of adopting this is the cost of pinning. If you embed live.fanmingming.cn URLs directly in a shared playlist, you depend on that domain. If you mirror the icons into your own repository, you take on the update work but remove the dependency. The README's own contribution instructions describe exactly the mechanics for the second option, which is a hint about how the maintainer expects the project to be used.

## Conclusion

Adopt it if you are assembling an m3u playlist and need channel logos, an EPG URL, or a quick TXT-to-M3U conversion, and you accept that every stream URL in /tv/m3u/ and /radio/m3u/ comes from the internet and is not guaranteed to work. Skip it if you need a maintained stream directory, a player, or a guarantee about EPG accuracy, because the README states the EPG is distributed by 112114.xyz and the project cannot ensure its accuracy. Verify first that the specific logo filename you need exists in the tv/ or radio/ directory and that your player can reach live.fanmingming.cn over the protocol you use, since the M3U8 Web Player requires an https stream URL.

## FAQ

### What is fanmingming/live?

It is a television and radio logo library with related web tools, including an EPG endpoint, a TXT-to-M3U converter, an M3U-to-TXT converter, an m3u8 downloader and an M3U8 web player. The README describes it as a directly accessible icon library and tool project. It does not store any streaming content.

### How do I use a fanmingming/live logo in my m3u playlist?

Logo images are addressed by channel name under the tv/ or radio/ path, for example https://live.fanmingming.cn/tv/CCTV1.png, and you set that as the tvg-logo attribute in an #EXTINF line. The README's demo.m3u template shows the full attribute block including tvg-name, tvg-logo and group-title.

### Does fanmingming/live provide working IPTV streams?

No. The README states that the project stores no streaming content and that the files under /tv/m3u/ and /radio/m3u/ are collected from the internet for testing and research, with no guarantee of validity. You are expected to supply your own stream URLs in the template.

### Is the fanmingming/live EPG data accurate?

The README states that the EPG interface is distributed by the 112114.xyz site and that the project cannot ensure its accuracy. Treat the e.xml endpoint as a convenience rather than an authoritative programme guide.

## Sources

- [fanmingming/live on GitHub](https://github.com/fanmingming/live)
- [Issues](https://github.com/fanmingming/live/issues)
- [License: GPL-3.0](https://github.com/fanmingming/live/blob/main/LICENSE)
- [Project website](https://live.fanmingming.com/)
- [README](https://github.com/fanmingming/live/blob/main/README.md)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/fanmingming-live
