更新记录

1.0.0(2026-07-18)

初始化版本发布。


平台兼容性

uni-app(5.0)

Vue2 Vue3 Chrome Safari app-vue app-nvue app-nvue插件版本 Android Android插件版本 iOS iOS插件版本 鸿蒙 鸿蒙插件版本
× × × × × 1.0.0 5.0 1.0.0 12 1.0.0 5.0.0 1.0.0
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
× × × × × × × × × × × ×

uni-app x(5.0)

Chrome Safari Android Android插件版本 iOS iOS插件版本 鸿蒙 鸿蒙插件版本 微信小程序
× × 5.0 1.0.0 12 1.0.0 5.0.0 1.0.0 ×

概述

XF-ONVIFInfoUTS 是纯 API 模式的 ONVIF 插件,支持 Android、iOS、Harmony。插件不包含播放器、预览组件或 VLC/FFmpeg,提供 WS-Discovery 自动搜索、设备信息、ONVIF 抓拍,以及标准 Recording / Search / Replay 服务流程。

通过 clientId/sessionId 可同时管理多台摄像机。createSession 统一保存 hostportusernamepassword、超时和默认 Profile Token,后续接口只需传 sessionId。账号和密码仅保存在应用进程内存中,closeSession 会清理凭据和未完成请求。

推荐流程:discoverCamerascreateSessiongetCameraInfo / captureSnapshot / searchRecordingsgetReplayUricloseSession

getReplayUri 返回摄像机提供的 Replay URI,通常为 RTSP 地址;插件不播放该地址,也不提供历史录像文件下载。当前版本已通过协议 fixture、Mock SOAP 服务自身行为测试、源码契约测试及三端编译验证;这些测试尚未让三端 native 网络实现连接 Mock 服务,也尚未使用真实摄像头验证,设备兼容性需要后续实机联调。

使用前提

Android

  • 最低 Android 21,需要 INTERNET、网络状态、Wi-Fi 状态和组播权限。
  • 局域网 HTTP 摄像机需要允许 cleartext 流量,插件 Manifest 已声明。

iOS

  • 最低 iOS 12。应用需要配置局域网访问用途说明,并允许访问摄像机所在网络。

Harmony

  • 最低 HarmonyOS 5.0.0,需要 ohos.permission.INTERNET

摄像机应实现所调用的 ONVIF Device、Media、Recording、Search、Replay 服务。Recording/Search/Replay 不是所有 ONVIF 摄像机的必选能力。

插件接口

所有接口均使用 successfailcomplete 回调。失败对象包含 errSubjecterrCodeerrMsgcodeName 和可选 detail,错误码范围为 92010019201012

createSession

创建摄像机会话。clientId 可作为稳定 sessionId;留空时自动生成。

uni-app项目中(nvue)调用示例:

import { createSession } from "@/uni_modules/XF-ONVIFInfoUTS"
createSession({ config: { clientId: "camera-1", host: "192.168.1.10", port: 80, username: "admin", password: "" }, complete: (res) => { console.log(res) } })

uni-app x项目(uvue)中调用示例:

import { createSession } from "@/uni_modules/XF-ONVIFInfoUTS"
import { XFOnvifCreateSessionOptions } from "@/uni_modules/XF-ONVIFInfoUTS/utssdk/interface.uts"
let options = { config: { clientId: "camera-1", host: "192.168.1.10", port: 80 }, complete: (res : any) => { console.log(res) } } as XFOnvifCreateSessionOptions
createSession(options)

可用性

iOS、Android、Harmony系统

可提供的1.0.0及更高版本

updateSession

更新指定 sessionId 的连接配置,并清除已缓存的服务和 Profile 信息。

uni-app项目中(nvue)调用示例:

import { updateSession } from "@/uni_modules/XF-ONVIFInfoUTS"
updateSession({ sessionId: "camera-1", config: { password: "" }, complete: (res) => { console.log(res) } })

uni-app x项目(uvue)中调用示例:

import { updateSession } from "@/uni_modules/XF-ONVIFInfoUTS"
import { XFOnvifUpdateSessionOptions } from "@/uni_modules/XF-ONVIFInfoUTS/utssdk/interface.uts"
let options = { sessionId: "camera-1", config: { timeoutMs: 10000 }, complete: (res : any) => { console.log(res) } } as XFOnvifUpdateSessionOptions
updateSession(options)

可用性

iOS、Android、Harmony系统

可提供的1.0.0及更高版本

closeSession

关闭会话、取消该会话的进行中请求并清理凭据。

uni-app项目中(nvue)调用示例:

import { closeSession } from "@/uni_modules/XF-ONVIFInfoUTS"
closeSession({ sessionId: "camera-1", complete: (res) => { console.log(res) } })

uni-app x项目(uvue)中调用示例:

import { closeSession } from "@/uni_modules/XF-ONVIFInfoUTS"
import { XFOnvifCloseSessionOptions } from "@/uni_modules/XF-ONVIFInfoUTS/utssdk/interface.uts"
let options = { sessionId: "camera-1", complete: (res : any) => { console.log(res) } } as XFOnvifCloseSessionOptions
closeSession(options)

可用性

