TRTCCloud语聊房记录

288 阅读3分钟

语聊房

TRTC有两个版本TXLiteAVSDK_Professional和TXLiteAVSDK_TRTC,语聊房TXLiteAVSDK_TRTC就够用了,包比前面的专业版还小。文档上提到使用podspec导入,这样下载下来每次都是最新的

pod 'TXLiteAVSDK_Professional', :podspec => 'https://liteav.sdk.qcloud.com/pod/liteavsdkspec/TXLiteAVSDK_Professional.podspec'
pod 'TXLiteAVSDK_TRTC', :podspec => 'https://liteav.sdk.qcloud.com/pod/liteavsdkspec/TXLiteAVSDK_TRTC.podspec'

版本问题

之前使用TXLiteAVSDK_Professional,后来发现TXLiteAVSDK_TRTC满足需求,就切换到了TXLiteAVSDK_TRTC,但是上面的pod方式每次更新都是最新的,这个倒是无可厚非。

经过测试TXLiteAVSDK_TRTC的10.7.11936版本,创建好房间,返回桌面,打开抖音,再回来直播间被解散,只有reason=2,没有错误信息,官方的文档reason=2是房间被解散。自查代码后发现代码没有手动调用解散房间,后台也没有解散房间。

检查进入房间代码无问题之后,与官方沟通,并把TRTC的log日志提交,官方表示肯定是我手动调用了解散房间...好吧。

回退版本到之前的10.5.11726,问题就没有出现了。

实例化

self.trtc = TRTCCloud.sharedInstance()
self.trtc.delegate = self

创建房间

初始化TRTCParams,参数sdkAppId、userId、userSig、strRoomId、role(只有当 TRTCAppScene 被指定为 TRTCAppSceneLIVE 或 TRTCAppSceneVoiceChatRoom 这两种直播场景时才需要指定该字段)
scene代表房间的场景,VideoCall和LIVE代表视频直播,AudioCall和VoiceChatRoom代表语音直播,VideoCall和LIVE的区别就是LIVE可以有主播和观众角色切换,AudioCall和VoiceChatRoom同理。
开流:startLocalAudio(xxx),括号里的参数表示开流的音质

  • Speech适用场景音频呼叫,传输码率小,受网络影响小
  • Default介于Speech和Music之间
  • Music高音质传输,对音质需求比较高的可以选择这个,但是传输码率比Speech高出不少,受网络影响

进入房间

self.trtc.enterRoom(params, appScene: scene)
主要代理方法
func onExitRoom(_ reason: Int) 退出房间或房间解散都会被调用
func onEnterRoom(_ result: Int) 加入房间

开流和静音

开流startLocalAudio、断流stopLocalAudio,这里断流与静音不同,静音是还会不断发送很小的静音包,断流是不上传语音包。

静音分为本地静音和远端静音。
本地静音:muteLocalAudio,让本地的声音别人听不到
远端静音:muteRemoteAudio,参数是userId,表示静音哪个用户
静音所有远端:muteAllRemoteAudio,用于主播正在1V1连麦,除了主播和连麦用户,其它人应该都听不见聊天,他们应该静音所有远端

主播创建房间之后就开流,需要静音时就调用本地静音的方法,不需要断流,如果断流再开流的话比静音取消静音的效率慢很多,而且主播需要频繁发言
用户上下麦时,可以开流和断流,因为用户不用频繁上麦发言

上下麦

在有主播用户的角色场景里,用户上下麦除了开流断流之外,还需要切换角色

self.trtc.switch(role)

这里切换角色,我的理解是,在房间里默认只有主播身份可以发言,所以用户身份audience上麦就需要把自己的角色切换成主播身份anchor,现在用户和主播都是主播身份,他们说的话房间内都可以听到了。在下麦时把用户的身份从主播切换到用户就可以了。

退出房间

self.trtc.exitRoom()