[声网音频SDK实战教程] 使用声网 [跨频道媒体流转发] 实现 [语音房 - 单人 - 跨房PK] 功能时, 遇到了漏音问题!!!

简介

通过本篇教程, 您将学习到, 在使用声网 [跨频道媒体流转发] 实现 [语音房 - 单人 - 跨房PK] 功能时, 如果遇到漏音问题时, 该如何处理.


问题描述

我们在使用声网 [跨频道媒体流转发] 实现 [语音房 - 单人 - 跨房PK] 功能之后, 在线上实际运行时发现有 “漏音” 情况出现,

就是说 A 和 B两个房间 PK已经结束了, 但是其中一方还是能听到另一方的声音, 我这里总结了出现这种情况的原因 : 

1) A 或 B 没有及时, 或者的来得及在PK结束时调用 stopChannelMediaRelay() 来停止 “频道转发”, 比如A和B的主播直接杀死APP, 但是房间并没有关闭;

2) 客户端调用 stopChannelMediaRelay() 之后, 并没有成功中断 “频道转发”, 这个概率很低, 我们线上就报过一次, 追查结果是因为 : 

"主播第一次跨频道连麦的时候,中间出现了一次主播和机器人之间的心跳断开的情况。重连上后,这位主播连接的老的跨频道机器存在内存泄露,wm与worker断连,worker没有收到sdk断开的信息,所以没有超时退出(连接新的worker之后老的worker连接断开,60s后就会退出)。”

注意 : 这个case, 客户端调用 stopChannelMediaRelay() 时, 返回的结果代码是 0 , 并没有发生错误


解决方案

因为单纯由 “客户端” 来中断 “频道转发”, 有诸多的不确定性, 所以在PK结束时, 可以由服务器调用声网API, 把 “转发机器人” 踢出频道. 

声网相关文档如下 : 

https://docs.agora.io/cn/live-streaming-premium-legacy/rtc_channel_management_restfulapi?platform=iOS#%E5%B0%81%E7%A6%81%E7%94%A8%E6%88%B7%E6%9D%83%E9%99%90

推荐阅读
相关专栏
开发者实践
182 文章
本专栏仅用于分享音视频相关的技术文章,与其他开发者和声网 研发团队交流、分享行业前沿技术、资讯。发帖前,请参考「社区发帖指南」,方便您更好的展示所发表的文章和内容。