更新时间:2025-05-07 09:34:39下载pdf
本文为您介绍配网绑定的方式以及子设备管理的方法。
基站产品配网绑定方式和方法与 IPC 产品相同,更多介绍,您可以参考 配网绑定。
基站产品配网绑定后,才可进行子设备的添加、查询、删除功能。
功能 | 说明 |
---|---|
头文件 | tuya_xvr_dev.h |
子设备添加 | 基站添加绑定激活子设备,即向云端发送添加命令,将基站与子设备关联 |
子设备删除 | 用户在 App 上删除子设备时,通知基站端解除绑定关系,并同步至云端 |
子设备查询 | 可查询子设备相关信息功能,比如子设备通道号、设备 ID 等 |
子设备 ID | 可分为子设备节点 ID 和设备的虚拟 ID
|
以上功能说明在以下接口说明中将不再赘述。
下文将列举主要的数据结构和接口说明。
初始化子设备管理模块,该操作会初始化模块的基础资源。
OPERATE_RET tuya_xvr_dev_init();
绑定激活子设备,该操作将绑定子设备到基站。
OPERATE_RET tuya_xvr_dev_bind(TUYA_XVR_BIND_CTX_T * bind_ctx_ptr);
解绑子设备,该操作会将子设备解绑同步到云端。
OPERATE_RET tuya_xvr_dev_remove_sub_node(CHAR_T* sub_node_id);
根据子设备的节点 ID,获取子设备的 dev_id
。
OPERATE_RET tuya_xvr_dev_get_dev_id_by_sub_node_id(CHAR_T*sub_node_id,CHAR_T*dev_id, INT_T dev_id_buf_len);
对于 IPC 或可以输出音视频数据的子设备,环形缓冲区(Ring buffer,ringbuf)序号与拉流预览相关。该接口通过子设备的节点 ID 获取 IPC 子设备 ringbuf 序号,在向 ringbuf 写入音视频数据时会使用到此接口。
OPERATE_RET tuya_xvr_dev_get_ringbuf_idx_by_sub_node_id(CHAR_T* sub_node_id);
通过上述 ringbuf 的序号,获取子设备基础信息,可以参考结构体 TUYA_XVR_DEV_INFO_T
。
OPERATE_RET tuya_xvr_dev_get_sub_dev_info_by_ringbuf_idx(INT_T ringbuf_idx,TUYA_XVR_DEV_INFO_T* sub_dev_info)
通过子设备节点 ID,获取子设备完整信息,参考结构体 DEV_DESC_IF_S
。
DEV_DESC_IF_S* tuya_xvr_dev_get_sub_dev_desc_info(CHAR_T *sub_node_id)
接口注册回调函数。子设备绑定返回后,在回调中会推送子设备绑定结果。
OPERATE_RET tuya_xvr_dev_attach_sub_dev_bind_result_cb(sub_dev_bind_result_cb cb)
接口注册回调函数,子设备被解绑时会推送通知。
OPERATE_RET tuya_xvr_dev_attach_sub_dev_remove_cb(sub_dev_remove_cb cb)
以上接口方法均在 Demo 中有使用示例。下文着重介绍模块初始化等步骤的调用顺序。
子设备管理模块初始化,需要在完成 SDK 初始化后进行。推荐的初始化顺序如下所示:
添加子设备,需要在模块初始化后使用,同时需要先设置回调。推荐的初始化顺序如下所示:
基站设备自身并不会产生音视频数据,需要添加 IPC (或可输出音视频流功能的) 子设备才可对外提供预览功能。
基站开发包提供了实时预览子设备音视频数据的功能。此功能基于自研的 P2P(Peer-to-peer)技术,建立设备和 App 之间点对点、安全加密的数据传输链路,实现了子设备音视频数据的实时预览和对讲功能。
原理与 IPC 相同,可参考以下文档:
简而言之,添加 IPC 子设备成功后,需要将子设备的音视频流写入到基站的 ringbuf 中,之后内部模块自动将 ringbuf 的音视频数据发送至 App。
与独立的 IPC 设备相比,基站设备会有很多的 ringbuf 子设备通道,一个子设备要对应一个唯一的编号索引,因此建议开发者使用 子设备管理 模块中的接口,获取子设备对应 ringbuf 索引,之后再初始化对应的 rinfbuf 子设备通道,然后再写入音视频流。
tuya_ipc_media_adapter.h
tuya_ipc_media_stream.h
下文介绍媒体适配器和流媒体业务的相关接口和参数。音视频环形缓存 ringbuf 相关接口说明,可参考 IPC 中的相关说明 音视频环形缓存。
初始化媒体适配器,设置部分回调接口。
OPERATE_RET tuya_ipc_media_adapter_init(TUYA_IPC_MEDIA_ADAPTER_VAR_T *p_var);
typedef struct {
MEDIA_GET_SNAPSHOT_CB get_snapshot_cb; // 抓图回调
MEDIA_RECV_VIDEO_CB on_recv_video_cb; // 视频接收回调
MEDIA_RECV_AUDIO_CB on_recv_audio_cb; // 音频接收回调
MEDIA_RECV_FILE_CB on_recv_file_cb; // 文件接收回调
INT_T available_media_memory; // 最大媒体内存资源,P2P 单路预览占用 1M 内存
} TUYA_IPC_MEDIA_ADAPTER_VAR_T;
初始化流媒体业务,初始化实时预览、推流、控制信令回调等流媒体业务。
OPERATE_RET tuya_ipc_media_stream_init(MEDIA_STREAM_VAR_T *stream_var);
typedef struct {
MEDIA_STREAM_EVENT_CB on_event_cb; // 媒体事件回调
INT_T max_client_num; // 最大的子设备预览数
TRANS_DEFAULT_QUALITY_E def_live_mode; // 默认预览清晰度
BOOL_T low_power; // 低功耗标位
BOOL_T lan_only_mode; // 局域网模式
UINT_T recv_buffer_size; // 媒体接收内存大小
} MEDIA_STREAM_VAR_T;
设置子设备的音视频参数。
device
对应子设备索引号。子设备添加成功后,通过 tuya_xvr_dev_get_sub_dev_info_by_ringbuf_idx
获取。
OPERATE_RET tuya_ipc_media_adapter_set_media_info(INT_T device, INT_T channel, DEVICE_MEDIA_INFO media_info);
typedef struct {
BOOL_T stream_enable[E_IPC_STREAM_MAX]; // 使能开关
UINT_T video_fps[E_IPC_STREAM_VIDEO_MAX]; // 视频帧率
UINT_T video_gop[E_IPC_STREAM_VIDEO_MAX]; // 视频 GoP
TUYA_VIDEO_BITRATE_E video_bitrate[E_IPC_STREAM_VIDEO_MAX]; // 视频最大码率
UINT_T video_width[E_IPC_STREAM_VIDEO_MAX]; // 视频宽度
UINT_T video_height[E_IPC_STREAM_VIDEO_MAX]; // 视频高度
UINT_T video_freq[E_IPC_STREAM_VIDEO_MAX]; // 视频频率
TUYA_CODEC_ID_E video_codec[E_IPC_STREAM_VIDEO_MAX]; // 视频编码类型
TUYA_CODEC_ID_E audio_codec[E_IPC_STREAM_MAX]; // 音频编码类型
UINT_T audio_fps[E_IPC_STREAM_MAX]; // 音频帧率
TUYA_AUDIO_SAMPLE_E audio_sample[E_IPC_STREAM_MAX]; // 音频采样率
TUYA_AUDIO_DATABITS_E audio_databits[E_IPC_STREAM_MAX]; // 音频位宽
TUYA_AUDIO_CHANNEL_E audio_channel[E_IPC_STREAM_MAX]; // 音频声道
} IPC_MEDIA_INFO_T;
typedef struct {
BOOL_T enable; // 使能开关
TUYA_CODEC_ID_E audio_codec; // 音频编码类型
TUYA_AUDIO_SAMPLE_E audio_sample; // 音频采样率
TUYA_AUDIO_DATABITS_E audio_databits; // 音频位宽
TUYA_AUDIO_CHANNEL_E audio_channel; // 音频声道
} MEDIA_AUDIO_DECODE_INFO_T;
typedef struct {
IPC_MEDIA_INFO_T av_encode_info; // 音视频编码参数
MEDIA_AUDIO_DECODE_INFO_T audio_decode_info; // 音频解码参数
INT_T max_pic_len; // 图片最大长度
INT_T decoder_cnt; // 其他解码器的数量
TUYA_DECODER_T *decoders; // 其他解码器参数
} DEVICE_MEDIA_INFO_T;
以上接口的使用方法在 Demo 中均有示例展示。下文着重介绍媒体适配层等初始化步骤的调用顺序。
通常有两种子设备媒体参数设置的场景:
基站初始化之前,对于已有的子设备,可以在 tuya_xvr_dev_init
接口之后调用 tuya_ipc_media_adapter_set_media_info
设置子设备媒体信息。
基站在运行中添加子设备,此时需要在 tuya_xvr_dev_attach_sub_dev_bind_result_cb
注册的回调中,使用 tuya_ipc_media_adapter_set_media_info
添加子设备媒体信息。
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