跳转到内容

添加媒体

Provider 是 SyncTV 把外部媒体解析成播放结果的适配层。接入前先回答三个问题:

问题影响
媒体是否能被客户端直接访问决定直连还是代理
上游是否要求特殊 header 或 Cookie决定客户端能否直连,或必须走 SyncTV proxy
凭据属于用户还是实例决定是否需要用户绑定、Provider instance 或凭据加密 key

内置 Provider 类型包括 alistbilibiliembydirect-urlrtmplive-proxy。远程 Provider instance 用数据库持久化的连接信息接入另一组 Provider 服务,不是 media_providers YAML 对象。

  1. 配置 security.credential_encryption_key_file,确保 Provider 凭据可以加密保存。
  2. 确认本地 Provider timeout:media_providers.<type>.request_timeout_secondsconnect_timeout_seconds
  3. 如需远程 Provider,通过管理 API/CLI 创建 Provider instance。
  4. 用管理员账号测试登录、浏览、搜索、解析和播放。
  5. 分别测试直连、代理和 Range seek。
  6. 观察 Provider 错误率、proxy 错误、slice cache 命中和上游状态码。

适合:网盘、挂载目录、文件浏览和搜索。

重点

  • 常见操作是登录、列目录、搜索、选择文件并添加到播放列表。
  • 上游 URL 可能要求固定 User-Agent
  • 如果浏览器不能设置要求的 header,应选择代理播放。
  • 目录很大时优先分页、搜索和缓存,不要让客户端无限滚动触发大量上游请求。

验收:列表可打开,搜索可用,直连和代理至少一种可播放,seek 后没有持续 4xx/5xx。

模式配置位置适用场景
本地内置 Providermedia_providers YAML 配置 timeoutSyncTV 进程直接访问 Alist、Emby、Bilibili 等上游
Provider instance管理 API/CLI 持久化到数据库多实例、多凭据、多远程服务
远程 ProviderProvider instance 的 endpointtlsjwt_secret把 Provider 能力拆到独立服务或网络边界

远程 Provider 自己访问上游媒体所需的配置,应放在远程 Provider 服务的部署配置中;SyncTV 只保存连接远程 Provider 所需的信息。

  • 配置 security.credential_encryption_key_file,并把真实 key 放在 Secret Manager 或 Kubernetes Secret。
  • 每个 Provider 凭据明确归属:用户级、实例级或远程 Provider 服务级。
  • 禁止把 Cookie、token、API key 写进 sourceConfig、URL query、日志或截图。
  • 凭据轮换前先确认旧凭据是否还被播放列表、用户默认 Provider 或远程实例引用。

密钥轮换见 安全加固与密钥轮换

现象先查
列表可用但播放失败播放 URL、header、代理模式、上游 Range
直连可播但代理失败Provider 给 proxy 的 header、上游是否拒绝服务端 IP
代理可播但直连失败浏览器是否能设置 header、CORS、客户端网络是否能访问上游
Bilibili 偶发 403Cookie、Referer、User-Agent、上游 CDN 策略
多副本直播 404publisher 节点、HLS backend、共享存储或 OSS 配置