阿里云首页 移动开发平台 mPaaS

常见问题

本文列举一些接入过程中的常见问题及其解决方案。

如何获取房间 ID 和录制 ID

房间 ID 统⼀由 MRTC 后台房间管理系统 RoomServer 产⽣,端创建房间时,RoomServer 会产生⼀个房间 ID,以及录制 ID 给到端(如果创建房间的时候指定需要录制)。OnSessionEvent(RtcEvent event) 接口中,在 event.type == CREATE_ROOM && event.code == SUCCESS 的情况下, event.ext(JSON 字符串)中存放了房间 ID、房间密码以及录制 ID。例如:event.ext = {"recordId":"xxx","roomId:"yyy","token":"zzz"}

如何指定录制

如果业务需要录制,可以通过以下两种方式来指定录制。

  • 方法一:创建房间时,CreatRoomParam 里面的 ext(JSON 字符串)字段可以用来指定录制,比如 param.ext = R"({"defaultRecord":true,"recordStrongDepend":false})"。其中 defaultRecord 指定是否开启录制,recordStrongDepend 指定房间的创建成功是否要考虑录制服务的状态,假设房间服务器在创建房间的时候,发现录制服务器异常,而如果这里指定了录制强相关的话,创建房间会失败,否则房间还是会创建成功,只不过这个房间没有启动录制。

  • 方法二:创建房间时,默认不启动录制,等到对端加入房间以后,再调用 StartRecord 接口启动录制。这样做的好处是可以避免录制资源的浪费,假设对方拒绝加入房间,那么录制服务就不会提前启动。

如何单独指定音频或者视频

发布或者订阅参数 PublishParam/SubscribeParam 里面的 enableVideo/enableAudio 可以指定是否发布音频和视频与是否订阅音频和视频。

如何开启 P2P 模式

P2P 模式指的是客户端和 Linux 之间的媒体数据不经过服务器中转,直接点到点打通。如果业务不需要录制,同时 Linux 端的部署满足全国各地用户的就近接入,可以考虑开启 P2P 模式。追求极致的时延体验,开启 P2P 模式需要注意以下两点:

  • 在创建房间或者加入房间时,设置 param.engine = ENGINE_P2P

  • 收到对方加入房间的事件通知(OnNewJoiner)以后,再做 Publish 操作。

如何传递文本消息

Linux-SDK 提供了两种文本消息的传递模式:

  • P2P 场景:推荐 DataChannel 传递,调用 Session -> SendData 方法(高频消息,能保证按顺序收发)。

  • 其他场景:使用 Room 中转的模式,调用 Session -> SendText 方法(低频消息可能会乱序)。