简体中文

HarmonyOS API

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
}


objective-c
示例:
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;

objective-c
示例:
	cameraNapi.TK_UninitIOTC()

TK_getIOTCameraVersion

/**
获取IOTCamera版本号

@return IOTCamera版本号
*/
export const TK_getIOTCameraVersion: () => string;

objective-c
示例:
	let version = cameraNapi.TK_getIOTCameraVersion()

TK_getIOTCAPIsVersion

/**
获取IOTCAPIs版本号

@return IOTCAPIs版本号
*/
export const TK_getIOTCAPIsVersion: () => string;

objective-c
示例:
	let version = cameraNapi.TK_getIOTCAPIsVersion()

TK_getAVAPIsVersion

/**
获取AVAPIs版本号

@return AVAPIs版本号
*/
export const TK_getAVAPIsVersion: () => string;

objective-c
示例:
	let version = cameraNapi.TK_getAVAPIsVersion()

TK_setMasterRegion

/**
设置分区分流方案的地区

@param region 设置分流到TKRegion中的哪个地区
@return error code  >= 0 success, other failer
*/
export const TK_setMasterRegion: (region: TKRegion) => number;

objective-c
示例:
	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
}


objective-c
示例:
    沙盒文件夹路径可以自行定义,具体参考示例,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;

objective-c
示例:
	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;       // 局域网端口
}

objective-c
示例:
	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;

objective-c
示例:
	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;

objective-c
示例:
	cameraNapi.TK_connectEx( this.uid,this.authKey,TKRegion.CN, false)

TK_disconnect

/**
断开设备连线

@param uid 设备UID
*/
export const TK_disconnect: (uid: string) => number;

objective-c
示例:
	cameraNapi.TK_disconnect( this.uid)

TK_getSessionState

/**
获取IOTC连线状态

@param uid 设备UID
@return IOTC连线状态  enum CONNECTION_STATE
*/
export const TK_getSessionState: (uid: string) => number;

objective-c
示例:
	let sessionState = cameraNapi.TK_getSessionState(this.uid)

TK_isSessionConnected

/**
获取IOTC是否已连线

@param uid 设备uid
@return IOTC是否已连线  0: 未连上 1:已连上
*/
export const TK_isSessionConnected: (uid: string) => boolean;

objective-c
示例:
	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;

objective-c
示例:
	let sessionID = cameraNapi.TK_getSessionID(this.uid)

TK_getSessionMode

/**
获取IOTC连线模式

@param uid 设备UID
@return 连线模式 enum CONNECTION_MODE
*/
export const TK_getSessionMode: (uid: string) => number;

objective-c
示例:
	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;      // 错误码
}

objective-c
示例:
	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;

objective-c
示例:
	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;

objective-c
示例:
	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;        // 设备名称
}

objective-c
示例:
	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
}

objective-c
示例:
	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;      // 错误码
}

objective-c
示例:
	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;      // 错误码
}

objective-c
示例:
	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;

objective-c
示例:
	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;

objective-c
示例:
	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;

objective-c
示例:
	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;

objective-c
示例:
	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;

objective-c
示例:
	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;

objective-c
示例:
	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;

objective-c
示例:
	let freeChannel = cameraNapi.TK_getFreeChannel(this.uid)

TK_getAVChannelCount

/**
获取AV通道总数

@param uid 设备UID
@return av通道总数
*/
export const TK_getAVChannelCount: (uid: string) => number;

objective-c
示例:
	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;

objective-c
示例:
	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;

objective-c
示例:
	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;              // 错误码
}


objective-c
示例:
	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;

objective-c
示例:
	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(耗时)
}


objective-c
示例:
	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;

objective-c
示例:
	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;

objective-c
示例:
	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;

objective-c
示例:
	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;

objective-c
示例:
	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;

objective-c
示例:
	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    // 快进
}


objective-c
示例:
	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;

objective-c
示例:
	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;

objective-c
	示例:
	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;

objective-c
示例:
	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;

objective-c
示例:
	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;

objective-c
示例:
	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;

objective-c
示例:
	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;

objective-c
示例:
	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;

objective-c
示例:
	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;

objective-c
示例:
	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;

objective-c
示例:
	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;

objective-c
示例:
	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;

objective-c
示例:
	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;    // 错误码
}


objective-c
示例:
	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;

objective-c
示例:
	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;

objective-c
示例:
	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;

objective-c
示例:
	 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;   // 错误码
}


objective-c
示例:
	 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;

objective-c
示例:
	 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;

objective-c
示例:
	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;      // 错误码
}

objective-c
示例:
	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,
}


objective-c
示例:
	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;

objective-c
示例:
	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;

objective-c
示例:
	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;

objective-c
示例:
	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;

objective-c
 示例:
	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秒/组
}

objective-c
 示例:
	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;

objective-c
 示例:
	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;

objective-c
 示例:
	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;

objective-c
 示例:
	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;

objective-c
 示例:
	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;

objective-c
 示例:
	cameraNapi.TK_preview_setVideoOutput(this.uid, false)

即刻开启您的物联网之旅

联系解决方案专家
Kalay App
资讯安全白皮书
全球专利布局
解决方案
新闻动态
公司动态
行业资讯
媒体报道
永续发展
经营者的话
社会参与
环境永续
公司治理

+86 755 27702549

7×24小时服务热线

法律声明 隐私权条款

关注“TUTK”

TUTK服务尽在掌握

© 2022 物联智慧科技(深圳)有限公司版权所有粤ICP备14023641号
在线咨询
扫一扫

TUTK服务尽在掌握

全国免费服务热线
+86 755 27702549

返回顶部