简介
什么是 nodecast-tv ?
nodecast-tv 是一个自托管的 Web 应用,专门用来通过浏览器直接播放来自 Xtream Codes 或 M3U 提供商的直播电视、电影和剧集,可以把它看作是一个“浏览器里的 IPTV 中心”。它的设计重点是高性能和顺滑的交互体验,即便面对包含上千甚至上万频道的大型播放列表,也能做到快速加载和流畅浏览。
主要特点
- 📺 直播电视:支持快速频道切换,频道按分组分类显示,并内置搜索功能,方便在大列表中迅速找到想看的内容。
- 📅 电子节目指南 (EPG):提供类似机顶盒的交互式网格式节目指南,带 24 小时时间轴、节目信息查看、搜索和时间轴缩放/拖动等动态调整能力。
- 🎬 视频点播 (VOD) 支持:针对电影和电视剧提供独立分区,展示海报、简介、年份、演员等元数据,并支持按季/按集浏览剧集列表,体验接近常见流媒体服务。
- ❤️ 收藏系统:可以把常看的频道、电影和剧集统一加入收藏列表,收藏是账户级的,支持即时同步,方便在不同设备/浏览器会话中保持习惯。
- 🔐 用户认证:内置用户体系,支持注册/登录和角色区分,既有管理员(可配置源、修改设置),也有普通观众(只负责观看)。
- ⚡ 高性能:针对超大播放列表(例如 7000+ 频道)做了特别优化,通过虚拟滚动和批量渲染技术,减少浏览器压力,在频道列表和 VOD 库中滚动、搜索时依然保持顺畅。
- ⚙️ 管理功能:
- 支持添加
Xtream Codes和M3U两种类型的播放列表源。 - 可以隐藏不需要的内容类别或分组,让界面更简洁。
- 可以配置播放偏好(如记忆音量、是否自动播放下一集等)。
- 支持添加
- 🔊 音频转码:可选使用基于
FFmpeg的音频转码,对Dolby/AC3/EAC3等编码进行兼容处理,解决部分浏览器或设备不支持特定音频格式的问题。 - 📦 流重封装:对于一些只提供原始
MPEG-TS流的 IPTV 中间件,可以借助轻量级的FFmpeg重封装,把流转换为更适合浏览器播放的形式,而不必做全量转码。 - 🐳 Docker 支持:官方提供容器镜像,通过 Docker 或 Docker Compose 即可快速部署,这种“容器化安装”的方式与许多自建服务(如私有 DNS、监控工具等)在服务器/NAS 上的部署方式类似,更便于迁移和备份。[1][4]
应用场景
- 个人媒体中心:在家里或个人服务器上搭建一个私有的 IPTV 中心,只需浏览器就能访问,适合将手头的
Xtream Codes或M3U资源集中起来统一管理和观看。 - 家庭影音库:将
M3U源中的电影与剧集集中展示,用类似流媒体平台的界面管理和播放,搭配 EPG 使用,可以在一个页面里完成“直播 + 点播”的家庭影音体验。 - 社区流媒体:对小型社区、亲友群体来说,可以作为一个共享 IPTV 资源的解决方案,由管理员统一维护源和节目指南,观众只需使用账户登录即可观看。
对比 neTV
nodecast-tv 和 neTV 都是基于 Web 的 IPTV 播放器,但处理视频的方式不同:
neTV:主要依赖服务端进行转码或重新编码,由服务器来适配不同终端的播放能力,服务器负载会更高。nodecast-tv:把视频解码工作交给浏览器,服务器只负责转发或轻量处理,这意味着最终能否播放、支持哪些编解码器,完全取决于浏览器自身的原生解码能力。
【注意】:
Chrome在部分macOS设备上可能通过硬件解码器支持HEVC。Edge如果需要播放HEVC内容,需要在Microsoft Store额外购买“HEVC 视频扩展”。Safari对VP9的支持情况与设备型号和系统版本有关,较新系统/设备的支持更好。

总的来说,nodecast-tv 更适合将服务器压力降到最低,把计算工作交给用户终端的现代浏览器,对于个人或小型团队来说是一个兼顾易用性和性能的媒体流平台。
安装
下面示例是在群晖 NAS 上,通过 Docker 的方式安装 nodecast-tv。这种思路与在 Linux 服务器上用 Docker 部署其他服务(例如 AdGuard Home、Change Detection 等)是一致的:先准备目录,再用 Docker 或 Docker Compose 启动容器。[1][4][6]