iOS、Android、Harmony系统

可提供的1.0.0及更高版本

discoverCameras

通过 WS-Discovery UDP 组播搜索局域网 ONVIF 设备并按 EndpointReference/XAddr 去重。

uni-app项目中(nvue)调用示例:

import { discoverCameras } from "@/uni_modules/XF-ONVIFInfoUTS"
discoverCameras({ timeoutMs: 4000, complete: (res) => { console.log(res) } })

uni-app x项目(uvue)中调用示例:

import { discoverCameras } from "@/uni_modules/XF-ONVIFInfoUTS"
import { XFOnvifDiscoverOptions } from "@/uni_modules/XF-ONVIFInfoUTS/utssdk/interface.uts"
let options = { timeoutMs: 4000, complete: (res : any) => { console.log(res) } } as XFOnvifDiscoverOptions
discoverCameras(options)

可用性

iOS、Android、Harmony系统

可提供的1.0.0及更高版本

getCameraInfo

读取 Device 信息、服务能力、Media Profile、码流 URI 和抓拍 URI。

uni-app项目中(nvue)调用示例:

import { getCameraInfo } from "@/uni_modules/XF-ONVIFInfoUTS"
getCameraInfo({ sessionId: "camera-1", complete: (res) => { console.log(res) } })

uni-app x项目(uvue)中调用示例:

import { getCameraInfo } from "@/uni_modules/XF-ONVIFInfoUTS"
import { XFOnvifSessionOptions } from "@/uni_modules/XF-ONVIFInfoUTS/utssdk/interface.uts"
let options = { sessionId: "camera-1", complete: (res : any) => { console.log(res) } } as XFOnvifSessionOptions
getCameraInfo(options)

可用性

iOS、Android、Harmony系统

可提供的1.0.0及更高版本

captureSnapshot

调用 Media GetSnapshotUri 下载 JPEG;先写临时文件,再原子替换目标文件。

uni-app项目中(nvue)调用示例:

import { captureSnapshot } from "@/uni_modules/XF-ONVIFInfoUTS"
captureSnapshot({ sessionId: "camera-1", includeBase64: false, complete: (res) => { console.log(res) } })

uni-app x项目(uvue)中调用示例:

import { captureSnapshot } from "@/uni_modules/XF-ONVIFInfoUTS"
import { XFOnvifSnapshotOptions } from "@/uni_modules/XF-ONVIFInfoUTS/utssdk/interface.uts"
let options = { sessionId: "camera-1", profileToken: "", complete: (res : any) => { console.log(res) } } as XFOnvifSnapshotOptions
captureSnapshot(options)

可用性

iOS、Android、Harmony系统

可提供的1.0.0及更高版本

searchRecordings

按 ISO-8601 时间范围执行 FindRecordings、轮询 GetRecordingSearchResults,最后调用 EndSearch。接口只查询历史录像元数据。

uni-app项目中(nvue)调用示例:

import { searchRecordings } from "@/uni_modules/XF-ONVIFInfoUTS"
searchRecordings({ sessionId: "camera-1", startTime: "2026-07-17T01:10:00Z", endTime: "2026-07-17T01:20:00Z", complete: (res) => { console.log(res) } })

uni-app x项目(uvue)中调用示例:

import { searchRecordings } from "@/uni_modules/XF-ONVIFInfoUTS"
import { XFOnvifSearchRecordingsOptions } from "@/uni_modules/XF-ONVIFInfoUTS/utssdk/interface.uts"
let options = { sessionId: "camera-1", startTime: "2026-07-17T01:10:00Z", endTime: "2026-07-17T01:20:00Z", complete: (res : any) => { console.log(res) } } as XFOnvifSearchRecordingsOptions
searchRecordings(options)

可用性

iOS、Android、Harmony系统

可提供的1.0.0及更高版本

getReplayUri

调用 Replay GetReplayUri 返回指定 Recording Token 的 Replay URI。该接口不播放、不转码,也不提供历史录像文件下载。

uni-app项目中(nvue)调用示例:

import { getReplayUri } from "@/uni_modules/XF-ONVIFInfoUTS"
getReplayUri({ sessionId: "camera-1", recordingToken: "recording-1", complete: (res) => { console.log(res) } })

uni-app x项目(uvue)中调用示例:

import { getReplayUri } from "@/uni_modules/XF-ONVIFInfoUTS"
import { XFOnvifReplayUriOptions } from "@/uni_modules/XF-ONVIFInfoUTS/utssdk/interface.uts"
let options = { sessionId: "camera-1", recordingToken: "recording-1", complete: (res : any) => { console.log(res) } } as XFOnvifReplayUriOptions
getReplayUri(options)

可用性

iOS、Android、Harmony系统

可提供的1.0.0及更高版本

隐私、权限声明

1. 本插件需要申请的系统权限列表:

- android.permission.INTERNET - android.permission.ACCESS_NETWORK_STATE - android.permission.ACCESS_WIFI_STATE - android.permission.CHANGE_WIFI_MULTICAST_STATE - ohos.permission.INTERNET

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

不采集数据;仅按调用参数访问局域网摄像机,账号和密码仅保存在应用进程内存中。

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无用户评论。