双向视频对讲

更新时间:2025-12-26 07:24:53下载pdf

双向视频对讲,是指带显示屏幕的 IPC 设备,支持与 App 或其他 IPC 设备之间实现双向视频通话的功能。

功能特性

通常 IPC 负责采集图像并且发送到另一端显示,“双向” 指 IPC 设备能从对端接收视频流在自己的显示屏上播放。

实现框架

双向视频对讲

产品功能使用展示

设备外观图

正视图

双向视频对讲

俯视图

双向视频对讲

App 绑定配置界面示例

以下示例产品为在 App 中绑定设备按键主动呼叫的对象。

双向视频对讲

设备呼叫进行双向对讲

设备按键呼叫

双向视频对讲

App 收到呼叫请求

双向视频对讲

接通对讲

双向视频对讲

关联组件

  • svc_tmm_link
  • svc_ipc_tmm_control

API

初始化双向视频对讲控制模块

主要包括初始化资源和创建线程。

/*****************************************************************************
 * @brief      tuya tmm control 初始化.
 *
 * @param      cb:事件回调函数,包含收到呼叫请求、对方的通知、对方的回复
 * @param      priv_data:用户数据,通过 callback 返回
 * @param      call_timeout_s:设定呼叫超时时间,单位秒, <= 0 使用默认 30s
 *
 * @return
 *     - 0:success
 *     - 非 0:error
*****************************************************************************/
OPERATE_RET tuya_tmm_control_init(TUYA_TMM_CONTROL_EVT_CB cb, VOID* priv_data, INT_T call_timeout_s);

反初始化双向视频对讲控制模块

主要包括销毁资源和退出线程。

/*****************************************************************************
 * @brief      tuya tmm control 注销
 *
 * @return
 *     - 0: success
 *     - 非0:error
*****************************************************************************/
OPERATE_RET tuya_tmm_control_deinit(VOID);

主动呼叫目标设备

/*****************************************************************************
 * @brief      tuya tmm control 主叫
 *
 * @param      target_device:目标设备
 * @param      category:本设备所属品类,可以为 ""(即空字符串)
 * @param      stream_type:通话流类型
 * @return
 *     - 0:success
 *     - 非 0:error
*****************************************************************************/
OPERATE_RET tuya_tmm_control_call(CHAR_T *target_device, CHAR_T *category, TUYA_TMM_CONTROL_STREAM_TYPE_E stream_type);

获取可以呼叫的设备列表

/** @brief get the paired device list
 * @warning this will get the local list, no http request to cloud
 * @return the list head of paired device list, use tuya_list_for_each to visit, the type is TMM_ASSOC_DEV_T
 */
LIST_HEAD* tuya_tmm_link_get_paird_dev_list();

接受呼叫请求

收到并接受对端发起的呼叫请求。

/*****************************************************************************
 * @brief      tuya tmm control 接通
 *
 * @return
 *     - 0:success
 *     - 非 0:error
*****************************************************************************/
OPERATE_RET tuya_tmm_control_answer(VOID);

拒绝呼叫请求

收到并拒绝对端发起的呼叫请求。

/*****************************************************************************
 * @brief      tuya tmm control 来电拒接
 *
 * @return
 *     - 0:success
 *     - 非 0:error
*****************************************************************************/
OPERATE_RET tuya_tmm_control_reject(VOID);

主动取消呼叫

主动发起呼叫对端设备后,在收到对端的应答前主动取消呼叫。

/*****************************************************************************
 * @brief      tuya tmm control 取消呼叫
 *
 * @return
 *     - 0, success
 *     - 非0 error
*****************************************************************************/
OPERATE_RET tuya_tmm_control_cancel(VOID);

主动挂断当前的通话

/*****************************************************************************
 * @brief      tuya tmm control 挂断
 *
 * @return
 *     - 0:success
 *     - 非 0:error
*****************************************************************************/
OPERATE_RET tuya_tmm_control_hangup(VOID);

本设备停止呼叫和被呼叫

通知服务端,本设备停止呼叫和被呼叫。

/*****************************************************************************
 * @brief      tuya tmm control 异常停止
 *
 * @return
 *     - 0:success
 *     - 非 0:error
*****************************************************************************/
OPERATE_RET tuya_tmm_control_stop(VOID);

拒绝接听

收到对端呼叫请求后,通知对端本设备忙碌中。

/*****************************************************************************
 * @brief      tuya tmm control 设备忙
 *
 * @return
 *     - 0:success
 *     - 非 0:error
*****************************************************************************/
OPERATE_RET tuya_tmm_control_busy(VOID);

产品开发

产品业务开发流程指引

收到对端呼叫请求

模块初始化
tuya_tmm_control_init
在app呼叫设置界面绑定呼叫的账号
或者本账号下的其他ipc设备
收到呼叫请求
TUYA_TMM_CONTROL_EVT_INCOMING
选择应答接听
tuya_tmm_control_answer
启动/停止+音频/视频+发送/接收
tuya_tmm_link_media_ctl
主动挂断通话
tuya_tmm_control_hangup
因设备异常终止对话
tuya_tmm_control_stop
异常通常指的是非用户主动选择挂断
1.设备判断相关业务有异常
2.其他有必要的原因
收到对端主动断开对话
TUYA_TMM_CONTROL_EVT_HANGUP
TUYA_TMM_CONTROL_EVT_STOP
收到对方取消呼叫
TUYA_TMM_CONTROL_EVT_CANCEL
选择不接听
不接听原因是拒接
tuya_tmm_control_reject
拒绝的实现方式:
1.设备有拒接按键
2.设备屏幕有拒接的触控按钮
不接听原因是忙碌中
tuya_tmm_control_busy
忙的原因可以是:
1.已经在跟别的对端通话中了
2.设备正在被预览,考虑上行传输压力选择拒绝
其他方面的考虑
不接听原因是超时未应答
tuya_tmm_control_unanswer
设备收到呼叫请求后,用户不在设备旁边,超时时间内未做任何操作
若设备没有选择拒绝的按键就无需关注本接口

主动呼叫对端

模块初始化
tuya_tmm_control_init
在 App 呼叫设置界面绑定呼叫的账号
或者本账号下的其他 IPC 设备
按键主动呼叫 App 呼叫设置界面绑定的账号或者设备
tuya_tmm_control_call
对方选择应答接听
TUYA_TMM_CONTROL_EVT_ACCEPTED
主动挂断通话
tuya_tmm_control_hangup
因设备异常主动终止对话
tuya_tmm_control_stop
收到停止通话
TUYA_TMM_CONTROL_EVT_STOP
收到对方挂断
TUYA_TMM_CONTROL_EVT_HANGUP
主动取消呼叫
tuya_tmm_control_cancel
主动取消呼叫实现方法:
1.通过屏幕按键
2.物理按键连续两次
对方选择不接听
tuya_tmm_control_cancel
不接听原因是拒接
TUYA_TMM_CONTROL_EVT_REJECT
不接听原因是忙碌中
TUYA_TMM_CONTROL_EVT_BUSY
不接听原因超时未应答
TUYA_TMM_CONTROL_EVT_UNANSWERED