{{ health.status === 'ok' ? '系统运行中' : '连接异常' }}
全部频道
频道分组
暂无可导出的分组
{{ group }}
A
Admin
管理员账户

实时监控

实时系统资源监控 · 编码频道状态总览
CPU 使用率
{{ formatPercent(systemInfo.cpu?.usage_percent) }}
{{ systemInfo.cpu?.model || '-' }} · {{ systemInfo.cpu?.cores || 0 }}C
内存使用
{{ systemInfo.memory?.used_mb || 0 }}MB
{{ formatPercent(systemInfo.memory?.usage_percent) }} / 共 {{ systemInfo.memory?.total_mb || 0 }} MB
{{ server.name }}
{{ server.status }}
:{{ server.port || '-' }} · 流{{ server.streams || 0 }} · 订阅{{ server.subscribers || 0 }}
网络实时流量
↓ 下行 {{ networkSummary.interfaces.length ? formatRate(networkSummary.rx) : '待选择' }} ↑ 上行 {{ networkSummary.interfaces.length ? formatRate(networkSummary.tx) : '待选择' }}
统计接口:{{ networkSummary.interfaces.map(n => n.name).join('、') || '暂无可用接口' }} · {{ networkMode === 'auto' ? '自动去重' : '手动范围' }}
选择保存在当前浏览器。已知父子接口只计一层;VPN 与物理网卡请择一,避免重复统计。
{{ net.name }} · 已计入 · 默认路由
{{ net.kind === 'bond' ? '聚合成员' : '下层接口' }}:{{ net.members.join('、') }}
隶属 {{ net.master }}
↓ {{ formatRate(net.rx_rate_bytes) }} ↑ {{ formatRate(net.tx_rate_bytes) }}
编码中的频道
{{ runningChannels.length }} 个编码中
频道名称频道分组分辨率引擎码率运行时间SpeedFPS重启次数操作
{{ channel.name }}
{{ channel.group || '-- 不选 --' }} {{ resolutionLabel(channel) }} {{ outputModeLabel(channel.output_mode, channel.kcp_enabled) }} {{ formatBitrate(channel) }} {{ runtimeLabel(channel) }} {{ channel.metrics?.speed || '-' }} {{ formatFPS(channel) }} {{ channel.restart_count || 0 }}
暂无编码中的频道
拉流中的频道
0 个拉流中
频道名称分组引擎|状态视频|音频|分辨率码率速度|FPS运行时间操作
暂无拉流中的频道

编码频道列表

FFmpeg 中转频道管理,支持 MediaMTX、HTTP-TS、UDP 等输出
频道管理
已选择 {{ channelSelectedCount }} 个频道
频道名称 状态 在线 播放 编码 画面 倍率 / FPS 运行 / 源 播放 ID 操作
{{ channel.name }}
{{ channel.group || '无分组' }}
{{ statusLabel(channel.status) }}
{{ channelVideoCodec(channel) }}{{ channelAudioCodec(channel) }}
{{ resolutionLabel(channel) }}{{ formatBitrate(channel) }}
{{ channelSpeedLabel(channel) }}/{{ formatFPS(channel) }}
{{ runtimeLabel(channel) }}重启 {{ channel.restart_count || 0 }}{{ restartDeadlineLabel(channel, channel.metrics.next_restart) }}
显示 {{ channelPageStart }}-{{ channelPageEnd }} / {{ filteredChannels.length }}
{{ channelCurrentPage }} / {{ channelPageCount }}
{{ search || channelQuickFilter !== 'all' ? '没有匹配的频道' : '暂无编码频道,点击「新增频道」开始' }}
{{ selectedChannelLogTitle() }}
当前频道运行日志;手动启动/重启会开启新日志生命周期,自动恢复不会清除。
{{ logEntries.length }} 条结果 已暂停前端刷新 日志文件:data/logs/channel-<id>-YYYY-MM-DD.log 可选日期 {{ logDates.join(' / ') }}
{{ entry.time || '-' }}
{{ entry.level || 'INFO' }}
{{ entry.prefix || '-' }}
{{ entry.message || entry.raw }}
暂无当前频道运行日志。

节点有 Worker 更新