如果你已经熟悉命令行,直接使用 docker CLI 会更省事。
首先在群晖上创建数据目录,并启动容器:
# 新建文件夹 nodecast-tv 和子目录
mkdir -p /volume1/docker/nodecast-tv/data
# 进入 nodecast-tv 目录
cd /volume1/docker/nodecast-tv
# 运行容器
docker run -d \
--restart unless-stopped \
--name nodecast-tv \
-p 3124:3000 \
-v $(pwd)/data:/app/data \
-e NODE_ENV=production \
-e PORT=3000 \
ghcr.io/technomancer702/nodecast-tv:latest
也可以使用 docker-compose 安装,把下面内容保存为 docker-compose.yml:
services:
nodecast-tv:
image: ghcr.io/technomancer702/nodecast-tv:latest
container_name: nodecast-tv
restart: unless-stopped
ports:
- "3124:3000" # Host:Container
volumes:
- ./data:/app/data
environment:
- NODE_ENV=production
- PORT=3000 # Optional: Internal container port
然后通过 SSH 登录到你的群晖,在对应目录执行:
# 新建文件夹 nodecast-tv 和子目录
mkdir -p /volume1/docker/nodecast-tv/data
# 进入 nodecast-tv 目录
cd /volume1/docker/nodecast-tv
# 确保 docker-compose.yml 已放在当前目录
# 一键启动
docker-compose up -d
这种基于 Docker 的部署方式有几个优点:配置集中在 docker-compose.yml 中,方便修改;数据目录映射到宿主机,升级容器镜像不会丢失配置;出问题时也可以类似其他容器化服务那样,通过重启和日志排查来快速恢复。[1][4]

运行
容器启动成功后,在浏览器地址栏输入:
http://群晖IP:3124
首次访问会进入注册页面,需要先创建一个管理员账户。

注册并登录后,就能看到主界面,包括直播、电影、剧集、收藏、设置等入口。

接下来先进入 Setting 页面,添加内容源。

M3U
在源设置中选择 Add M3U 来增加一个 m3u 播放列表。
可以顺带看一下社区项目 iptv-org/iptv——这是一个由社区维护的全球公开 IPTV 频道合集,其中提供了大量测试频道,但许多源并不稳定,可正常播放的比例不高,而且多为地方台或公共频道,更适合用来测试或体验。
添加 M3U 时需要填写两项基础信息:
Name:播放列表名称,用来在界面中区分不同源。URL:M3U 播放列表的网络地址(也可以是你自建的列表链接)。

EPG
如果有节目指南源,可以继续添加 EPG,便于在网格界面中查看每个频道正在播放和即将播放的节目。
下面的示例仅用于演示,具体 EPG 源是否可用,取决于你实际填写的地址。
选择 Add EPG 增加一个 EPG 源:
Name:EPG 列表名称。URL:EPG 的 XML 或其他兼容格式地址。

播放
完成 M3U 和 EPG 的添加与保存后,你就可以开始使用了。

进入 Live TV 页面,左侧会显示按分组整理的频道列表,选中任意频道即可开始播放。

在播放界面中,可以切换频道、调整音量、查看节目信息,也可以将当前频道加入收藏,方便之后快速访问。
支持的流类型
nodecast-tv 对直播流的支持是围绕浏览器原生能力设计的,其中对 HLS(HTTP 直播流)做了特别优化。
- ✅ HLS (.m3u8):完全支持并强烈推荐使用,结合浏览器和播放器的自适应比特率,可以更好地适应网络波动,减少卡顿。
- ✅ MPEG-TS (.ts):可以播放,但通常需要在设置中开启“强制重封装”,借助后端的
FFmpeg将其重打包为更适合浏览器处理的形式。 - ⚠️ 高延迟/P2P 源:如
Acestream等 P2P 流,不建议直接以原始TS形式输入。更好的做法是通过中间服务将其转换为HLS输出(.m3u8),否则容易因为缓冲和网络延迟导致超时或频繁卡顿。 - ❌ RTMP/RTSP:由于基于 Web 的播放器依赖浏览器提供的能力,而主流浏览器已经不再原生支持
RTMP/RTSP,因此这类协议无法直接在nodecast-tv中播放。如需使用,必须先在其他服务器上将其转换为 HLS 或其他浏览器可识别的格式。
参考文档
technomancer702/nodecast-tv: A self-hosted web application that lets you stream Live TV, Movies, and Series from your Xtream Codes or M3U provider directly in your browser. It’s built with performance in mind and handles large libraries smoothly.
地址:https://github.com/technomancer702/nodecast-tv
原创文章,作者:kp51,如若转载,请注明出处:https://www.kepu51.com/instant-messaging/521.html
