HarmonyOS API
HarmonyOS API 文档
一、IOTCamera
1.1 初始化接口
TK_InitIOTC
功能:IOTC初始化,确认privateKey和sdkLicensekey的合法性
两个Key值需要向TUTK申请
/**
IOTC初始化
@param licenseKey SDK初始化的Key值
@param privateKey PSC初始化的Key值
@param region privateKey所在区域
@param cb IOTC初始化结果回调
*/
export const TK_InitIOTC: (licenseKey: string, privateKey: string, region: TKRegion, cb: (arg: cameraInitState) => void) => void;
export enum TKRegion {
ALL = 0,
CN = 1,
EU = 2,
US = 3,
AISA = 4,
COUNT = 5
}
示例:
cameraNapi.TK_InitIOTC(licenseKey,privateKey, TKRegion.CN, (state:cameraNapi.cameraInitState)=>{
if ( state.errCode === 0) {
resolve(true)
}else{
resolve(false)
}
})
注:调用TK_InitIOTC时返回-10000, 是因为privateKey无效导致,遇到该问题时建议:
- 确认当前项目使用的包名与privateKey是否与TUTK提供的一致,如不一致,请修改为TUTK提供的包名与privateKey重新运行;
- 如需更改包名与privateKey,请联系商务或者技术支持人员。
TK_UninitIOTC
/**
IOTC反初始化
@return error code >= 0 success, other failer
*/
export const TK_UninitIOTC: () => number;
示例: cameraNapi.TK_UninitIOTC()
TK_getIOTCameraVersion
/**
获取IOTCamera版本号
@return IOTCamera版本号
*/
export const TK_getIOTCameraVersion: () => string;
示例: let version = cameraNapi.TK_getIOTCameraVersion()
TK_getIOTCAPIsVersion
/**
获取IOTCAPIs版本号
@return IOTCAPIs版本号
*/
export const TK_getIOTCAPIsVersion: () => string;
示例: let version = cameraNapi.TK_getIOTCAPIsVersion()
TK_getAVAPIsVersion
/**
获取AVAPIs版本号
@return AVAPIs版本号
*/
export const TK_getAVAPIsVersion: () => string;
示例: let version = cameraNapi.TK_getAVAPIsVersion()
TK_setMasterRegion
/**
设置分区分流方案的地区
@param region 设置分流到TKRegion中的哪个地区
@return error code >= 0 success, other failer
*/
export const TK_setMasterRegion: (region: TKRegion) => number;
示例: cameraNapi.TK_setMasterRegion(TKRegion.CN)
TK_setLog
/**
配置SDK日志文件及路径
@param enable 是否开启日志记录
@param dirPath 日志沙盒路径
@param log_level 日志等级
@param maxSize 日志文件总大小 (单位:byte)
设置path后,log沙盒存储路径为
<path>/logs/IOTC.txt
<path>/logs/AVAPI.txt
<path>/logs/Global.txt
<path>/logs/Nebula.txt
<path>/logs/IOTCamera.txt
*/
export const TK_setLog: (mode: TKLogOutPutMode, dirPath: string, log_level: Log_Level) => number;
export enum Log_Level {
LEVEL_VERBOSE = 0,
LEVEL_DEBUG = 1,
LEVEL_INFO = 2,
LEVEL_WARNING = 3,
LEVEL_ERROR = 4,
LEVEL_SILENCE = 5
}
export enum TKLogOutPutMode {
Console = 0,
File = 1,
Both = 2,
None = 3
}
示例:
沙盒文件夹路径可以自行定义,具体参考示例,SDK会在路径下面创建日志文件夹,文件夹里面会生成SDK日志文件
let dirPath = "/data/storage/el2/base/haps/IOTCamera/files"
cameraNapi.TK_setLog(TKLogOutPutMode.File, dirPath, Log_Level.LEVEL_INFO)
- 注意事项:
- 当设定mode=TKLogOutPutMode.File | TKLogOutPutMode.Both时开启log文件记录:
- 1、日志内容:包含p2p连线相关log 和 控制台log,其中p2p连线相关log默认生成AVAPI、IOTC、RDT、Global共四个模块日志;
- 2、写入规则:p2p连线相关log按AVAPI、IOTC、RDT、Global不同模块,分别在不同的txt文件中写入;log大小在达到设置的上限会先备份到新的txt文件中,然后清空继续写入, 每份txt只有一份备份, 以此在限制总大小内实现日志滚动更新;
- 3、日志大小:每份txt文件大小上限为默认1Gb;
- 4、清除规则:滚动更新时自动删除旧的备份;
- 当设定mode=TKLogOutPutMode.Console | TKLogOutPutMode.None关闭log文件记录;
TK_setAvInitialize
/**
设置AV初始化最大通道数
@param maxChannel av通道数
*/
export const TK_setAvInitialize: (maxChannels: number) => void;
示例: cameraNapi.TK_setAvInitialize(128)
1.2 回调接口
1.2.1 P2P相关回调
TK_sessionStateCallBack
/**
IOTC连线状态回调
@param uid 设备uid
@param cb session状态信息回调
*/
export const TK_sessionStateCallBack: (uid: string, cb: (arg: cameraSessionState) => void) => void;
// IOTC连线状态
export interface cameraSessionState {
uid: string; // 设备UID
sessionState: number; // 连线状态 enum CONNECTION_STATE
errCode: number; // 错误码
}
TK_channelStateCallBack
/**
AV通道连线状态回调
@param uid 设备uid
@param cb channel通道状态信息回调
*/
export const TK_channelStateCallBack: (uid: string, cb: (arg: cameraChannelState) => void) => void;
// AV通道连线状态
export interface cameraChannelState {
uid: string; // 设备UID
channel: number; // av通道
channelState: number; // av通道状态 enum CONNECTION_STATE
errCode: number; // 错误码
}
TK_recvIOCtrlCallBack
/**
IOCtrl指令接收状态结果回调
@param uid 设备uid
@param cb IOCtrl指令接收状态
*/
export const TK_recvIOCtrlCallBack: (uid: string, cb: (arg: recvIOCtrlState) => void) => void;
// IOCtrl指令接收状态
export interface recvIOCtrlState {
uid: string; // 设备UID
channel: number; // av通道
type: number; // 指令类型
recvData: Uint8Array; // 指令内容数据
size: number; // 指令数据长度
}
TK_recvFrameInfoCallBack
/**
AV通道调试相关信息状态回调
@param uid 设备uid
@param cb 调试相关信息状态
*/
export const TK_recvFrameInfoCallBack: (uid: string, cb: (arg: recvFrameInfoState) => void) => void;
// debug调试信息
export interface recvFrameInfoState {
uid: string; // 设备UID
channel: number; // av通道
avIndex: number; // av通道的index
videoWidth: number; // 视频帧宽度
videoHeight: number; // 视频帧高度
videoFps: number; // 视频帧率
videoBps: number; // 视频带宽
audioBps: number; // 音频带宽
videoPTS: number; // 视频帧显示时间戳
audioPTS: number; // 音频帧播放时间戳
frameCount: number; // 视频帧数
recvIOCtrlType: number; // 接收的指令类型
isHWDecode: number; // 是否是硬解
connectMode: number; // 连接模式 enum CONNECTION_MODE
onlineNum: number; // 在线人数
videoTimestamp: number; // 视频帧时间戳
audioTimestamp: number; // 音频帧时间戳
}
TK_startShowCallBack
/**
播放的相关状态结果回调
@param uid 设备uid
@param cb 播放的相关状态结果
*/
export const TK_startShowCallBack: (uid: string, cb: (arg: startShowState) => void) => void;
// 播放相关状态
export interface startShowState {
channel: number; // av通道
errCode: number; // 错误码
isSuccess: number; // 是否开启出图成功
isHWDecode: number; // 是否硬解
}
TK_startListenCallBack
/**
监听相关状态结果回调
@param uid 设备uid
@param cb 监听相关状态
*/
export const TK_startListenCallBack: (uid: string, cb: (arg: startListenState) => void) => void;
// 监听相关状态
export interface startListenState {
channel: number; // av通道
errCode: number; // 错误码
isSuccess: number; // 是否开启监听成功
}
TK_startTalkCallBack
/**
对讲相关状态结果回调
@param uid 设备uid
@param cb 对讲的相关状态结果
*/
export const TK_startTalkCallBack: (uid: string, cb: (arg: startTalkState) => void) => void;
// 对讲相关状态
export interface startTalkState {
errCode: number; // 错误码
isSuccess: number; // 是否开启对讲成功
}
TK_startVideoToDeviceCallBack
/**
发送视频的相关状态结果回调
@param uid 设备uid
@param cb 发送视频相关状态结果
*/
export const TK_startVideoToDeviceCallBack: (uid: string, cb: (arg: startVideoState) => void) => void;
// 发送视频相关状态
export interface startVideoState {
channel: number; // av通道
errCode: number; // 错误码
isSuccess: number; // 是否开启视频发送通道成功
}
TK_recordingStateCallBack
/**
本地录像状态回调
@param uid 设备uid
@param cb 本地录像状态
*/
export const TK_recordingStateCallBack: (uid: string, cb: (arg: recordingState) => void) => void;
// 本地录像状态
export interface recordingState {
uid: string; // 设备UID
channel: number; // av通道
isRecording: number; // 是否录像中
recordTime: number; // 录像时间
}
连线状态status
export enum CONNECTION_STATE {
NONE = 0, //初始化连线状态
CONNECTING = 1, //设备连线中 未返回状态
CONNECTED = 2, //设备已连线 返回状态>= 0
DISCONNECTED = 3, //设备未连线 返回状态 -22 AV其它
UNKNOWN_DEVICE = 4, //未知设备 返回状态 -15
WRONG_PASSWORD = 5, //设备连线密码错误 返回状态 -20009
TIMEOUT = 6, //设备连线超时 返回状态-13 -23 -20016 -20011
UNSUPPORTED = 7, //不支持设备 返回状态-40
CONNECT_FAILED = 8, //设备连线失败 其它
UNKNOWN_LICENSE = 9, //设备uid未在license中 返回状态 -10
SLEEP = 10, //设备睡眠状态 返回状态 -64
DEVICE_MAX_SESSION = 11, //超过设备最大连线数 返回状态-48
POOR_NETWORKSIGNAL = 12, //网络信号差 返回状态 -19 -42
WRONG_AUTHKEY = 13, //authkey不正确 返回状态 -46 -68
}
1.2.2 音视频相关回调
TK_recvFrameDataCallBack
/**
上抛音视频帧数据及对应帧信息回调
@param uid 设备uid
@param cb 帧数据回调
*/
export const TK_recvFrameDataCallBack: (uid: string, cb: (arg: recvFrameDataState) => void) => void;
// 上抛音视频裸流帧数据及帧信息
export interface recvFrameDataState {
uid: string; // 设备UID
channel: number; // av通道
frameData: Uint8Array; // 帧数据
frameSize: number; // 帧数据长度
frameInfo: Uint8Array; // 帧信息
frameInfoSize: number; // 帧信息长度
}
TK_recvAudioDataCallBack
/**
上抛音频帧数据及对应帧信息回调
@param uid 设备uid
@param cb 帧数据信息回调
*/
export const TK_recvAudioDataCallBack: (uid: string, cb: (arg: recvAudioDataState) => void) => void;
// 上抛音频裸流帧数据及帧信息状态
export interface recvAudioDataState {
uid: string; // 设备UID
channel: number; // av通道
frameData: Uint8Array; // 音频帧数据
frameSize: number; // 音频帧数据长度
frameInfo: Uint8Array; // 帧信息
frameInfoSize: number; // 帧信息长度
}
TK_outputDecodeVideoDataCallBack
/**
解码后的视频数据信息回调
@param uid 设备uid
@param cb 视频数据及信息
*/
export const TK_outputDecodeVideoDataCallBack: (uid: string, cb: (arg: outputDecodeVideoDataState) => void) => void;
// YUV数据信息
export interface outputDecodeVideoDataState {
channel: number; // av通道
data: Uint8Array; // 数据
size: number; // 数据长度
width: number; // 宽度
height: number; // 高度
timestamp: number; // 时间戳
}
TK_outputAudioDataCallBack
/**
音频数据信息回调
@param uid 设备uid
@param cb 音频数据及信息
*/
export const TK_outputAudioDataCallBack: (uid: string, cb: (arg: outputAudioDataState) => void) => void;
// PCM数据信息
export interface outputAudioDataState {
channel: number; // av通道
data: Uint8Array; // pcm数据
size: number; // pcm数据长度
timestamp: number; // 时间戳
outputType: TKOutputPCMType; // 监听/对讲
}
TK_transferFileCallBack
/**
上传/下载文件传输状态信息回调
@param uid 设备uid
@param cb 文件传输状态信息
*/
export const TK_transferFileCallBack: (uid: string, cb: (arg: transferFileState) => void) => void;
// 上传/下载文件传输状态
export interface transferFileState {
uid: string; // 设备UID
channel: number; // 传输通道
progress: number; // 传输进度(0~100)
filename: string; // 文件名
isUpload: number; // 上传/下载
errCode: number; // 错误码
}
TK_captureVideoDataCallBack
/**
上抛相机采集的YUV视频数据
@param uid 设备uid
@param cb YUV数据回调
*/
export const TK_captureVideoDataCallBack: (uid: string, cb: (arg: outputCaptureVideoState) => void) => void;
// 相机采集数据信息
export interface outputCaptureVideoState {
channel: number; // av通道
yuvData: Uint8Array; // yuv数据
yuvSize: number; // yuv数据长度
width: number; // 宽
height: number; // 高
timestamp: number; // 时间戳
format: number; // yuv格式(只支持NV21)
}
1.3 连线接口
1.3.1 P2P
TK_LanSearch
/**
搜索本地局域网内的设备
@param timeout 搜索超时时间
@param cb 搜索结果回调
*/
export const TK_LanSearch: (timeout: number, cb: (arg: LanSearchInfo[]) => void) => void;
// 本地搜索信息
export interface LanSearchInfo {
uid: string; // 设备UID
ip: string; // 局域网ip
port: number; // 局域网端口
}
示例:
const lanDevList :LanSearchDev[]= [];
cameraNapi.TK_LanSearch(timeOut,(arg: LanSearchInfo[]) => {
arg.forEach((info: LanSearchInfo) => {
lanDevList.push(new LanSearchDev(info.uid, info.ip, info.port))
});
})
TK_connect
/**
开始连接设备
@param uid 设备UID
@param authKey 验证码
*/
export const TK_connect: (uid: string, authkey: string) => number;
示例: cameraNapi.TK_connect( this.uid,this.authKey)
TK_connectEx
/**
开始连接设备(设置设备分区)
@param uid 设备UID
@param authKey 设备连线的key
@param region 设备所在区域
@param p2pModeDisable 是否禁用P2P模式,强制转发
*/
export const TK_connectEx: (uid: string, authkey: string, region: TKRegion, p2pModeDisable: boolean) => number;
示例: cameraNapi.TK_connectEx( this.uid,this.authKey,TKRegion.CN, false)
TK_disconnect
/**
断开设备连线
@param uid 设备UID
*/
export const TK_disconnect: (uid: string) => number;
示例: cameraNapi.TK_disconnect( this.uid)
TK_getSessionState
/**
获取IOTC连线状态
@param uid 设备UID
@return IOTC连线状态 enum CONNECTION_STATE
*/
export const TK_getSessionState: (uid: string) => number;
示例: let sessionState = cameraNapi.TK_getSessionState(this.uid)
TK_isSessionConnected
/**
获取IOTC是否已连线
@param uid 设备uid
@return IOTC是否已连线 0: 未连上 1:已连上
*/
export const TK_isSessionConnected: (uid: string) => boolean;
示例: let isConnected = cameraNapi.TK_isSessionConnected(this.uid)
TK_getSessionID
/**
获取IOTC连线会话ID
@param uid 设备UID
@return 会话ID result >= 0 sessionID, other failer
*/
export const TK_getSessionID: (uid: string) => number;
示例: let sessionID = cameraNapi.TK_getSessionID(this.uid)
TK_getSessionMode
/**
获取IOTC连线模式
@param uid 设备UID
@return 连线模式 enum CONNECTION_MODE
*/
export const TK_getSessionMode: (uid: string) => number;
示例: let sessionMode = cameraNapi.TK_getSessionMode(this.uid)
1.3.2 Nebula
TK_nebulaBind
/**
Nebula bind设备
@param udid 设备udid 40码
@param bindType 绑定类型,pincode|credential|local
@param bindKey 与绑定类型相关,填入数据分别为pincode|credential|password
@param cb nebula绑定状态回调
*/
export const TK_nebulaBind: (udid: string, bindType: TKNebulaBindType, bindKey: string, cb: (arg: nebulaBindState) => void) => void;
// Nebula绑定类型
export enum TKNebulaBindType {
ALREADY_BIND = 0,
SERVER_BIND = 1,
AP_BIND = 2
}
// Nebula设备绑定状态
export interface nebulaBindState {
state: number; // 绑定状态 enum CONNECTION_STATE
credential: string; // 设备UID
errCode: number; // 错误码
}
示例:
cameraNapi.TK_nebulaBind(this.udid, TKNebulaBindType.AP_BIND, @"888888ii", (state: nebulaBindState) => { });
TK_nebulaConnect
/**
Nebula 连线设备 (连线状态通过TK_sessionStateCallBack回调)
@param udid 设备udid 40码
@param credential credential
@param deviceToken 设备token
@param realm realm
*/
export const TK_nebulaConnect: (udid: string, credential: string, identity: string, deviceToken: string, realm: string, isWakeup: boolean, isNebulaOnly: boolean) => void;
示例: cameraNapi.TK_nebulaConnect(this.udid, credential, deviceToken, realm);
TK_nebulaConnectEx
/**
Nebula 连线设备 (连线状态通过TK_sessionStateCallBack回调)
@param udid 设备udid 40码
@param credential credential
@param identity 认证码
@param deviceToken 设备token
@param realm realm
@param isWakeup 是否自动唤醒
@param isNebulaOnly 是否只支持Nebula
*/
export const TK_nebulaConnectEx: (udid: string, credential: string, identity: string, deviceToken: string, realm: string, isWakeup: boolean, isNebulaOnly: boolean) => void;
示例: cameraNapi.TK_nebulaConnectEx(this.udid, credential, "", deviceToken, realm, true, false);
TK_nebulaLanSearch
/**
Nebula 局域网扫描设备
@param timeout 超时时间 单位ms
@param cb 本地搜索结果回调
*/
export const TK_nebulaLanSearch: (timeout: number, cb: (arg: NebulaLanSearchInfo[]) => void) => void;
// Nebula本地搜索信息
export interface NebulaLanSearchInfo {
udid: string; // 设备UID
name: string; // 设备名称
}
示例:
cameraNapi.TK_nebulaLanSearch(10*1000, (state: NebulaLanSearchInfo[]) => { });
TK_nebulaSsidListReq
/**
Nebula AP模式获取设备ssid list
@param maxCount 最大数量
@param timeout 超时时间 单位ms
@param cb 结果回调
*/
export const TK_nebulaSsidListReq: (maxCount: number, timeout: number, cb: (arg: NebulaSSIDInfo[]) => void) => void;
// Nebula SSID信息
export interface NebulaSSIDInfo {
ssid: string; // 无线wifi名称
enctype: number; // 加密类型 enum TKNebulaAPEncType
}
示例:
cameraNapi.TK_nebulaSsidListReq(maxCount, 5*1000, (infos: NebulaSSIDInfo[]) => { });
TK_nebulaSetWifiReq
/**
Nebula 设置wifi
@param ssid Wifi名称
@param password 密码
@param enctype 加密类型
@param timeout 超时时间 单位ms
@param cb 结果回调
*/
export const TK_nebulaSetWifiReq: (ssid: string, password: string, enctype: TKNebulaAPEncType, timeout: number, cb: (arg: nebulaSetWiFiState) => void) => void;
// WiFi加密类型
export enum TKNebulaAPEncType {
INVALID = 0,
NONE = 1,
WEP = 2, //WEP, for no password
WPA_TKIP = 3,
WPA_AES = 4,
WPA2_TKIP = 5,
WPA2_AES = 6,
WPA_PSK_TKIP = 7,
WPA_PSK_AES = 8,
WPA2_PSK_TKIP = 9,
WPA2_PSK_AES = 10,
}
export enum TKNebulaSetWifiRetType {
FAIL = 0, // failer
OK = 1, // device get message,but not connect success
SUCCESS = 2 // device get message,and connect success
}
// Nebula设置网络状态
export interface nebulaSetWiFiState {
ssid: string; // 无线wifi名称
result: number; // 设置结果 enum TKNebulaSetWifiRetType
errCode: number; // 错误码
}
示例:
cameraNapi.TK_nebulaSetWifiReq(ssid, password, TKNebulaAPEncType.WPA2_AES, 3*1000, (state: nebulaSetWiFiState)=>{ });
TK_nebulaSetRegionReq
/**
Nebula 设置region
@param region 区域设置
@param timeout 超时时间 单位ms
@param cb 结果回调
*/
export const TK_nebulaSetRegionReq: (region: TKGlobalRegion, timeout: number, cb: (arg: nebulaSetRegionState) => void) => void;
// Nebula设置区域状态
export interface nebulaSetRegionState {
isSuccess: number; // 是否成功
errCode: number; // 错误码
}
示例:
cameraNapi.TK_nebulaSetRegionReq(TKGlobalRegion.REGION_CN, 3*1000, (state: nebulaSetRegionState)->{ });
1.3.3 AV通道
TK_start
/**
开启AV通道
@param uid 设备UID
@param channel av通道号
@param password 设备密码
@param account 设备账号
*/
export const TK_start: (uid: string, channel: number, password: string, account: string) => number;
示例: cameraNapi.TK_start(this.uid,channel,this.password,this.account)
TK_startEx
/**
开启AV通道(支持authType和securityMode设定)
@param uid 设备UID
@param channel av通道号
@param password 设备密码
@param account 设备账号
@param authType 设备验证码类型
@param securityMode 加密模式
@param requestVideoOnConnect 设备是否直接发流
*/
export const TK_startEx: (uid: string, channel: number, password: string, account: string, authType: TKAuthType, securityMode: TKSecurityMode, requestVideoOnConnect: boolean) => number;
示例: cameraNapi.TK_startEx(this.uid, this.channel, this.password,this.account, TKAuthType.Password, TKSecurityMode.AUTO, true)
TK_stop
/**
关闭AV通道
@param uid 设备UID
@param channel av通道号
*/
export const TK_stop: (uid: string, channel: number) => number;
示例: cameraNapi.TK_stop(this.uid, this.channel)
TK_stopEx
/**
断线AV通道并设定是否发送0x2FF指令
@param uid 设备UID
@param channel av通道号
@param isSendComond 是否发送指令2FF
*/
export const TK_stopEx: (uid: string, channel: number, isSendComond: boolean) => number;
示例: cameraNapi.TK_stopEx(this.uid, this.channel, true)
TK_getChannelState
/**
获取AV通道连接状态
@param uid 设备UID
@param channel av通道号
@return av通道状态 enum CONNECTION_STATE
*/
export const TK_getChannelState: (uid: string, channel: number) => number;
示例: let channelState = cameraNapi.TK_getChannelState( this.uid, this.channel)
TK_isChannelConnected
/**
获取AV通道是否已连线
@param uid 设备uid
@param channel av通道号
@return av通道是否已连线
*/
export const TK_isChannelConnected: (uid: string, channel: number) => boolean;
示例: let isConnected = cameraNapi.TK_isChannelConnected(this.uid, this.channel)
TK_getFreeChannel
/**
获取空闲的通道号
@param uid 设备UID
@return 空闲通道号 result >= 0 success, other failer
*/
export const TK_getFreeChannel: (uid: string) => number;
示例: let freeChannel = cameraNapi.TK_getFreeChannel(this.uid)
TK_getAVChannelCount
/**
获取AV通道总数
@param uid 设备UID
@return av通道总数
*/
export const TK_getAVChannelCount: (uid: string) => number;
示例: let channelCount = cameraNapi.TK_getAVChannelCount( this.uid)
TK_getAVChannelIndex
/**
获取AV通道实际的index
@param uid 设备UID
@param channel av通道号
@return avIndex
*/
export const TK_getAVChannelIndex: (uid: string, channel: number) => number;
示例: let channelCount = cameraNapi.TK_getAVChannelCount( this.uid)
TK_getServiceTypeOfChannel
/**
获取AV通道ServiceType
@param uid 设备UID
@param channel av通道
@return serviceType值
*/
export const TK_getServiceType: (uid: string, channel: number) => number;
示例: let serviceType = cameraNapi.TK_getServiceType( this.uid, this.channel)
TK_changeAuthKey
/**
修改authkey
@param uid 设备UID
@param channel av通道
@param cb 修改结果
*/
export const TK_changeAuthKey: (uid: string, channel: number, cb: (arg: changeAuthkeyState) => void) => number;
// 修复authkey结果
export interface changeAuthkeyState {
channel: number; // av通道
authkey: string; // 验证码
errCode: number; // 错误码
}
示例:
cameraNapi.TK_changeAuthKey( this.uid, this.channel,(state: snapshotState) => {
if (state.errCode >= 0) {
resolv(state.authkey)
}
})
1.4 视频处理接口
TK_startShow
/**
开始视频播放
@param uid 设备UID
@param channel av通道
@param xids 指定XComponent IDs
*/
export const TK_startShow: (uid: string, channel: number, xids: string[]) => number;
示例: cameraNapi.TK_startShow( this.uid, this.channel, [xid])
TK_startShowEx
/**
开始视频播放并设定解码播放相关参数
@param uid 设备UID
@param channel av通道
@param xids 指定XComponent IDs
@param isDecodeAndRender 是否解码并渲染
@param isSWDecode 是否软解
@param isDropFrame 是否丢P帧
@param renderType 输出数据类型
@param isSendCommand 是否发送指令1FF
*/
export const TK_startShowEx: (uid: string, channel: number, xids: string[], isDecodeAndRender: boolean, isSWDecode: boolean, isDropFrame: boolean, renderType: RENDER_TYPE, isSendComond: boolean) => number;
export enum RENDER_TYPE {
OUTPUT_EMPTY = 0, //接收、解码、渲染,不输出数据
OUTPUT_YUV = 1, //接收、解码、渲染,并输出yuv数据i420(耗时)
OUTPUT_RGB_8888 = 2, //接收、解码、渲染,并输出RGB_8888数据(耗时)
OUTPUT_RGB_565 = 3, //接收、解码、渲染,并输出RGB_565数据(耗时)
OUTPUT_YUV_NV12 = 4 //接收、解码、渲染,并输出yuv数据nv12(耗时)
}
示例: cameraNapi.TK_startShowEx( this.uid, this.channel, [xid], true, false, false, RENDER_TYPE.OUTPUT_EMPTY, true)
TK_stopShow
/**
停止视频播放
@param uid 设备UID
@param channel av通道
*/
export const TK_stopShow: (uid: string, channel: number) => number;
示例: cameraNapi.TK_stopShow( this.uid, this.channel)
TK_stopShowEx
/**
停止视频播放并设定是否发送0x2FF指令
@param uid 设备UID
@param channel av通道
@param isSendCommand 是否发送指令2FF
*/
export const TK_stopShowEx: (uid: string, channel: number, isSendComond: boolean) => number;
示例: cameraNapi.TK_stopShowEx( this.uid, this.channel, true)
TK_setHWDecodingAbility
/**
设置指定通道的软硬解码方式
@param uid 设备UID
@param channel av通道
@param isHWDecode 是否硬解码
*/
export const TK_setHWDecodingAbility: (uid: string, channel: number, isHWDecode: boolean) => number;
示例: cameraNapi.TK_setHWDecodingAbility( this.uid, this.channel, true)
TK_setAVFilter
/**
开启/关闭解码器滤镜并设定滤镜指令
@param uid 设备UID
@param channel av通道号
@param filterCmd 滤镜指令 (ex: "eq=contrast=1.5:brightness=0:saturation=1.5:gamma=1:gamma_r=1:gamma_g=1:gamma_b=1")
@param isOn 开启/关闭
*/
export const TK_setAVFilter: (uid: string, channel: number, filterCmd: string, isOn: boolean) => void;
示例: let filterCmd = "eq=contrast=1.5:brightness=0:saturation=1.5:gamma=1:gamma_r=1:gamma_g=1:gamma_b=1" cameraNapi.TK_setAVFilter( this.uid, this.channel, filterCmd, true)
TK_setDecodeDelayTime
/**
设置最大延迟时间,调整解码每帧时间间隔
@param uid 设备UID
@param channel av通道
@param delayTime 最大延迟时间(ms)
*/
export const TK_setDecodeDelayTime: (uid: string, channel: number, delayTime: number) => void;
示例: cameraNapi.TK_setDecodeDelayTime( this.uid, this.channel, 1500)
TK_setVideoDropMode
/**
丢帧
@param uid 设备uid
@param channel av通道
@param isDropFrame 是否丢帧
*/
export const TK_setVideoDropMode: (uid: string, channel: number, dropMode: DropMode) => void;
export enum DropMode {
DROP_P = 0, // 丢P帧
FAST_DECODE = 1 // 快进
}
示例: cameraNapi.TK_setVideoDropMode( this.uid, this.channel, DropMode.FAST_DECODE)
TK_getVideoCodecId
/**
获取当前视频格式(在调用TK_StartShow并且出图后调用)
@param uid 设备UID
@param channel av通道
@return 编码格式 enum TKVideoCodecID
*/
export const TK_getVideoCodecId: (uid: string, channel: number) => number;
示例: let codeID = cameraNapi.TK_getVideoCodecId( this.uid, this.channel)
1.5 音频处理接口
TK_startSoundToPhone
/**
开始音频监听
@param uid 设备UID
@param channel av通道
*/
export const TK_startSoundToPhone: (uid: string, channel: number) => number;
示例: cameraNapi.TK_startSoundToPhone( this.uid, this.channel)
TK_startSoundToPhoneEx
/**
开始音频监听并设定是否发送指令300
@param uid 设备UID
@param channel av通道
@param isDecodeAndPlay 是否解码并播放
@param sendStartCommand 是否发送接收指令(0x0300)
*/
export const TK_startSoundToPhoneEx: (uid: string, channel: number, isDecodeAndPlay: boolean, isSendComond: boolean) => number;
示例: cameraNapi.TK_startSoundToPhoneEx( this.uid, this.channel, true, true)
TK_stopSoundToPhone
/**
停止音频监听
@param uid 设备UID
@param channel av通道
*/
export const TK_stopSoundToPhone: (uid: string, channel: number) => number;
示例: cameraNapi.TK_startSoundToPhone( this.uid, this.channel)
TK_stopSoundToPhoneEx
/**
停止音频监听并设定是否发送指令301
@param uid 设备UID
@param channel av通道
@param isSendComond 是否发送停止指令(0x0301)
*/
export const TK_stopSoundToPhoneEx: (uid: string, channel: number, isSendComond: boolean) => number;
示例: cameraNapi.TK_stopSoundToPhoneEx( this.uid, this.channel, true)
TK_startSoundToDevice
/**
开始对讲(发送声音到设备)
@param uid 设备UID
@param channel av通道
@param isResend 是否开启重送
*/
export const TK_startSoundToDevice: (uid: string, channel: number, isResend: boolean) => number;
示例: cameraNapi.TK_startSoundToDevice( this.uid, this.channel, true)
TK_stopSoundToDevice
/**
停止对讲
@param uid 设备UID
@param channel av通道
*/
export const TK_stopSoundToDevice: (uid: string, channel: number) => number;
示例: cameraNapi.TK_stopSoundToDevice( this.uid, this.channel)
TK_setAudioOutput
/**
设置是否上抛监听和对讲的PCM数据
@param uid 设备UID
@param channel av通道
@param isOutputSpeakAudio 是否上抛解码后的监听PCM数据
@param isOutputMicAudio 是否上抛采集的对讲PCM数据
*/
export const TK_setAudioOutput: (uid: string, channel: number, isOutputSpeak: boolean, isOutputMic: boolean) => void;
示例: cameraNapi.TK_setAudioOutput( this.uid, this.channel, true, true)
TK_playAudio
/**
播放处理后的音频PCM数据
@param uid 设备UID
@param channel av通道
@param pcmBuf 音频数据
@param pcmSize 音频数据长度
@param timestamp 时间戳
*/
export const TK_playAudio: (uid: string, channel: number, pcmBuf: Uint8Array, pcmSize: number, timestamp: number) => number;
示例: cameraNapi.TK_playAudio( this.uid, this.channel, pcmData, pcmSize, timestamp)
TK_sendAudio
/**
发送处理后的音频PCM数据
@param uid 设备UID
@param channel av通道
@param pcmBuf 音频数据
@param pcmSize 音频数据长度
@param timestamp 时间戳
*/
export const TK_sendAudio: (uid: string, channel: number, pcmBuf: Uint8Array, pcmSize: number, timestamp: number) => number;
示例: cameraNapi.TK_sendAudio( this.uid, this.channel, pcmData, pcmSize, timestamp)
TK_getSoundToPhoneCodecId
/**
获取当前监听音频格式,在调用TK_startSoundToPhone后使用
@param uid 设备UID
@param channel av通道
@return 编码格式 enum TKAudioCodecID
*/
export const TK_getSoundToPhoneCodecId: (uid: string, channel: number) => number;
示例: let codeID = cameraNapi.TK_getSoundToPhoneCodecId( this.uid, this.channel)
TK_getSoundToDeviceCodecId
/**
获取当前对讲音频格式(在调用TK_startSoundToDevice后使用)
@param uid 设备UID
@param channel av通道
@return 编码格式 enum TKAudioCodecID
*/
export const TK_getSoundToDeviceCodecId: (uid: string, channel: number) => number;
示例: let codeID = cameraNapi.TK_getSoundToDeviceCodecId( this.uid, this.channel)
1.6 录像与截图
TK_snapshot
/**
截图
@param uid 设备UID
@param channel av通道
@param filepath 沙盒路径
@param quality 截图质量(0~100)
@param cb 截图结果回调
*/
export const TK_snapshot: (uid: string, channel: number, filepath: string, quality: number, cb: (arg: snapshotState) => void) => number;
// 截图状态
export interface snapshotState {
errCode: number; // 错误码
}
示例:
let path = "/data/storage/el2/base/haps/IOTCamera/files/snapshot.jpg";
let ret = cameraNapi.TK_snapshot(this.uid, this.channel, path, 100, (state: snapshotState) => {
if (state.errCode > 0) {
resolve(true)
}else {
resolve(false)
}
})
TK_startRecording
/**
指定通道并开始录像
@param uid 设备UID
@param channel av通道
@param filepath 沙盒路径
@param isListening 是否开启监听声音
*/
export const TK_startRecording: (uid: string, channel: number, filepath: string, isListening: boolean) => number;
示例: let path = "/data/storage/el2/base/haps/IOTCamera/files/record.mp4"; let ret = cameraNapi.TK_startRecording(this.uid, this.channel, path, true)
TK_stopRecording
/**
停止录像
@param uid 设备UID
@param channel av通道
*/
export const TK_stopRecording: (uid: string, channel: number) => number;
示例: cameraNapi.TK_stopRecording(this.uid, this.channel)
1.7 指令发送
1.7.1 P2P
TK_sendIOCtrlToChannel
/**
给指定通道发送IOCtrl指令
@param uid 设备UID
@param channel av通道
@param type 指令类型
@param buff 指令内容
@param buffer_size 指令内容大小
@param isJson 是否是JSON
*/
export const TK_sendIOCtrlToChannel: (uid: string, channel: number, type: number, buff: Uint8Array, buffer_size: number, isJson: boolean) => void;
示例: let ioCtrlHexStr = "0100000000000000" let ioCtrlSize = ioCtrlHexStr.length / 2; let ioCtrl = hexStringToUint8Array(ioCtrlHexStr) cameraNapi.TK_sendIOCtrlToChannel(this.uid, this.channel, 0x32A, ioCtrl, ioCtrlSize, false)
TK_sendIOCtrl
/**
给指定通道发送IOCtrl指令并返回发送结果
@param uid 设备UID
@param channel av通道
@param type 指令类型
@param buff 指令内容
@param buffer_size 指令内容大小
@param cb 发送结果回调
*/
export const TK_sendIOCtrl: (uid: string, channel: number, type: number, buff: Uint8Array, buffer_size: number, cb: (arg: sendIOCtrlState) => void) => void;
// IOCtrl指令发送结果及响应状态回调
export interface sendIOCtrlState {
channel: number; // av通道
ctrlType: number; // 指令类型
response: string; // 指令响应内容
isJSON: number; // 是否是JSON
errCode: number; // 错误码
}
示例:
let ioCtrlHexStr = "0100000000000000"
let ioCtrlSize = ioCtrlHexStr.length / 2;
let ioCtrl = hexStringToUint8Array(ioCtrlHexStr)
cameraNapi.TK_sendIOCtrl(this.uid, this.channel, 0x32A, ioCtrl, ioCtrlSize, (state: sendIOCtrlState) => {
if (state.errCode >= 0) {
hilog.info("send success")
}else {
hilog.error("send failer")
}
})
TK_sendJsonIOCtrl
/**
给指定通道发送JSON指令并返回发送结果及指令回复
@param uid 设备UID
@param channel av通道
@param jsonRequest 指令内容
@param cb 发送结果及Response回调
*/
export const TK_sendJsonIOCtrl: (uid: string, channel: number, jsonRequest: string, cb: (arg: sendIOCtrlState) => void) => void;
示例:
let jsonRequest = "{\"func\":\"startVideo\",\"args\":{\"value\":true}}"
cameraNapi.TK_sendJsonIOCtrl(this.uid, this.channel, jsonRequest, (state: sendIOCtrlState) => {
if (state.errCode >= 0) {
hilog.info("send success")
}else {
hilog.error("send failer")
}
})
TK_removeAllCmd
/**
清空指令队列
@param uid 设备UID
@param channel av通道号
*/
export const TK_removeAllCmd: (uid: string, channel: number) => void;
示例: cameraNapi.TK_removeAllCmd(this.uid, this.channel)
1.7.2 Nebula
TK_nebulaSendReq
/**
Nebula 发送指令及回调
@param udid 设备udid 40码
@param request 指令内容
@param timeout 超时时间 单位ms
@param cb 响应回调
*/
export const TK_nebulaSendReq: (udid: string, request: string, timeout: number, cb: (arg: nebulaSendReqState) => void) => void;
// Nebula指令响应状态
export interface nebulaSendReqState {
response: string; // 响应内容
errCode: number; // 错误码
}
示例:
cameraNapi.TK_nebulaSendReq(this.udid, request, 3*1000, (state: nebulaSendReqState) => { });
1.8 文件下载和上传
TK_startDownload
/**
开始文件下载
@param uid 设备UID
@param channel 下载通道
@param protocol 传输协议
@param dirPath 沙盒文件夹路径
*/
export const TK_startDownload: (uid: string, channel: number, protocol: TKTransferProtocol, dirPath: string) => void;
// 传输协议
export enum TKTransferProtocol {
AVAPI = 0,
RDT = 1,
}
示例: let dirPath = "/data/storage/el2/base/haps/IOTCamera/files"; cameraNapi.TK_startDownload(this.uid, this.downloadChannel, TKTransferProtocol.RDT, dirPath)
TK_stopDownload
/**
停止文件下载
@param uid 设备UID
@param channel 下载通道
*/
export const TK_stopDownload: (uid: string, channel: number) => void;
示例: cameraNapi.TK_stopDownload(this.uid, this.downloadChannel)
TK_startUpload
/**
开始文件上传
@param uid 设备UID
@param channel 上传通道
@param protocol 传输协议
@param filepath 文件路径
*/
export const TK_startUpload: (uid: string, channel: number, protocol: TKTransferProtocol, filepath: string) => void;
示例: let filePath = "/data/storage/el2/base/haps/IOTCamera/files/test.mp4"; cameraNapi.TK_startUpload(this.uid, this.uploadChannel, TKTransferProtocol.RDT, filePath)
TK_stopUpload
/**
停止文件上传
@param uid 设备UID
@param channel 上传通道
*/
export const TK_stopUpload: (uid: string, channel: number) => void;
示例: cameraNapi.TK_stopUpload(this.uid, this.uploadChannel)
1.9 双向视频
TK_startVideoToDevice
/**
开始建立视频发送通道(需自行采集编码视频数据)
@param uid 设备uid
@param channel av通道
@param isResend 是否开取重传
*/
export const TK_startVideoToDevice: (uid: string, channel: number, isResend: boolean) => number;
示例: cameraNapi.TK_startVideoToDevice(this.uid, this.channel, true)
TK_startVideoToDeviceEx
/**
开始建立视频发送通道(配置相机参数并采集编码视频)
@param uid 设备uid
@param channel av通道
@param surfaceID 预览窗口surfaceID
@param position 前后摄像头
@param resolution 采集分辨率
@param bitrate 采集码率
@param fps 采集帧率
@param gop 关键帧间隔
*/
export const TK_startVideoToDeviceEx: (uid: string, channel: number, surfaceID: string, position: TKPreviewPosition, resolution: TKPreviewResolution, bitrate: TKPreviewBitrate, fps: TKPreviewFPS, gop: TKPreviewGOP) => number;
*/
export enum TKPreviewPosition {
BACK = 1, // 后相机
FRONT = 2 // 前相机
}
export enum TKPreviewResolution {
SD = 640*480, // 标清
HD = 1280*720, // 高清
FHD = 1920*1080 // 全高清
}
export enum TKPreviewBitrate {
Lowest = 0.5*1024*1024, // 512kbps
Low = 1*1024*1024, // 1Mbps
Medium = 2*1024*1024, // 2Mbps
High = 4*1024*1024, // 4Mbps
Highest = 8*1024*1024 // 8Mbps
}
export enum TKPreviewFPS {
Lowest = 10, // 10帧/秒
Low = 15, // 15帧/秒
Medium = 20, // 20帧/秒
High = 25, // 25帧/秒
Highest = 30 // 30帧/秒
}
export enum TKPreviewGOP {
Low = 3000, // 3秒/组
Medium = 2000, // 2秒/组
High = 1000 // 1秒/组
}
示例: cameraNapi.TK_startVideoToDeviceEx(this.uid, this.channel, "surfaceID", TKPreviewPosition.FRONT, TKPreviewResolution.SD, TKPreviewBitrate.Low, TKPreviewFPS.Low, TKPreviewGOP.Medium)
TK_stopVideoToDevice
/**
停止发送视频并关闭通道
@param uid 设备uid
@param channel av通道
*/
export const TK_stopVideoToDevice: (uid: string, channel: number) => number;
示例: cameraNapi.TK_stopVideoToDevice(this.uid, this.channel)
TK_sendVideoToDevice
/**
停止发送视频并关闭通道
@param uid 设备uid
@param channel av通道
@param buff 视频编码后的帧数据
@param buffer_size 帧数据长度
@param timestamp 帧数据时间戳
@param codec_id 帧数据编码格式 enum TKVideoCodecID
@param isKeyFrame 是否是关键帧
*/
export const TK_sendVideoToDevice: (uid: string, channel: number, buff: Uint8Array, buffer_size: number, timestamp: number, codec_id: number, isKeyFrame: boolean) => number;
示例: cameraNapi.TK_sendVideoToDevice(this.uid, this.channel, h264Data, h264DataSize, timestamp, TKVideoCodecID.H264, true)
TK_preview_switchCamera
/**
切换前后摄像头
@param uid 设备uid
@param position 前后摄像头位置
*/
export const TK_preview_switchCamera: (uid: string, position: TKPreviewPosition) => number;
示例: cameraNapi.TK_preview_switchCamera(this.uid, TKPreviewPosition.FRONT)
TK_preview_changePreviewFormat
/**
更改摄像头采集参数
@param uid 设备uid
@param uid 设备uid
@param position 前后摄像头
@param resolution 采集分辨率
@param bitrate 采集码率
@param fps 采集帧率
@param gop 关键帧间隔
*/
export const TK_preview_changePreviewFormat: (uid: string, position: TKPreviewPosition, resolution: TKPreviewResolution, bitrate: TKPreviewBitrate, fps: TKPreviewFPS, gop: TKPreviewGOP) => number;
示例: cameraNapi.TK_preview_changePreviewFormat(this.uid, TKPreviewPosition.FRONT, TKPreviewResolution.SD, TKPreviewBitrate.Low, TKPreviewFPS.Low, TKPreviewGOP.Medium)
TK_preview_setVideoOutput
/**
手机摄像头采集视频数据上抛
@param uid 设备uid
@param isOutput 是否上抛相机数据(在TK_startVideoToDevice中生效)
*/
export const TK_preview_setVideoOutput: (uid: string, isOutput: boolean) => void;
示例: cameraNapi.TK_preview_setVideoOutput(this.uid, false)