管理主服务器与从服务器节点,仅展示节点连接和资源状态
“安装从服务”通过 SSH 自动部署 Worker;无法 SSH 安装时可“添加从服务器”生成一次性令牌并在目标服务器手动执行安装命令。
节点总数{{ clusterPreviewNodes.length }}
可用节点{{ clusterPreviewNodes.filter(node => node.status === '在线').length }}
CPU 平均{{ clusterPreviewAverageCPU }}%
内存平均{{ clusterPreviewAverageMemory }}%
运行中的编码{{ clusterPreviewNodes.reduce((total, node) => total + Number(node.running_channels || 0), 0) }}
节点列表
主服务器和从服务器的连接状态、资源占用与网络出口。
{{ workerUpdateCheck.message }} 实时状态
{{ node.name }} / {{ node.id }}
{{ node.tags.join(' / ') }}
CPU{{ node.cpu }}%
内存{{ node.memory }}%
出口 / 带宽{{ node.bandwidth }}
实时上行 (TX) {{ node.tx_rate }}实时下行 (RX) {{ node.rx_rate }}
运行时间{{ formatDurationSeconds(node.uptime_seconds || 0) }}
{{ node.version_label }}
{{ node.version || "未上报" }} 有更新
{{ nodeWorkerUpdateLabel(node) }}{{ node.update_progress }}%
{{ node.update_error || node.update_message || "等待状态回传" }}
{{ nodeVersionHint(node) }}
{{ node.channel_count }} 频道{{ node.status }}

批量导入

通过 CSV 快速创建频道,导入后会自动刷新频道列表
CSV 导入
支持列:id, name, group, input_url, output_mode, output_url, port, stream_path, video_map, video_deinterlace, audio_map, subtitle_map, subtitle_burn, re_mode, auto_start。

编码器物理参数

管理编码器分组配置,包含解码器选择、视频/音频编码参数
快速模板
按常用硬件与目标规格创建分组
分组列表
名称硬件视频参数音频参数采样率注意项操作
{{ group.name }}
{{ decoderLabel(group.decoder) }}
{{ group.video_encoder || 'copy' }} {{ group.resolution || '原始分辨率' }} {{ group.video_bitrate || '不限码率' }}
{{ group.audio_encoder || 'copy' }} {{ group.audio_bitrate || '不限码率' }}
{{ group.sample_rate || '原始' }}
{{ item }} 正常
暂无编码器分组

出流监控

实时查看哪个 IP 正在播放输出流、播放器类型、协议、请求次数和流量。
在线会话{{ outputViewers.online || 0 }}
访问会话{{ outputViewers.total || 0 }}
客户端 IP{{ outputViewerIPGroups.length }}
累计出流{{ formatDataSize(outputViewers.bytes || 0) }}
更新时间{{ shortTime(outputViewers.updated_at) }}
客户端 IP
按 IP 汇总会话;点击 IP 或查看可展开具体拉流。HLS 按最近 60 秒访问判断在线;HTTP-TS 按连接状态和最近输出判断在线。
状态 IP 播放器 协议 频道路径 请求 累计出流 首次访问 最后活跃 操作
暂无出流访问记录。打开 HLS 或 HTTP-TS 播放地址后会显示在这里。

KCP / P2P 分发

控制编码频道的 KCP 出流,以及海外 Peer 设备的受控拉流权限。
KCP 服务{{ settingsForm.kcp.enabled ? '已启用' : '已关闭' }}
P2P Peer{{ settingsForm.p2p.enabled ? '已启用' : '已关闭' }}
KCP 频道{{ kcpEligibleChannels.length }}
已登记设备{{ peers.length }}
KCP 传输服务
{{ settingsForm.kcp.enabled ? '运行开关已开' : '未对外提供' }}
KCP 启用、监听端口和缓存修改后需要重启主程序。共享密钥不会通过页面显示;启用 KCP 且未配置密钥时,系统会自动生成并写入 kcp.secret,也可使用环境变量 IPTV_KCP_SECRET 覆盖。
KCP 共享密钥
保存后需重启
旧密钥不会回显。保存后当前运行中的 KCP 仍使用旧密钥,重启主程序后新密钥生效,旧 Ticket 将失效。若设置了 IPTV_KCP_SECRET,环境变量优先。
P2P Peer 分享
{{ settingsForm.p2p.enabled ? '允许 Peer 连接' : '已阻断 Peer' }}
这里是管理员硬上限。业务后台可按 quota group 下调上传 Mbps、连接数、缓存和 Chunk 大小,但不能抬高。NAT 监听地址或启用状态变化后需重启;Relay 只接受短期传输令牌,不是通用代理。
受控 Peer 按设备授权 按频道授权 并发租约
Peer 设备
设备 Token 只在注册或重新生成时显示一次;撤销设备会立即释放它持有的频道租约。
设备状态频道权限并发上限最后心跳创建时间操作
{{ peer.name }}
{{ peer.id }}
{{ peer.status === 'active' ? '可用' : '已撤销' }} {{ peer.all_channels ? '全部频道' : ((peer.allowed_channel_ids?.length || 0) + ' 个频道') }}
{{ peerAllowedChannelLabel(peer) }}
{{ peer.max_streams || 0 }} 路 {{ peer.last_seen ? relativeTime(peer.last_seen) : '未连接' }} {{ shortDateTime(peer.created_at) }}
暂无 Peer 设备,注册后可为海外客户端分配频道权限。

