# API

DDTV5 内置了完整的 HTTP API 和 WebSocket 推送服务,可以用来做远程管理、状态监控、接入自己的程序或自动化脚本等二次开发。

# 能做什么

  • 房间管理:添加/删除/批量修改监控房间,设置自动录制、开播提醒、弹幕录制
  • 录制任务:手动触发/取消/切断录制任务,创建快剪快照
  • 状态查询:房间开播/录制状态、系统资源占用、运行心跳
  • 配置管理:录制路径、文件名格式、自动修复、切割配置等
  • 实时推送:通过 WebSocket 或 WebHook 实时接收开播、录制开始/结束、登录态变化等事件

# 三分钟上手

# 1. 确认 WEB 服务已开启

DDTV Server 默认开启 WEB 服务并监听 http://localhost:11419(配置项 EnableWebServerIPPort)。启动后可以先访问免鉴权接口确认服务可用:

curl http://127.0.0.1:11419/api/init_inspect
# {"cmd":"init_inspect","code":0,"data":"OK","message":"OK"}

# 2. 找到你的密钥

打开 ./Config/DDTV_Config.ini

  • AccessKeyId:默认 ddtv
  • AccessKeySecret首次启动时随机生成并打印到控制台,之后保存在配置文件中

# 3. 计算签名并发起请求

除少数免鉴权接口外,每个请求都需要携带 access_key_idtime(Unix 秒时间戳)、sig(SHA1 签名)三个公共参数。一个可直接运行的 Python 例子:

import hashlib
import time
import requests

BASE_URL = "http://127.0.0.1:11419"
ACCESS_KEY_ID = "ddtv"
ACCESS_KEY_SECRET = "替换成你的AccessKeySecret"

def signed_params(params: dict) -> dict:
    params = dict(params)
    params["access_key_id"] = ACCESS_KEY_ID
    params["time"] = int(time.time())
    raw_items = list(params.items()) + [("access_key_secret", ACCESS_KEY_SECRET)]
    raw = ";".join(f"{k.lower()}={v}" for k, v in sorted(raw_items))
    params["sig"] = hashlib.sha1(raw.encode("utf-8")).hexdigest()
    return params

# 查询监控房间统计
resp = requests.post(f"{BASE_URL}/api/get_rooms/room_statistics", data=signed_params({}))
print(resp.json())

# 详细文档