You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ionic集成cordova-plugin-opentok订阅流报1600 OTSubscriberWebRTCError

OpenTok 1600错误(OTSubscriberWebRTCError)修复方案

错误根因

该错误为移动端WebRTC流协商失败,项目搁置期间运行环境(系统WebView、移动端系统版本、浏览器版本)发生迭代,旧版cordova-plugin-opentok@3.4.1适配性不足导致,以下按优先级给出修复方案:


1. 优先修复:编码不兼容问题

当前新版Chrome浏览器默认推VP9编码的视频流,而cordova-plugin-opentok@3.4.1仅支持H264编码,导致移动端无法识别医护端推送的流:

  • 在医护端localMediaOptions配置中新增强制H264编码参数:
var localMediaOptions = {
    // 原有配置保留
    publishAudio: publishAudio,
    publishVideo: true,
    // 新增以下2行
    videoEncoding: 'H264',
    audioEncoding: 'opus'
};

2. 次优先级修复:患者端代码适配

cordova-plugin-opentok@3.4.1存在已知参数校验BUG,调整2处代码即可:

  • 给患者端remoteMediaOptions新增name参数,空值即可:
let remoteMediaOptions = {
    // 原有配置保留
    subscribeToAudio: true,
    subscribeToVideo: true,
    // 新增以下行
    name: ''
};
  • 注释掉患者端订阅成功回调中的OT.updateViews()方法,该方法会打断移动端流渲染流程,旧版插件调用必引发重绘异常:
consultationSession.subscribe(event.stream, 'remoteMedia', remoteMediaOptions, (error: any) => {
    if (error) {
        // **** 此处触发错误:{"code": 1600,"message": "OTSubscriberWebRTCError"} ****
        return;
    }
    // 注释掉该行
    // OT.updateViews();
});

3. 系统权限适配

项目搁置期间移动端系统版本升级,新增WebRTC必要权限,需要在config.xml中补充配置:

  • 安卓端补充权限:
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.NEARBY_WIFI_DEVICES" android:usesPermissionFlags="neverForLocation" />
<application android:usesCleartextTraffic="true">
  • iOS端补充权限:
<key>NSLocalNetworkUsageDescription</key>
<string>需要本地网络权限进行视频通话</string>
<key>NSBonjourServices</key>
<array>
    <string>_http._tcp</string>
</array>

4. 最终兜底方案

如果以上方案均无效,说明当前打包使用的Cordova平台版本过高,和cordova-plugin-opentok@3.4.1不兼容:

  • 安卓打包降级使用cordova-android@8.1.0
  • iOS打包降级使用cordova-ios@6.2.0

内容的提问来源于stack exchange,提问作者DCC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 10:24:03