源匣(SrcBox) 是一款专为 Windows 平台打造的高性能、现代化的 IPTV 播放器。
它基于强大的 libmpv 播放内核构建,结合 WPF 的现代化界面设计,为您带来流畅、稳定的直播观看体验。不仅支持 M3U 播放列表、EPG 电子节目单、回看等核心功能,还针对 IPTV 场景进行了深度优化(如 FCC 快速切台、UDP 组播优化),是您在 PC 上观看电视直播的理想选择。
郑重声明 (Disclaimer):
- 本页面展示的所有视频、截图及演示画面仅作功能展示用途,并非实际可播放或可用的媒体资源。
- 本项目不提供任何 m3u 播放列表文件及其中包含的频道数据,亦不对第三方数据源负责。
- SrcBox 仅作为一个开源的播放器工具,用户需自行寻找合法的播放源。请遵守当地法律法规。
源匣(SrcBox) 以 libmpv-2.dll 为播放内核,通过 WindowsFormsHost 承载视频窗口句柄,提供 IPTV 频道列表、分组、EPG、回放、源切换等功能。
- 播放器入口窗口:MainWindow.xaml
- libmpv 绑定封装:MpvPlayer.cs
- M3U 解析:Services/M3UParser.cs
- EPG 解析与缓存:Services/EpgService.cs
本项目采用 C# / WPF 开发,核心架构如下:
- UI 层:基于 WPF (ModernWpf),提供流畅的现代化交互体验。
- 互操作层:通过
MpvPlayer.cs封装 libmpv 的 C API,实现 P/Invoke 调用。 - 渲染层:利用
WindowsFormsHost承载 Win32 窗口句柄,将 mpv 的渲染输出嵌入 WPF 界面,解决 WPF 原生媒体元素性能不足的问题。 - 服务层:
M3UParser:高效的正则表达式解析器,支持极其复杂的 M3U 扩展标签。EpgService:基于XmlSerializer的异步 EPG 加载与内存缓存机制。
📂 SrcBox
├── 📂 Models # 数据模型 (Channel, EpgProgram, Source)
├── 📂 Services # 核心服务 (M3U解析, EPG下载, 频道管理)
├── 📂 Resources # 资源文件 (多语言字符串, 样式, 字体)
├── 📂 Interop # libmpv 互操作层 (P/Invoke)
├── 📄 MainWindow.xaml # 主界面逻辑
└── 📄 MpvPlayer.cs # 播放器核心封装
| 功能点 | 说明 | 参数/示例 | 变更记录 |
|---|---|---|---|
| 播放控制 | 播放/暂停、停止、快进/快退、拖动进度 | 快捷键:暂无默认快捷键,支持鼠标操作 | v1.0.0 (Initial) |
| 音量调节 | 滑块调节,支持静音 | 范围 0-100 | v1.0.0 (Initial) |
| 状态标识 | 全屏条显示直播/回放/时移状态 | 自动检测 | v1.1.0 (2024-05, Update) 新增“时移”状态显示,优化回放绿色标识 |
| 功能点 | 说明 | 参数/示例 | 变更记录 |
|---|---|---|---|
| M3U 解析 | 支持本地/远程 M3U,兼容 UTF-8/GB18030 | 支持 #EXTINF 扩展属性 |
v1.0.0 (Initial) |
| EPG 节目单 | 支持 XMLTV (gz),按日切换 | 自动匹配 tvg-id |
v1.0.0 (Initial) |
| 回放 (Catchup) | 支持基于模板的回放 URL 生成 | {utc:yyyyMMddHHmmss} 等 |
v1.0.0 (Initial) |
| 时移 (Time-Shift) | 拖动进度条回看直播历史 | 依赖 catchup-source |
v1.1.0 (2024-05, New) 支持全屏/窗口同步,实时时间轴 |
| 频道管理 | 分组、搜索、收藏 | 收藏列表运行时有效 | v1.0.0 (Initial) |
| FCC/UDP 优化 | 快速切台与组播优化开关 | 设置中开启 | v1.0.0 (Initial) |
- 双击全屏:在视频区域双击切换全屏。
- 悬浮控制条:全屏下鼠标移动到底部自动显示,支持播放控制与 EPG 切换。
- 侧边抽屉:全屏下鼠标贴边显示频道列表(右侧)或 EPG(左侧)。
我们致力于持续提升 IPTV 观看体验。以下是未来的开发计划及已实现功能:
- 智能推荐:基于观看习惯的 AI 节目推荐。
- 多视角同屏:支持多源拼屏观看(画中画/四分屏)。
- 云端录制 (PVR):支持连接远程存储进行节目录制。
- 高级视听体验:HDR10+ 动态元数据支持、8K 120fps 解码优化。
- 互动功能:语音弹幕(语音转字幕)、低延迟云游戏入口。
- 版权保护:区块链版权校验(防篡改溯源)。
- 时移 (Time-Shift):基于
catchup-source的回放式时移,支持实时拖动回看。 - EPG 电子节目单:支持 XMLTV (gz) 解析与展示。
- 频道回看:基于模板自动生成回放 URL。
- M3U 解析:支持本地/远程列表及
#EXTINF扩展属性。 - 频道管理:分组、搜索、收藏功能。
- 直播优化:FCC 快速切台、UDP 组播优化、自动换源。
- 硬件解码:默认开启
d3d11va。 - UI/UX:全屏悬浮控制、侧边抽屉、多语言支持(中/英)。
本项目支持多语言切换(目前支持简体中文、繁体中文、英语、俄语)。
详细的国际化指南与翻译贡献方式,请参阅 国际化文档。
- 在
Resources/目录下找到Strings.en-US.xaml。 - 复制并重命名为目标语言代码(如
Strings.fr-FR.xaml)。 - 翻译内容并提交 Pull Request。
- 顶部标题栏:包含菜单按钮(打开文件、设置等)与窗口控制。
- 中央区域:视频播放窗口。
- 底部/悬浮栏:播放进度、音量、功能开关(EPG/列表)。
目前主要依赖鼠标交互。
- Esc:退出全屏。
- 双击:切换全屏。
位于程序运行目录,存储用户偏好设置。
{
"Hwdec": true, // 硬件解码开关
"SourceTimeoutSec": 3, // 换源超时时间(秒)
"TimeshiftHours": 2, // 时移回看时长(小时)
"Language": "zh-CN", // 界面语言
"ThemeMode": "Dark" // 主题模式 (Dark/Light/System)
}本项目依赖 libmpv-2.dll。
- 硬解:默认开启
d3d11va。 - 无声问题:部分 IPTV 源音频探测较慢,已设置
probesize=32加速起播,可能导致短暂无声。
- 操作系统:Windows 10 / 11 (x64)
- 开发工具:Visual Studio 2022 或 JetBrains Rider
- SDK:.NET 8.0 SDK
- 依赖库:
libmpv-2.dll(必须手动放置在输出目录)
# 还原依赖
dotnet restore
# 编译(Debug)
dotnet build
# 运行
dotnet run注意:运行前请确保 libmpv-2.dll 已放置在 bin\Debug\net8.0-windows\ 目录下,否则程序会闪退或报错。
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 程序启动即崩溃 | 缺少 libmpv-2.dll |
下载对应架构的 dll 放入运行目录 |
| 有画面无声音 | 音频流探测超时 | 属正常优化策略,可尝试切换音轨或重启播放 |
| EPG 显示“无数据” | 网络问题或格式不支持 | 检查 XMLTV URL 是否可访问,是否为 GZIP 格式 |
| 设置不保存 | 权限不足 | 确保程序目录有写入权限 |
- Fork 本仓库。
- 创建特性分支:
git checkout -b feature/AmazingFeature。 - 提交代码:
git commit -m 'feat: Add some AmazingFeature'(请遵循 Conventional Commits)。 - 推送分支:
git push origin feature/AmazingFeature。 - 提交 Pull Request。
- 保持现有的 C# 代码风格(K&R / Allman 混合,视文件而定,建议遵循 .editorconfig)。
- UI 修改请注意深色/浅色主题适配。
- CPU 占用:1080p 播放时应 < 15% (i5-8250U 基准)。
- 内存占用:稳定播放时应 < 500MB。
- 启动时间:冷启动 < 2秒。
- 本地优先:所有播放列表、EPG 缓存及用户配置(收藏、设置)均存储于用户本地设备 (
user_settings.json),不会上传至任何云端服务器。 - 网络请求:应用仅在请求您指定的 M3U/EPG 地址、检查软件更新(GitHub API)或下载 CDN 加速资源时发起网络连接。


