HarmonyOS 鸿蒙Next中Livekit三方库获取设备的ice信息报错有什么方案吗?

HarmonyOS 鸿蒙Next中Livekit三方库获取设备的ice信息报错有什么方案吗? 问题描述:

基于Flutter的Livekit三方库,用到了fluttertpc_flutter_webrtc ,有没有获取设备ice信息报错的方案??

同时fluttertpc_flutter_webrtc的很多功能在鸿蒙侧还是todo的状态,这些功能有实现方案吗??

cke_5980.png

三方库链接:fluttertpc_flutter_webrtc:基于 Flutter 生态的 WebRTC 插件项目 - AtomGit | GitCode


更多关于HarmonyOS 鸿蒙Next中Livekit三方库获取设备的ice信息报错有什么方案吗?的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

开发者您好,

1、请问获取设备ice信息报错,具体是什么报错,方便告知您的复现步骤吗。

2、关于您说的fluttertpc_flutter_webrtc的很多功能在鸿蒙侧还是todo的状态,方便告知具体是哪些功能吗。如果这些功能对您有影响的话,请问您是在什么样的业务场景中使用该能力,交互流程是怎样的,在哪一个环节遇到了问题?方便说明能力不满足可能带来的影响:什么时间用到?是否高频?有无三方库可以做到?若提供该能力,是否会造成大工作量返工?请您注意提供的内容不要包含您或第三方的非公开信息,如给您带来不便,敬请谅解。

更多关于HarmonyOS 鸿蒙Next中Livekit三方库获取设备的ice信息报错有什么方案吗?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


问题一现在已忽略,目前是我们团对没有能力针对fluttertpc_flutter_webrtc插件在鸿蒙原生处的功能缺失进行补齐,所以需要寻求协助,具体缺失功能部分,上述表格已列出,业务场景类似于腾讯会议,是我们的软件的高频功能。目前支持鸿蒙的第三方库就只有社群提供的这个了。不支持这个功能等于我们这个板块无法完成,鸿蒙用户没法使用会议功能。我们是自建的推拉流服务

在HarmonyOS Next中,Livekit获取ICE信息报错通常因网络权限或NAT穿透配置问题。建议检查应用是否已声明ohos.permission.INTERNETohos.permission.GET_NETWORK_INFO权限。同时确认STUN/TURN服务器地址为IPv6或双栈格式,因鸿蒙Next默认优先IPv6。若使用自定义TURN,需验证凭证生成算法与HarmonyOS网络栈兼容性。

关于您在HarmonyOS NEXT上使用fluttertpc_flutter_webrtc获取设备ICE信息报错的问题,这是鸿蒙适配WebRTC的常见情况。

ICE信息报错的原因:

该库的鸿蒙侧实现目前处于早期阶段,getSenders()等方法标为TODO,意味着底层Native的ICE相关API(如RTCPeerConnection的候选者收集、RTCIceCandidate处理)尚未实现或未完全对接鸿蒙的原生接口。鸿蒙的WebRTC能力依赖于@ohos.multimedia.webrtc模块,该模块在NEXT上功能完整,但三方库并未完整映射到这些API。

具体方案:

  1. 核心问题定位:报错通常是因为库调用peerConnection.localDescription.sdpaddIceCandidate时,鸿蒙侧返回空或未响应。需检查fluttertpc_flutter_webrtcRTCIceCandidateRTCPeerConnection的鸿蒙实现文件(如webrtc_plugin.cpp),确认Candidate的生成逻辑是否调用了createIceCandidate方法。

  2. 替代实现路径

    • 直接调用鸿蒙原生WebRTCController:跳过三方库的鸿蒙封装,通过channel在Dart侧调用@ohos.multimedia.webrtccreateRTCPeerConnection,手动处理ICE事件。
    • 使用flutter_harmony_webrtc(如果存在):该库社区可能有针对鸿蒙的独立分支,可以尝试替换。
  3. TODO事项的临时措施

    • 对于getSenders()等未实现方法,可通过鸿蒙的getStats()间接获取发送器信息,或硬编码RTCRtpSender实例的创建。
    • 参考鸿蒙官方文档中RTCPeerConnection.onicecandidate的用法,自行监听候选者并注入到库的SDP协商流程中。

核心结论:当前报错是库鸿蒙侧适配不完整所致,您需要手动对齐fluttertpc_flutter_webrtc的调用与鸿蒙@ohos.multimedia.webrtc的API,特别是ICE候选者的收集和注入逻辑。

回到顶部