可视对讲系统概述
一、什么是可视对讲?
可视对讲,就是让 门口设备、室内设备、手机 App 之间实现实时 视频 + 语音 通话。
一个最常见的业务场景是:
- 门口有人通过安装在门口的设备按门铃/触发对讲请求
- 手机或室内设备响铃
- 用户看到来访画面并进行语音对话
- 用户确认后通过手机或室内设备来开门
从系统角度看,这一整套过程,本质就是一次实时音视频通话的“建立、通话、结束”。
二、系统里有哪些角色?
一个完整的可视对讲系统,通常包含 3 类角色。
-
终端设备(你能看到、能操作的)
- 门口机(带摄像头)
- 室内机(屏幕)
- 手机 App
它们负责:
- 采集视频/音频(摄像头、麦克风)
- 播放对方声音和画面
- 发起/接听通话
-
信令服务器(通话协调员)
它不传输音视频数据;它负责“帮两边建立连接”,例如:
- A 想呼叫 B,服务器协助让双方进入同一个通话会话
- 服务器通知 B:有人来电
- 双方完成会话协商后,媒体通道开始传输
-
网络穿透服务(解决“连不上”的问题)
现实网络环境很复杂(家庭 WiFi、运营商网络、防火墙/NAT 等),导 致设备可能不能直接互访。
这时需要:
- STUN:帮助设备“知道自己在公网看起来是什么地址”,从而尝试建立直连
- TURN:当双方无法直接通信时,由服务器“代为转发音视频数据”
类比理解:
- 直连成功:双方直接“互通”
- TURN:由中间节点“转发音视频数据”

三、一次对讲是怎么发生的?
用最简单的流程描述一次典型通话:
- 用户按门铃
- 门口设备通知信令服务器
- 信令服务器通知手机 App/室内设备
- 用户接听
- 双方建立连接
- 开始实时视频 + 语音通话
- 挂断,结束会话
核心一句话:
- 信令负责“叫人”
- RTC(实时音视频通道)负责“通话”
四、为什么使用 WebRTC?
WebRTC 是当前主流的实时音视频技术路线,面向对讲场景的常见特点包括:
- 低延迟(适合实时对话)
- 支持点对点,并可按业务需要扩展媒体转发拓扑
- 自带网络适配能力,能够协助完成 NAT 穿透与连通性建立
对于二次开发来说,重点是把业务接入到“通话建立”和“音视频传输”流程中,而不需要从零实现底层 RTC 能力。
五、系统实现的三大部分
当你开始开发时,通常需要关注三块。
-
客户端(设备 / App)
- 负责摄像头/麦克风输入
- 进行视频编解码(如 H.264 / H.265)
- 播放对方画面与声音
- 运行 RTC 引擎或对接 RTC SDK
-
信令服务器
- 鉴权/登录(谁有资格发起会话)
- 呼叫关系(谁呼谁、会话绑定到哪个房间/呼叫标识)
- 通话相关消息的转发(例如发起通话、接听、挂断等)
-
网络穿透(STUN / TURN)
- 提高连接成功率
- 在复杂网络下兜底,保证通话可达
六、两种设备路线说明
我们提供两种类型的设备:
- Android 11 设备 比如FCV4906等
- Linux + DejaOS 设备 比如FCV4905
两种设备的核心差异可以简单理解为:
- Android设备:开放、通用、等同手机开发
- DejaOS身边:轻量、定制化、与设备能力深度绑定
本专题将重点讨论基于 Linux + DejaOS 的设备,以及如何利用 JavaScript 在设备上实现可视对讲相关的业务流程与 UI。
Android 设备与 DejaOS 设备差异对比
| 对比项 | Android 11 设备 | Linux + DejaOS 设备 |
|---|---|---|
| 操作系统 | 原生 Android 11 | Linux + DejaOS Runtime |
| 视频双向/单向 | 双向 | 单向 |
| 音频双向/单向 | 双向 | 双向 |
| WebRTC 库 | 可用 Google WebRTC / 第三方 RTC SDK(如 Agora 等) | dxIntercom,dxDisplay,dxAudio,dxFacial 等dejaOS module |
| 信令服务 | 无限制,可自建或使用第三方 | DejaOS 方案需使用我们提供的信令服务 |
| TURN/STUN 服务 | 无限制,可自建或使用第三方 | 无限制,也可以使用我们提供的服务(和信令服务整合在一起) |
| 设备与信令接口 | 由开发者自定义,常见为 WebSocket / MQTT / TCP 等 | 可视对讲相应 module API |
| 室内机与信令接口 | 由开发者自定义,常见为 WebSocket / MQTT / TCP 等 | 只能是 WebSocket 的私有协议 |
1. Android 设备简介
我们的设备基于原生 Android 11 系统,底层硬件驱动完全遵循 标准 Android HAL。您可以将其直接视为一台具备工业接口(串口 / GPIO 等)的高性能安卓终端。
Android 设备与普通 Android 手机开发没有任何区别:在设备上开发的应用与在 Android 手机上开发的应用一致。
- 在手机上开发并打包的 App,可以直接安装到设备上运行
- 在设备上开发并打包的 App,也可以安装到 Android 手机上运行(前提是应用本身不依赖特定工业外设)
Android 设备在实时音视频(RTC)开发实践(已验证) 针对对讲类实时音视频,我们已在硬件上成功验证了以下两种主流方案:
- 原生 WebRTC 库集成:直接调用标准 Android WebRTC 库(Google 官方版本),在设备上实现低延迟的双向音视频通话。
- Agora(声网)SDK 集成:成功接入 Agora.io。测试结果显示,设备在硬件编解码(H.264 / H.265)和回声消除(AEC)方面表现稳定,开发体验与开发普通手机 App 无异。 总之:Android 设备的可视对讲完全是和普通 Android 手机实现可视对讲是没有差异的,唯一的缺点是Android 设备相比 dejaOS 设备价格贵。
2. Linux + DejaOS 设备
dejaOS 设备实现可视对讲相对来说生态相对封闭,需要基于提供的模块进行开发,优势是设备价格便宜,开发简单,通过 JavaScript 调用相应的组件可以实现完整的可视对讲流程。
基于 Linux(DejaOS)的可视对讲能力(包括接口说明、示例工程、信令对接及 UI 集成方式)将在后续文档中详细展开。