跳转到内容

媒体 Provider

Media Provider 是 SyncTV 访问外部媒体来源的方式,例如:

  • 视频平台:Bilibili、Twitch、YouTube、抖音、TikTok、虎牙、斗鱼、AcFun、CCTV。
  • 媒体服务器与文件服务:Alist、Cloudreve、Emby/Jellyfin。
  • NAS 与私有云:FNOS、QNAP、Synology、Nextcloud、Seafile、TrueNAS。
  • Direct URL、RTMP、live proxy。
  • 远程 Provider instance。

media_providers 只配置本进程内置的 local provider adapter。每个 provider 都有明确的配置项:

media_providers:
alist:
request_timeout_seconds: 30
connect_timeout_seconds: 10
bilibili:
request_timeout_seconds: 30
connect_timeout_seconds: 10
emby:
request_timeout_seconds: 30
connect_timeout_seconds: 10

远程 Provider instance 不是这个 YAML 对象。它通过管理 API/CLI 持久化到数据库,只保存 SyncTV 连接远程 Provider 所需的连接信息,例如 endpointtlsjwt_secretcustom_catimeoutinsecure_tlsproviders。远程 Provider 自己访问 Alist、Emby 或 Bilibili 所需的配置,应放在远程 Provider 服务自己的部署配置中。

通过管理 API 或 CLI 创建远程 Provider instance,并把 Alist、Emby/Jellyfin、Bilibili 等上游配置保留在对应 Provider 服务中。日常启停、重连和凭据维护见 Provider 管理

每个来源都可以指定 Provider instance。空 instance name 表示默认 local instance;具名 instance 可以指向本地独立配置或远程 gRPC backend。管理员通过 Provider instance 管理接口配置 endpoint、TLS、认证 secret、超时和允许的 Provider 列表。

用户凭据会保存 provider_instance_name。同一个上游服务器通过多个 instance 绑定时会生成独立的凭据作用域。创建媒体和播放列表时,App 会把所选 instance 写入资源绑定,播放、封面和动态列表请求沿用该 instance。

默认值:30。作用:一次该 provider 的上游 HTTP 请求最多等待多久。

默认值:10。作用:该 provider 建立上游 TCP 连接最多等待多久。

如果 connect_timeout_seconds 大于同一 provider 的 request_timeout_seconds,配置校验会提示不合理。

Alist 示例:

media_providers:
alist:
request_timeout_seconds: 30
connect_timeout_seconds: 10

Emby 示例:

media_providers:
emby:
request_timeout_seconds: 30
connect_timeout_seconds: 10

Bilibili 示例:

media_providers:
bilibili:
request_timeout_seconds: 30
connect_timeout_seconds: 10

其余内置 Provider 使用相同的 timeout contract。仅启用该 Provider 支持的配置项;协议端点、Cookie、token、账号密码和 API key 通过用户绑定接口持久化。

如果你保存 Provider 凭据,生产环境应该配置:

security:
credential_encryption_key_file: "/run/secrets/credential_encryption_key"

否则,创建或更新某些 Provider 凭据可能会被拒绝,或者已有加密凭据无法读取。