日志中心

按天切割、按时间段筛选、最新日志优先展示
频道日志
{{ logEntries.length }} 条结果 已暂停前端刷新 查询后实时流更新,不轮询日志文件 可选日期 {{ logDates.join(' / ') }}
{{ entry.time || '-' }}
{{ entry.level || 'INFO' }}
{{ entry.prefix || '-' }}
{{ entry.message || entry.raw }}
暂无符合条件的日志。

媒体转发中心

管理 Provider 列表,每个 Provider 对应一组转发频道
{{ provider.name }} {{ provider.script }} {{ providerChannelCount(provider) }} 频道 启用 {{ providerStatusCountsFor(provider).enabled }} 故障 {{ providerStatusCountsFor(provider).fault }}
暂无 Provider,点击「添加 Provider」开始

{{ selectedProvider?.name || 'Provider' }} · 频道列表

共 {{ selectedProviderChannels.length }} 个频道{{ selectedProvider?.script ? ' · ' + selectedProvider.script : '' }}
{{ selectedProvider?.name || 'Provider' }} · 频道下载
运行中 / On Demand
转发频道
已选择 {{ providerChannelSelectedCount }} 个频道
频道 播放 编码 画面 倍率 / FPS 计划重启 播放 ID 操作
{{ channel.name }}
{{ providerChannelAccessLabel(channel) }}
{{ channel.input_url || channel.manifest_script || '-' }}
{{ providerChannelStatusLabel(channel) }}
{{ providerVideoCodec(channel) }}{{ providerAudioCodec(channel) }}
{{ providerResolutionLabel(channel) }}{{ providerBitrateLabel(channel) }}
{{ providerSpeedLabel(channel) }}/{{ providerFPSLabel(channel) }}
{{ providerRuntimeLabel(channel) }}重启 {{ providerRestartCount(channel) }}
{{ providerRestartLabel(channel) }} {{ providerRestartNextLabel(channel) }}
显示 {{ providerChannelPageStart }}-{{ providerChannelPageEnd }} / {{ filteredProviderChannels.length }}
{{ providerChannelCurrentPage }} / {{ providerChannelPageCount }}
{{ providerChannelSearch || providerChannelStatusFilter !== 'all' ? '没有匹配的频道' : '暂无转发频道,点击「添加频道」开始' }}

系统设置

管理当前启动时加载的 JSON 配置文件,保存后会写回磁盘
二进制与数据路径
重启后完全生效
服务地址
监听端口需重启
KCP 出流
启用或改端口需重启
KCP 密钥不会通过页面返回;启用 KCP 时如果为空会自动生成并写入 kcp.secret,也可以使用环境变量 IPTV_KCP_SECRET 覆盖。公网主机名不能填写 0.0.0.0。
运行策略
HLS 频道会重启
MediaMTX
配置文件
当前文件 {{ settingsForm.config_path || '-' }}
管理员入口 右上角 Admin
Web 管理 {{ settingsForm.http_addr || '-' }}
HTTP-TS {{ settingsForm.http_ts_addr || '-' }}
HLS {{ settingsForm.hls_addr || '-' }}
状态预览
{{ health.status === 'ok' ? '运行中' : '异常' }} {{ settingsForm.mediamtx.enabled ? 'MediaMTX 开启' : 'MediaMTX 关闭' }} {{ settingsForm.ffmpeg_path || 'ffmpeg' }}
保存会立即写入配置文件;监听地址、FFmpeg 路径、数据目录、MediaMTX 启停这类运行时资源,需要重启程序后完全生效。频道级自动恢复仍由每个频道自己的开关控制。
系统操作
只停止本程序管理的频道并重启程序,自动恢复开启时会自动重新拉流
当前版本 {{ currentVersion }}
发布时间:{{ shortDateTime(updateStatus.release.published_at) }}
{{ updateStatus.release.notes || '暂无更新说明' }}
历史版本
{{ item.version }} {{ shortDateTime(item.published_at) }}
{{ item.notes || '暂无更新说明' }}
{{ updateStatus.warning || updateStatus.last_error }}
正在后台下载:{{ updateProgressText }}。可继续操作或切换页面。
{{ toast.message }}