远程医疗视频会议功能是指基于实时音视频(RTC)能力,让医生与患者、医生与医生在 Web、App、小程序端完成视频问诊、远程会诊、屏幕共享病例与影像、实时消息沟通的一套完整技术实现。 本文以即构(ZEGO)音视频方案为技术栈,面向开发者与技术负责人,从架构设计、Token 鉴权到推拉流、屏幕共享、录制留存给出可直接落地的集成代码与踩坑清单。
一、什么是远程医疗视频会议?
远程医疗视频会议是以实时音视频(RTC)为核心技术,让医生与患者、或医生与医生通过视频实时完成诊疗、会诊与随访的医疗服务形态。 它通常用于远程会诊、在线复诊、慢病随访和远程影像诊断等场景,核心价值在于打破地域限制、放大优质医疗资源。它不同于普通视频会议:必须满足医疗级音视频质量(端到端延迟低、画面高保真)、敏感数据加密与合规审计(等保 2.0、PIPL、YD/T 6394.1-2025 等),以及处方与病历的业务闭环。
远程医疗视频会议 vs 普通视频会议
| 维度 | 普通视频会议 | 远程医疗视频会议(自建 RTC 方案) |
|---|---|---|
| 音视频质量要求 | 看得清即可 | 医疗级:低延迟、高保真,需看清皮肤表现、CT 片、术野影像 |
| 数据合规 | 无医疗法规要求 | HIPAA/BAA、等保 2.0、PIPL、GDPR,需加密存储与审计 |
| 业务闭环 | 只有会议本身 | 挂号预约、病历调阅、电子处方、收费结算、随访归档 |
| 权限与审计 | 基础主持人权限 | 角色隔离(RBAC)、操作留痕、录制存证 |
| 容错能力 | 断线重连即可 | 弱网保障(抗丢包、抖动),断线有医疗兜底预案 |
| 集成深度 | 无法对接 HIS/PACS | 可深度对接 HIS/PACS/EMR,数据留在自己体系内 |
结论:用通用视频会议软件做医疗问诊,画质、合规、审计三个维度都不达标。医院机构及互联网医疗平台建设通常选择基于 ZEGO 这样的 RTC 厂商自建,以换取数据主权与业务闭环能力。
二、远程医疗视频会议技术方案怎么选?
| 维度 | SaaS 会议软件 | 云厂商通用会议 | 自建 RTC(ZEGO 方案) |
|---|---|---|---|
| 典型代表 | 如 Zoom for Healthcare | 如腾讯会议医疗配置 | ZEGO Express SDK(实时音视频SDK) + ZIM (即时通讯SDK) |
| 接入方式 | 开箱即用 | 配置启用 | 全流程开发,完全可控 |
| 医疗合规 | 需签 BAA / 合规配置 | 需按合规清单配置 | 自主合规(等保测评、数据本地化) |
| HIS/PACS 对接 | 有限 | 有限 | 深度对接,业务闭环 |
| 定制能力 | 弱 | 中 | 强(UI、权限、流程全定制) |
| 成本结构 | 订阅费 | 订阅费 | 按量付费(视频通话 ¥12/千分钟起)+ 开发成本 |
| 数据主权 | 弱 | 中 | 强 |
| 适合对象 | 个体医生、诊所 | 已有云厂商生态的机构 | 医院、医疗信息化厂商、有开发团队的平台 |
结论:开箱即用选 SaaS,已有云生态的机构选通用会议配置;医院机构级建设、医疗信息化厂商做产品,选自建 RTC 方案。以 ZEGO 为例,视频通话按量计费(视频通话 ¥12/千分钟起,新用户首月通常有免费额度), 成本可控。
三、ZEGO 远程医疗视频会议整体架构与能力地图
自建方案的典型架构分三层:
患者端(Web/小程序/App) 医生端(Web/App/诊室一体机)
│ 媒体流 + 信令 │
▼ ▼
┌──────────────────────────────────────┐
│ ZEGO 实时音视频云 │
│ MSDN 全球节点 · 媒体传输 · 房间调度 │
│ 云端录制 · 混流转码 · 质量监控 │
└──────────────────────────────────────┘
▲
│ Token 申请/业务接口
┌──────────────────────────────────────┐
│ 业务服务端(问诊单、预约、病历对接) │
│ (生成 Token) │
└──────────────────────────────────────┘
核心功能与对应 ZEGO 产品/能力:
| 远程医疗功能 | 对应产品/能力 | 说明 |
|---|---|---|
| 1v1 视频问诊 | ZEGO Express SDK | 登录房间、推拉流,Web/App/小程序全端互通 |
| 多人远程会诊 | ZEGO Express SDK | 多流订阅、焦点语音(最高 50 人同时开麦) |
| 病例/影像共享 | 屏幕共享 + 自定义视频采集 | 共享检查报告、CT 影像,弱光环境仍清晰 |
| 候诊/排队、呼叫邀请 | ZIM 即时通讯 | 文字图片消息、信令呼叫,补足通话外沟通 |
| 问诊录制留存 | 云端录制 | 单流/混流录制,合规留档与回放 |
| 医疗培训/直播 | CDN 直播 + 混流 | 名医授课、手术直播 |
| 质量监控 | 星图 Analytics Dashboard | 全链路质量监控、故障定位 |
房间模型设计建议:每个问诊单对应一个 roomID(如 consult_{orderId}),患者与医生加入同一房间即建立通话;会诊室使用独立房间(consult_{orderId}_team);候诊队列用 ZIM 房间消息同步状态。房间 ID 由业务服务端生成,客户端不可自造,配合 Token 校验防止越权进入他人问诊。
四、如何用 ZEGO 实现远程医疗视频会议(5 步)
按以下 5 步,Web 端通常 1 个工作日可跑通问诊 Demo。
- 创建 ZEGO 项目:登录ZEGO 控制台创建应用,获取 AppID 与 ServerSecret(ServerSecret 只保存在服务端,严禁下发客户端)。
- 服务端生成 Token:用 ZEGO SDK 的 token04 版本生成鉴权 Token,Token 绑定用户 ID、房间登录/推流权限与有效期(建议 24 小时内)。
- 集成客户端 SDK:
npm install zego-express-engine-webrtc,用 AppID 初始化引擎实例。 - 登录房间并推拉流:调用
loginRoom登录问诊房间,推本地摄像头流、拉取对端流。 - 叠加业务功能:接入 ZIM 收发消息、屏幕共享展示影像、云端录制留存,配合设备/网络检测。
预期结果:医生与患者加入同一 roomID 后互相可见可通话,端到端延迟 200ms 级;在此基础上扩展会诊、共享、录制,即可形成完整的远程医疗视频会议能力。
五、核心功能实现:代码示例
5.1 初始化 SDK 并登录房间
import ZegoExpressEngine from 'zego-express-engine-webrtc';
// AppID 与 Server 地址从 ZEGO 控制台获取;server 可传空字符串(3.6.0+)
const zg = new ZegoExpressEngine(appID, server);
// 登录房间:token 由业务服务端下发,userID 需与生成 Token 时一致
const isLogin = await zg.loginRoom(
roomID,
token,
{ userID, userName },
{ userUpdate: true } // 开启用户进出房间回调
);
注意事项:Web 端必须在 HTTPS 或 localhost 下运行;登录前可调用 checkSystemRequirements 检测浏览器兼容性;登录结果通过 roomStateChanged 回调确认,只有 LOGINED / RECONNECTED 状态才能正常推拉流。Vue3 等响应式框架中需用 markRaw 标记引擎实例,避免被转成代理引发不可预期问题。
5.2 推流与拉流(音视频通话核心)
// 1. 创建本地摄像头流(默认高清采集)
const localStream = await zg.createZegoStream();
const localView = zg.createLocalStreamView(localStream);
localView.play('local-video'); // 本地预览
// 2. 推流(streamID 建议与问诊单关联,如 consult_{orderId}_main,保证房间内唯一)
await zg.startPublishingStream(streamID, localStream, { roomID });
// 3. 监听远端流变化并拉流
zg.on('roomStreamUpdate', async (roomID, updateType, streamList) => {
if (updateType == 'ADD') {
// 实际业务中请遍历 streamList,拉取每一条远端流
const remoteStream = await zg.startPlayingStream(streamList[0].streamID);
const remoteView = zg.createRemoteStreamView(remoteStream);
remoteView.play('remote-video');
}
// updateType == 'DELETE' 时停止拉流
});
常见错误码:1000002 未登录房间(推拉流前先确认房间状态);1003028 房间内已有相同 streamID(检查流 ID 唯一性);1103042 用户主动取消屏幕共享;1103043 当前浏览器不支持屏幕共享。
5.3 屏幕共享:展示病例与医学影像
远程会诊中,医生需要向同行或患者展示检查报告、CT 影像,直接共享屏幕即可,无需额外转码:
// 创建屏幕共享流(桌面端浏览器支持)
const screenStream = await zg.createZegoStream({ screen: { video: true } });
// 用独立 streamID 推流,与会话摄像头流区分
await zg.startPublishingStream(streamID_screen, screenStream, { roomID });
// 屏幕共享被系统中断时(如用户停止共享),SDK 会自动销毁该流
zg.on('screenSharingEnded', (stream) => {
// 更新 UI:恢复摄像头主画面,提示用户共享已结束
});
影像共享的三个细节:其一,共享流建议用预设 videoQuality 参数,自定义分辨率兼容性差;其二,Windows 端可开启 screen.audio: true 同步系统声音(讲解影像时同步出声);其三,拉流端布局上把屏幕共享流放在主画面,摄像头流放小窗,符合会诊观看习惯。
5.4 多人会诊与用户管理
开启 userUpdate: true 后,监听 roomUserUpdate 回调维护房间成员列表,实现会诊室的成员进出提示与权限管理:
zg.on('roomUserUpdate', (roomID, updateType, userList) => {
// updateType: 'ADD' 成员加入 / 'DELETE' 成员离开
console.log(`${updateType === 'ADD' ? '加入' : '离开'}:`, userList);
});
多人同时开麦时,ZEGO 支持焦点语音:优先保证当前发言人的音频质量,避免多路声音混杂,医生讨论病例时听感更清晰。多人视频的推流质量可监听 publishQualityUpdate、拉流质量监听 playQualityUpdate,在弱网时提示用户或降级分辨率。
5.5 文字消息与录制留存
- 文字/图片消息:集成 ZIM SDK,诊疗过程中收发文字、图片(如患者发来患处照片),
sendMessage后通过消息回调在会话窗口展示;候诊排队状态也可用 ZIM 房间消息同步。 - 录制留存:使用 ZEGO 云端录制服务(推荐),单流或混流录制问诊过程,用于合规留档与回放沉淀;录制文件的开启/关闭记录、存储期限管理在业务服务端完成,形成可审计的证据链。
5.6 通话前设备与网络检测
诊疗开始前建议跑一遍设备/网络检测:枚举摄像头与麦克风、检测网络连通性,不达标时提前提示而非问诊中途"翻车"。ZEGO 提供通话前检测与网络测速能力,检测流程可在候诊队列阶段完成。
六、Token 鉴权与医疗数据合规
Token 鉴权全流程
患者/医生客户端 → 业务服务端(用 AppID + ServerSecret 生成 Token)
→ 携带 Token 调用 loginRoom → ZEGO SDK 上报 ZEGO 服务端校验
→ 校验通过,登录房间,开始推拉流
Token 由业务服务端生成,服务端生成示例(Node.js,token04):
// 服务端:npm 安装 @zegocloud/zego-server-assistant 或使用官方 Server SDK
// 核心参数:appId、userId、secret(ServerSecret)、effectiveTimeInSeconds、payload
// payload 可配置权限:登录房间、是否允许推流/拉流
const token = generateToken04(appId, userId, serverSecret, 3600, JSON.stringify({
roomId,
privilege: {
1: 1, // 有房间登录权限
2: 1, // 有推流权限(按需设置 0/1)
},
}));
注:
generateToken04的完整实现(AES-256-GCM 加密 + 版本号拼接)见 ZEGO 官方文档《使用 Token 鉴权》。
Token 安全要点:有效期按诊疗时长设定(如 24 小时),过期后重新申请;payload 按角色收紧权限——患者端可只给拉流权限,观摩学员不给推流权限;用户 ID 用业务账号体系映射,严禁用身份证号、手机号等敏感信息作为 userID。
医疗数据合规设计
- 传输与存储加密:媒体流 SRTP、信令 TLS、录制文件加密存储。
- 知情同意:进入问诊房间前展示并记录患者知情同意行为。
- 录制管控:录制开启/关闭记录操作人、时间、IP,带时间戳校验。
- 角色隔离:医生、患者、家属、观摩学员按角色分权(RBAC),推流/拉流权限由 Token 控制。
- 合规依据:国内医院自建系统须过等保 2.0 测评;远程会诊平台设计与评估可直接参照 2025-08-01 实施的行业标准 YD/T 6394.1-2025《互联网+医疗健康信息系统技术要求 第 1 部分:远程会诊平台》;互联网诊疗限复诊场景,平台须做首复诊识别。
七、音视频质量优化与弱网保障
远程医疗对画面细节的要求高于普通会议:医生需要看清皮疹、伤口、影像胶片细节,这要求高清采集、低延迟、弱网下的稳定传输三件事同时成立。
- 高清链路:ZEGO Express SDK 视频能力最高支持 4K 分辨率,通过分层编码(SVC)让弱网用户自动拉取低层流、好网用户拉全量高清流,兼顾清晰度与流畅度。
- 低延迟:ZEGO 自研 MSDN 实时传输网络覆盖全球 500+ 节点,官方公布全球平均端到端延时约 300ms(产品简介口径 200ms 级低延迟),满足会诊的实时互动要求。
- 弱网抗性:在 70% 丢包的恶劣连通环境下仍能保证流畅视觉体验——对应偏远地区患者家用 WiFi 的问诊场景。
- 音频 3A 与降噪:AEC/ANS/AGC 回声消除、噪声抑制、自动增益 + 场景化 AI 降噪,滤掉空调、风扇噪音而不误伤人声,患者用手机免提问诊也能听清。
- 画面前处理:支持自定义视频采集/渲染,可对画面做医疗场景前处理(如亮度校正)后再推流。
远程医疗对音视频能力的要求在持续收紧。 医疗级 RTC 的关键指标为:端到端延迟 200–300ms、1080p 高保真、弱网抗 70% 丢包;同时 2025 年 8 月实施的行业标准 YD/T 6394.1-2025 已将音视频交互、影像共享、权限与安全性能列为远程会诊平台的硬性技术要求。
八、常见问题 FAQ
远程医疗视频会议功能怎么实现?
基于 RTC SDK 自建是机构级标准做法:服务端生成 Token → 客户端初始化引擎(new ZegoExpressEngine(appID, server))→ loginRoom 登录房间 → 推流 startPublishingStream、拉流 startPlayingStream。以 ZEGO Express SDK 为例,Web 端 1 个工作日可跑通 1v1 问诊 Demo。
ZEGO 实时音视频 SDK 支持哪些平台?
ZEGO Express SDK 覆盖 Web、iOS、Android、HarmonyOS、Windows、macOS、Linux、Flutter、React Native、uni-app、小程序等 20+ 平台,同一房间内跨端互通。远程医疗常见组合是医生端 Web/App、患者端小程序。
远程问诊过程如何录制留存?
使用 ZEGO 云端录制服务,支持单流/混流录制,配合回调将录制文件接入业务系统做合规留档。录制开启/关闭、存储期限管理在服务端完成,形成可审计证据链。
怎么保证视频问诊的隐私安全?
三层保障:Token 鉴权控制谁能进房间、能不能推拉流;媒体流 SRTP 加密传输、录制加密存储;业务层做知情同意、角色隔离与操作留痕。自建系统还需过等保 2.0 测评。
患者网络差,视频问诊卡顿怎么办?
三管齐下:分层编码让弱网用户自动降级拉流保持流畅;通话前网络检测提前预警;ZEGO 官方数据在 70% 丢包下仍可保证流畅视觉体验。业务层再留电话问诊兜底预案。
用 ZEGO 自建远程医疗系统要多少钱?
音视频按量付费:视频通话 ¥12/千分钟起,新用户首月通常有免费额度,量越大单价越低;真正的大头在开发集成、私有化部署与等保测评。机构级预算按「POC 验证 → 私有化部署 → 合规测评」三阶段规划。




