You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

3.0 KiB

海康 NVR 一分钟录像下载接口

接口

POST /hik/nvr/playback/clips/download

接口以 centerTime 为中心,默认下载前 30 秒和后 30 秒,总计 1 分钟。NVR 端口、账号和密码全部从 basedata_eqpbook_nvr 读取;请求只提交共用设备树中的 nvrIp + channel

请求示例:

{
  "nvrIp": "192.168.1.249",
  "channel": 1,
  "centerTime": "2026-07-28 11:55:00"
}

该请求对应的录像范围为:

2026-07-28 11:54:30 - 2026-07-28 11:55:30

streamType 默认是 1(主码流);beforeSecondsafterSeconds 默认都是 30,也可以显式传入,单侧允许范围为 0-300 秒。

PowerShell 下载命令

Windows PowerShell 中的 curl 可能是 Invoke-WebRequest 的别名,因此需要明确 使用 curl.exe

curl.exe --fail-with-body -X POST "http://localhost:28081/hik/nvr/playback/clips/download" `
  -H "Content-Type: application/json" `
  --data-raw '{"nvrIp":"192.168.1.249","channel":1,"centerTime":"2026-07-28 11:55:00"}' `
  --output "hik-clip-20260728-115500.mp4"

也可以使用 PowerShell 原生命令:

$body = @{
  nvrIp = "192.168.1.249"
  channel = 1
  centerTime = "2026-07-28 11:55:00"
} | ConvertTo-Json

Invoke-WebRequest `
  -Method Post `
  -Uri "http://localhost:28081/hik/nvr/playback/clips/download" `
  -ContentType "application/json" `
  -Body $body `
  -OutFile "hik-clip-20260728-115500.mp4"

历史回放页面下载

历史回放页面顶部查询区已增加“下载时刻”和“下载1分钟”,并继续复用外层共用 设备树当前选择的 nvrIp + channel

  1. 在“回放日期”中选择录像日期。
  2. 在“下载时刻(前后各30秒)”中填写需要下载的时刻,例如 11:55:00
  3. 点击“下载1分钟”,页面会下载 11:54:30 - 11:55:30 的 MP4。

如果“下载时刻”留空,页面会使用当前正在回放的设备时刻作为中心。下载期间不会 停止已有的历史回放会话;同一页面一次只会提交一个下载任务。

目标时间尚未到达时,页面会在发送请求前弹窗提醒;直接调用接口也会被后端拒绝。 目标时间没有录像、录像中间断档或前后不足 30 秒时,页面会弹窗展示后端返回的 具体原因,不会下载空文件或不完整片段。

处理规则

  • 先查询目标一分钟是否由一段连续录像完整覆盖。
  • 未来中心时刻返回 400
  • 没有录像时返回 404
  • 录像中间断档或前后不足 30 秒时返回 409,不会生成伪造的一分钟文件。
  • 海康 SDK 把录像下载到服务端独立临时目录。
  • FFmpeg 优先保留视频原码流并将音频转换为 AAC,封装成支持快速起播的 MP4。
  • 音频封装失败时自动降级为纯视频 MP4。
  • HTTP 下载完成、处理失败或客户端中途断开后,服务端都会清理该请求的临时文件。

Swagger UI 中可查看完整字段和错误响应:

http://localhost:28081/swagger-ui/index.html