这些指南把行业概念对应到平台目前已有的对象(频道包、线路、套餐、分销商账户、节点、API)。它们只是概念上的对应,并非行业专属功能,分销商账户是委托账户,而不是相互隔离的租户。
概念对应
面板中没有任何东西叫作课程或学生。下表说明哪个对象扮演什么角色;下面的各章按此顺序进行设置。
| 在您的行业中 | 在平台上 | 在面板中的位置 |
|---|---|---|
| 培训中心或分发分销商 | 分销商账户(reseller):拥有积分、权限和自有线路的委托后台 | Users → 添加分销商;其权限在 Groups 中设置 |
| 课程集合 | 频道包:由一个套餐授予的、已命名的频道、电影或剧集集合 | Bouquets,由 Streams 和 Movies / Series 组成 |
| 录播课程 | 点播目录:带季和集的电影与剧集、分类和元数据 | Movies 和 Series,或点播入库任务 |
| 直播课堂 | 直播频道:带有信号源、EPG 和输出格式的流 | Streams → 添加直播流(源 URL 或 RTMP 推流) |
| 学生访问权限 | 线路:一份访问权限,包含其套餐、频道包、到期时间、连接数上限和输出 | Lines → 添加,或激活码,或 Reseller API |
| 课程访问期 | 线路的到期日期,通过套餐、积分或 API 续期 | 线路的到期日期和套餐的时长 |
| 同时会话数上限 | 线路的最大连接数:允许多少台设备同时观看 | 线路的最大连接数 |
| LMS 或电商集成 | Reseller API 与 webhook:从您自己的系统调用面板的各项操作 | 分销商后台中的 Reseller API 密钥和 webhook |
前提条件
安装前需要准备什么。
- 校园网内的一台 Linux 服务器(Ubuntu 22.04 或 24.04),由安装程序安装 Postgres、Redis 和 ffmpeg,以及用于面板和播放器的域名或内部地址。
- 您要发布的录像(文件或可推送 RTMP 的采集系统),以及对于直播课堂,每个要推流的教室里的一台编码器。
- 许可证密钥:Free 套餐无需密钥;符合条件的机构用其学术域名电子邮件通过电子邮件申请免费的 Professional 密钥。
基础设施部署
先安装管理服务器,再为每栋楼安装一个节点。
- 在管理服务器上运行安装程序;它会把面板、API、worker 和源站安装为 systemd 单元,并创建第一个管理员。
- 设置 API 的公开 URL(API_PUBLIC_URL)和播放基础地址,使播放器链接指向校园地址。
- 为每栋有教室要观看的楼,在 Servers → 添加节点 中登记一个节点;面板会通过 SSH 从节点安装包进行安装。
- 检查 Servers 页面:节点会上报心跳和流量,该楼的观众会被路由到它。
内容组织
课程作为剧集,专业作为频道包和套餐。
- 在 Movies / Series 下为每个院系或科目创建一个分类。
- 把每门课程添加为一个剧集:每个模块一季,每节课一集,以录像作为来源(上传或点播入库任务)。
- 用您添加的剧集为每个课程集合创建一个频道包(例如某个专业一个学期的课程)。
- 为每个专业创建一个套餐:其授予的频道包、作为时长的访问期,以及同时会话数上限。
分销商配置
将培训中心或院系作为委托账户。
- 在 Groups 下创建一个拥有该中心所需权限的分组(管理自己的线路,不能修改目录)。
- 在 Users 下用该分组、一笔积分余额和其可发放的套餐,把该中心添加为分销商。
- 把后台地址交给它;它从那里管理自己的学生,面板则保留审计日志。
学生访问配置
每位学生一条线路,在注册时创建。
- 对于小批次学员,通过 Lines → 添加 用该专业的套餐添加线路;到期时间跟随套餐时长。
- 对于注册日,为套餐生成激活码;学生在播放器中兑换激活码即可获得一条线路。
- 对于学生系统或 LMS,创建一个 Reseller API 密钥,让系统为每位学生使用 action=create_line 和一个请求 ID 来创建线路。
- 将最大连接数设为学生可同时使用的设备数;超出后播放器会拒绝下一个连接。
点播设置
按需观看的录播课程。
- 把每份录像作为一集的来源上传,或把点播入库任务指向该文件,让 worker 下载并编码到媒体根目录中。
- 手动填写元数据(标题、简介、海报),或对公开资料从 TMDB 获取;课程通常只需要标题和简介。
- 用测试线路在网页播放器中检查播放;链接带签名,并在设定时间后过期。
直播课堂流媒体
把讲座作为直播频道。
- 在 Streams 下添加一个直播流,以教室的编码器作为来源(RTMP 推流地址或拉流 URL)。
- 把该流放进课程的频道包,只有已注册的学生才能看到;如果您维护课表,请把它添加到 EPG。
- 当学生可以事后观看课堂时,在该流上启用回看或时移;录像也可以作为一集上传。
订阅与访问到期
随课程结束而终止的访问权限。
- 将访问期设为套餐的时长;由它创建的线路会在该期限结束时到期。
- 在面板中使用中心的积分为新学期续期线路,或通过 API 使用 action=renew_line 续期。
- 让您的系统订阅 webhook:线路即将到期、已到期或被禁用时它会收到通知。
与外部 LMS 集成
LMS 负责控制访问;播放器负责播放。
- 为 LMS 创建一个 Reseller API 密钥;把它保存在 LMS 的密钥存储中,绝不要放在页面里。
- 注册时,LMS 使用该专业的套餐和一个请求 ID 调用 action=create_line;退学时调用 action=disable_line。
- 从 LMS 的课程页面链接到网页播放器,或把播放器凭据交给学生;两者之间没有单点登录。
安全注意事项
让服务留在机构内部。
- 为每个面板账户启用双重验证登录,并给员工授予能满足工作的最小权限分组。
- 把学生个人数据保存在学生系统里;线路只需要一个名称和一个到期时间。
- 将最大连接数设置得较低,并考虑把播放绑定到观众的地址,以防止共享。
- 开启加密的数据库备份,如果有兼容 S3 的存储,也开启异地副本。
故障排查
常见的首要检查项。
- 学生无法登录:检查线路的到期时间和是否已启用,然后检查课程的套餐和频道包。
- 某份录像无法播放:在 Jobs 页面检查入库任务的结果,然后检查媒体根目录中的文件和签名链接的有效期。
- 某栋楼的观众访问到了源站:检查节点的心跳,以及观众地址是否落在节点的路由范围内。
- API 拒绝了某次调用:检查密钥、该操作的方法(写入为 POST)以及重试调用的请求 ID。