AIUI文档中心
AIUI平台说明
什么是AIUI
AIUI平台能力介绍
AIUI交互流程说明
AIUI快速入门
AIUI应用管理说明
应用接入和配置
应用后处理
敏感词
AIUI开发接入
AIUI接入概述
声学接入
交互接入
SDK接入
SDK介绍
参数配置
消息事件
交互状态
结果解析
WebSocketAPI接入
精简协议接入
常用功能
交互控制
语音唤醒
语音合成
用户个性化
自定义参数
离线命令词
翻译模式
流式识别
语义VAD
发音人列表
关键词过滤
情景模式
错误码
星火交互认知大模型说明
大模型概述
开发接入
SDK接入
API接入
大模型API服务鉴权
特色能力
超拟人合成
声音复刻
大模型功能
大模型错误码
软硬件产品接入
RK3328 降噪板
RK3328降噪板白皮书
RK3328降噪板使用手册
RK3328降噪板规格书
RK3328降噪板协议手册
RK3328 AIUI评估板开发套件
RK3328评估板白皮书
RK3328评估板使用手册
RK3328评估板规格书
RK3328评估板开发手册
RK3588 AIUI多模态开发套件
RK3588一体机多模态产品规格书
RK3588多模态套件使用手册
视频传输协议
串口通信协议
音频传输协议
ZG803 离线语音识别套件
ZG803 产品白皮书
USB声卡套件
USB声卡产品白皮书
USB声卡使用指南
AC7911 AIUI语音开发套件
AC7911-产品白皮书
AC7911-快速体验指南
AC7911-开发指南
AC7911-协议手册
AC7911-硬件参数
AIUI评估板接入
集成方式
软件包说明
AIUIServiceKitSDK
串口SDK
评估板参数配置
调试升级
技能工作室
技能概述
名词解析
技能
意图和语料
实体
动态实体
模糊匹配
填槽对话
技能设计规范
语音技能设计规范
开放技能接入审核规范
开放技能图标图片规范
技能开发
创建技能和意图
意图配置
技能测试
技能发布
技能后处理
技能导入导出
云函数APIv2.1
云函数APIv2.0
问答库开发
语句问答
关键词问答
文档问答
设备人设开发
技能协议
语义协议:重要字段和通用字段
技能后处理协议:标准请求
技能后处理协议:请求校验
技能后处理协议:Request_v2.1协议
技能后处理协议:Response_v2.1协议
技能资源限制
硬件设计参考
常见问题
AIUI常见问题
评估板常见问题
动态实体常见问题
联系方式
服务条款
AIUI开放平台服务协议
AIUI开放平台隐私政策
小飞在家用户协议
小飞在家隐私政策
小飞在家开源软件使用许可
讯飞账号隐私政策
讯飞账号用户协议
讯飞带屏音箱用户协议
讯飞带屏音箱隐私政策
AIUI SDK隐私政策
AIUI SDK合规使用说明
本文档使用 MrDoc 发布
-
+
首页
视频传输协议
上位机可通过socket与RK3588多模态盒子建立视频传输通道,可参照开发包中的[Android示例代码](https://www.yuque.com/iflyaiui/zzoolv/xk9rpv "Android示例代码")实现摄像头视频预览。 ## 视频传输协议 ### 概述 上位机可以通过socket连接盒子来获取到实时图像帧数据,以及人脸检测结果信息。 **设备IP**:如果盒子为动态ip,可通过[发送串口](https://aiui-doc.xf-yun.com/project-1/doc-367/ "发送串口")指令来获取ip。 **指定端口**:9090 ### 消息格式 消息格式与串口协议类似,唯一不同点为消息数据长度位从2个字节扩充到4个字节。 <table border="1"> <colgroup> <col width="10%" /> <col width="10%" /> <col width="50%" /> </colgroup> <tbody valign="top"> <tr><td>字节</td> <td>值</td> <td>含义说明</td> </tr> <tr><td>0</td> <td>0xA5</td> <td>同步头</td> </tr> <tr><td>1</td> <td>0x01</td> <td>用户ID</td> </tr> <tr><td>2</td> <td>0xXX</td> <td>消息类型</td> </tr> <tr><td>3~6</td> <td>0xXXXXXXXX</td> <td>消息数据长度</td> </tr> <tr><td>7~8</td> <td>0xXXXX</td> <td>消息ID</td> </tr> <tr><td>9~n</td> <td>消息数据</td> <td>消息数据</td> </tr> <tr><td>n+1</td> <td>0xXX</td> <td>内部校验码</td> </tr> </tbody> </table> ### 通信规则 * 半双工通信,进行一问一答式通信; * 语音模组主要负责下发消息,上位机主要负责接收消息及回复确认消息; * 建立socket连接之后,盒子会首先下发图像帧格式消息,上位机获取到图像格式方可进行图像绘制; * 若语音模组未收到上位机的确认消息,会在超时500ms之后再发送最新的图像数据,无重发规则; ### 通信格式 通信格式定义了图像格式消息、人脸检测消息、图像帧消息、确认消息。下面将分类详述: <table border="1"> <colgroup> <col width="13%" /> <col width="9%" /> <col width="6%" /> <col width="8%" /> <col width="8%" /> <col width="8%" /> <col width="6%" /> <col width="0%" /> <col width="5%" /> <col width="1%" /> <col width="3%" /> <col width="3%" /> <col width="9%" /> <col width="6%" /> <col width="8%" /> <col width="6%" /> </colgroup> <tbody valign="top"> <tr><td>分类</td> <td>同步头</td> <td>用户ID</td> <td>消息类型</td> <td>消息长度</td> <td>消息ID</td> <td colspan="9">消息数据</td> <td>校检码</td> </tr> <tr><td>字节</td> <td>0</td> <td>1</td> <td>2</td> <td>3~6</td> <td>7~8</td> <td colspan="9">9~n</td> <td>n+1</td> </tr> <tr><td><strong>图像格式</strong></td> <td>0xA5</td> <td>0x01</td> <td>0x07</td> <td>见下文解释</td> <td>见下文解释</td> <td colspan="9">图像格式json</td> <td>0x00</td> </tr> <tr><td>字节</td> <td>0</td> <td>1</td> <td>2</td> <td>3~6</td> <td>7~8</td> <td colspan="9">9~n</td> <td>n+1</td> </tr> <tr><td><strong>图像帧数据</strong></td> <td>0xA5</td> <td>0x01</td> <td>0x08</td> <td>见下文解释</td> <td>见下文解释</td> <td colspan="9">图像二进制</td> <td>0x00</td> </tr> <tr><td>字节</td> <td>0</td> <td>1</td> <td>2</td> <td>3~6</td> <td>7~8</td> <td colspan="9">9~n</td> <td>n+1</td> </tr> <tr><td><strong>单人版本人脸检测信息</strong></td> <td>0xA5</td> <td>0x01</td> <td>0x09</td> <td>见下文解释</td> <td>见下文解释</td> <td colspan="9">人脸信息json</td> <td>0x00</td> </tr> <tr><td>字节</td> <td>0</td> <td>1</td> <td>2</td> <td>3~6</td> <td>7~8</td> <td colspan="2">9</td> <td colspan="1">10</td> <td colspan="3">11</td> <td colspan="3">12</td> <td>13</td> </tr> <tr><td><strong>多人版本人脸检测信息</strong></td> <td>0xA5</td> <td>0x01</td> <td>0x0b</td> <td>见下文解释</td> <td>见下文解释</td> <td colspan="9">人脸信息json</td> <td>0x00</td> </tr> <tr><td>字节</td> <td>0</td> <td>1</td> <td>2</td> <td>3~6</td> <td>7~8</td> <td colspan="2">9</td> <td colspan="1">10</td> <td colspan="3">11</td> <td colspan="3">12</td> <td>13</td> </tr> <tr><td><strong>确认消息</strong></td> <td>0xA5</td> <td>0x01</td> <td>0xff</td> <td>同上</td> <td>同上</td> <td colspan="2">0xA5</td> <td colspan="1">0x00</td> <td colspan="3">0x00</td> <td colspan="3">0x00</td> <td>0x00</td> </tr> </tbody> </table> #### 消息长度: 数据格式中3-6字节为消息数据长度,消息长度编码为小端模式,即第3字节存储低字节,第6字节存储高字节。如确认消息中消息数据有4字节,则消息长度为4,编码到3-6字节就是0x04 0x00 0x00 0x00 #### 消息ID: 数据格式中7-8字节为消息ID,与消息长度类似,也是小端模式编码。可以使用消息ID过滤因超时重发导致的重复消息。两字节长度的消息ID取值0-65535,所以在实际使用中需要循环使用,具体实现可以参考Android平台上的源码实现。 #### 校检码: 数据格式中每种数据类型的最后一个字节都是校检码,由于图像帧数据较大,校验位固定为0x00 #### 编码格式: 消息中字符串类型的数据编码格式为UTF-8。 图像帧数据为bgr格式的二进制数据 #### 确认消息 确认消息是一个特殊的消息类型,它是对其他类型消息的确认,它的消息ID与其要确认的消息的ID相同。 如一个图像帧消息的消息ID为0x9527,那对应的确认消息的消息ID也应该是0x9527。 ### 图像格式消息 图像格式的数据为json字符串,包含图像的宽、高、格式信息。 ``` { "format":0, // 0:bgr 1:jpeg "width":500, "height":500 } ``` **注意:图像格式仅在建立socket连接时下发一次** ### 图像二进制消息 根据图像格式消息获取图像对应的解析格式,默认格式为`JPEG`压缩格式 #### JPEG格式 JPEG格式为有损压缩格式,上位机需对图像进行JPEG解压缩,获取原始位图后再进行屏幕渲染。 #### bgr格式 bgr图像数据为原始图像数据,图像数据传输对网络带宽要求较高,一帧图像的大小为个`width*height*3`字节,帧率最高25fps,色彩通道顺序为RGB RGB ... ### 单人版本人脸检测消息 人脸检测结果为json字符串,结果中数据仅作为参考使用。 无人脸时: ``` { "hasFace": false, //有无人脸 "wakeup": false, //是否人脸唤醒 "frameIndex": 0 //图像帧id } ``` 有人脸时: ``` { "hasFace": true, //有无人脸 "wakeup": true, //是否人脸唤醒 "frameIndex": 0, //图像帧id "x": 10, //人脸左上角x坐标 "y": 10, //人脸左上角y坐标 "w": 100, //人脸宽度 "h": 100, // 人脸高度 "faceIndex":101, //人脸跟随id "headPitch": -0.2, //头姿上下偏转角 "headYaw":-0.2, //头姿左右偏转角 "mouthOcc":false //true:嘴部遮挡 false:嘴部无遮挡 } ``` ### 多人版本人脸检测消息 人脸检测结果为json字符串,结果中数据仅作为参考使用。 无人脸时: ``` { "list":[ { "hasFace": false, //有无人脸 "wakeup": false, //是否人脸唤醒 "frameIndex": 0 //图像帧id } ] } ``` 有人脸时: ``` { "list":[ { "hasFace": true, //有无人脸 "wakeup": true, //是否人脸唤醒 "frameIndex": 0, //图像帧id "x": 10, //人脸左上角x坐标 "y": 10, //人脸左上角y坐标 "w": 100, //人脸宽度 "h": 100, // 人脸高度 "faceIndex":101, //人脸跟随id "headPitch": -0.2, //头姿上下偏转角 "headYaw":-0.2, //头姿左右偏转角 "mouthOcc":false //true:嘴部遮挡 false:嘴部无遮挡 } ] } ``` ## 常见问题 **Q:图像卡顿,1秒仅收到2帧图像数据** **A:** 语音模组未收到确认消息,延迟500ms下后才发出第二帧数据 **Q:图像传输对带宽的要求** **A:** 如果传输格式为JPEG压缩格式,使用百兆带宽即可。
admin
2024年9月6日 10:10
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码