简体中文

基于AVAPIs的对讲实现

基于AVAPIs的对讲实现 | TUTK P2P SDK 开发指南
基于AVAPIs的对讲架构及主通道复用示意图

图 1:基于AVAPIs的对讲架构及主通道复用示意图

一、概述

TUTK P2P SDK v3.3+ 版本默认支持数据全双工通信,无需额外创建独立通道。P2P连接建立后,会自动创建主通道(基于 IOTC 0 通道,通过 avClientStartExavServStartEx 接口参数绑定),客户端可通过该主通道同时实现直播视频播放、音频监听和对讲音频发送,无需额外开辟通道资源。

二、音频格式同步(公版APP标准流程)

对讲功能启动前,APP端需先向设备查询支持的音频格式(编码方式、采样率、位宽等),确保两端音频参数一致,避免播放异常。该过程通过 IO 控制指令(具体可参考:公版IOCommand定义)交互完成。
(一)APP端:查询音频格式(发送请求)
APP 调用 avSendIOCtrl 发送 IOTYPE_USER_IPCAM_GETAUDIOOUTFORMAT_REQ 指令,传入摄像头通道索引,查询设备对讲支持的音频格式。
// 查询音频格式请求结构体 typedef struct {    unsigned int channel; // camera index(摄像头索引,多摄像头场景需指定)    char reserved[4];     // 预留字段,无需赋值 } SMsgAVIoctrlGetAudioOutFormatReq;
(二)设备端:回复音频格式(响应请求)
设备端通过 avRecvIOCtrl 接收查询请求后,回复 IOTYPE_USER_IPCAM_GETAUDIOOUTFORMAT_RESP 指令,返回支持的音频参数。
// 音频格式响应结构体 typedef struct {    unsigned int channel;      // camera index(与请求的摄像头索引一致)    int format;                // 音频编码格式(参考 ENUM_CODECID 枚举)    char sample_rate;          // 采样率(参考 Sample_Rate 枚举)    char bitdata;              // 位宽(参考 DATABITS 枚举)    char channels;             // 支持的声道数(1=单声道,2=立体声)    char avservchannel;        // 对讲使用的通道类型:0=子通道;1=主通道;其他=子通道(默认0) } SMsgAVIoctrlGetAudioOutFormatResp;
  • 字段说明:
    • format:音频编码格式,取值来自 CodecId 枚举(如 G711A、AAC 等);
    • sample_rate:采样率,取值来自 Sample_Rate 枚举(如 8K、16K 等);
    • bitdata:数据位宽,取值来自 DATABITS 枚举(仅支持8位/16位);
    • avservchannel:推荐使用主通道(填1),复用现有连接资源。

三、对讲实现方式(主通道全双工传输)

主通道本身支持全双工通信,可同时传输“设备→APP的直播音频”和“APP→设备的对讲音频”。APP通过特定IO指令通知设备开启/关闭对讲,之后通过音频传输API发送/接收对讲数据。
(一)核心IO控制指令(SDK内置)
对讲启停通过以下2条SDK内置IO指令控制(参考SDK Readme.htm第五部分):
  • IOTYPE_USER_IPCAM_SPEAKERSTART:开启对讲(APP→设备)
  • IOTYPE_USER_IPCAM_SPEAKERSTOP:关闭对讲(APP→设备)
(二)开启对讲流程
  • 步骤1:APP端发送开启指令
    • 音频格式同步完成后,APP 调用 avSendIOCtrl 发送 IOTYPE_USER_IPCAM_SPEAKERSTART 指令,通知设备准备接收对讲音频;
    • 指令无需额外参数(参数长度填0),仅通过指令类型标识操作。
  • 步骤2:APP端启动音频采集与发送
    • APP 启动本地麦克风采集音频,按设备支持的格式(编码、采样率等)进行编码;
    • 调用 avSendAudioData 接口,通过主通道将编码后的对讲音频数据发送给设备。
  • 步骤3:设备端接收开启指令并准备接收
    • 设备通过 avRecvIOCtrl 接收 IOTYPE_USER_IPCAM_SPEAKERSTART 指令,确认开启对讲;
    • 设备初始化音频接收缓冲区,调用 avRecvAudioData 接口监听主通道的对讲音频数据。
  • 步骤4:设备端播放对讲音频
    • 设备接收音频数据后,按约定格式解码,通过设备扬声器播放,完成“APP→设备”的对讲音频传输。
(三)关闭对讲流程
对讲结束时,APP发送关闭指令,设备停止接收音频,双方释放相关资源:
  • 步骤1:APP端发送关闭指令:APP 调用 avSendIOCtrl 发送 IOTYPE_USER_IPCAM_SPEAKERSTOP 指令;
  • 步骤2:APP端停止采集与发送:关闭麦克风,停止音频编码和 avSendAudioData 调用;
  • 步骤3:设备端停止接收与播放:设备接收关闭指令后,停止 avRecvAudioData 监听,关闭扬声器,释放音频缓冲区。

即刻开启您的物联网之旅

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

+86 755 27702549

7×24小时服务热线

法律声明 隐私权条款

关注“TUTK”

TUTK服务尽在掌握

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

TUTK服务尽在掌握

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

返回顶部