视频通话
联系电话:(010) 6072 8829
技术QQ群:697918347
English
集成和使用
登录

为什么提示我被踢出了房间

如果一个已经登录的用户,在另一个设备登录,则当前用户会被踢。

频道

网络环境差时,SDK会强行让用户自动退出频道吗?

SDk不会让用户自动退出频道,除非用户自己主动退出。例如,应用程序调用leaveChannel()的方法;如果客户端长时间没有上行视频或者音频数据,会被服务器踢下线。

在每个房间,每个频道内,通话中是否有管理员?

没有频道管理员的概念,管理员是属于信令层的范围。可以由信令层实现,由信令服务器主动下发命令,调用SDK的接口来实现通话管理。

客户端是否要维护频道?

频道是自动创建和删除的,客户端无需处理和维护。当所有客户端都离开一个频道时,频道自动被删除。

什么是 App ID?

App ID是由3TLive分配的,请联系官网获取。

用户直播时,如何保持房间名/频道名的唯一性?

由 App 端自行区分,例如加上前后缀。如果指定相同的频道名,则进入同一频道。

如何监听频道内谁在说话?

以下各平台回调方法提示了频道内谁在说话,以及说话者的音量:

  • Android: onAudioVolumeIndication
  • iOS: reportAudioVolumeIndicationOfSpeake ####该提醒默认为关闭状态。如需启用,请调用 enableAudioVolumeIndication 方法进行配置。

录制

  • iOS 平台上: 首次运行系统会提示打开录音权限。如被手工关闭后开发者可以查询系统接口 AVAudioSession.sharedInstance().recordPermission()[iOS8.0+] 来检测录音权限。
  • Android 平台上: 比较复杂,因为各个厂家的实现不一,并没有统一的手段可以检测到所有手机的录音权限。

信令

怎么获取用户在线列表?

SDK 内有 onUserJoined 和 onUserOffline 的回调接口,可以知道用户上线和离线时刻的通知。但无法获取在线列表,用户管理属于信令层的逻辑,建议由你自己在信令层来做。

App 的用户之间要建立和发起一个呼叫,整个流程是怎样的?

以 A 呼叫 B 为例,一般呼叫流程如下:

1.A 向信令服务器发起呼叫请求。
2.信令服务器检查 B 是否在线:
如不在线,向 A 返回 B 不在线错误。
如在线,信令服务器生成频道名,返回给 A;并向 B 投递呼叫信令。
3.A 收到信令服务器返回的频道名,准备加入语音频道。此时为加快进频道速度,可以提前进入频道待命:
A 调用 muteLocalAudioStream(true) 和 muteLocalVideoStream(true)(如有视频功能)禁止发送音视频数据。
调用 joinChannel 进入频道。
4.B 收到信令服务器投递过来的A的呼叫请求。
B 响铃。 为加快进频道速度,可以提交进入频道待命。
B 调用 muteLocalAudioStream(true) 和
muteLocalVideoStream(true)(如有视频功能)禁止发送音视频数据。 5.A 调用 joinChannel 进入频道:
如 B 拒绝请求:
* B 调用 leaveChannel 退出频道
* B 向信令服务器返回拒绝应答
* 信令服务器向 A 返回 B 拒绝应答信令
* A 调用 leaveChannel 退出频道
如 B 接受请求:
* B 调用 muteLocalAudioStream(false) 和 muteLocalVideoStream(false) 开始发送音视频数据
* B 向信令服务器返回接受应答信令
* 调用 muteLocalAudioStream(false) 和 muteLocalVideoStream(false) 开始发送音视频数据

Android问题

安卓平台上,可以将 SDK 代码与我自己的代码混用吗?

不能,否则无法回调 .so 文件。

集成 SDK 后,点击 App 中视频小窗口没有反应,也无法拖动,我该怎么办?

检查系统上有没有开启悬浮窗权限。如果没有开启该权限,App 是无法启动小窗口的。

其它问题

哪些回调函数建议做 App 业务逻辑?哪些不建议做?

App 经常关心的是用户状态相关的回调,如 userJoined, userOffline 等,鉴于所有与用户相关的逻辑都是以UDP的方式传输,并不可靠。 同样原理,其他与远程用户相关的回调也是不可靠的。

在使用和集成 SDK 过程中会返回哪些错误代码,哪里可以找到对应的描述?

详见:

错误代码和警告代码

Error Code 里哪些可以做 APP 的业务逻辑,哪些不可以?

Error 类的可以做 APP 的业务逻辑,但是 Warning 类的无需处理。

哪些回调可以用于提示用户断开服务器,或者重连?

rtcEngineConnectionDidLost或connectionLostBlock 可用户提示用户断开服务器, 断开事件后,SDK会主动重连服务器。

示例代码与API

为什么 Open Live 编译无法通过?

Open Live 的编译需要用户提供自己申请的 App ID 才能通过。请在提示出错的地方,补上自己申请的 App ID。

从哪里可以获取 App ID?

请联系三体云官网获取。

为什么在 Open Live 代码里填好 App ID 后,进不去频道,也看不到本地视频?

请检查一下: 在 dashboard 中,是否启用了 App Certificate, 一旦启用 App Certificate, 则必须使用 Channel Key 加入频道。

3TLive SDK 支持 ReplayKit 吗?

ReplayKit 是 iOS 10 内置的录屏功能, 目前 3TLive SDK 支持 ReplayKit。详见连麦直播demo中的录制视频和分享桌面视频源。

观众在直播间的时长数据,可以拿到吗?

推荐通过信令层自行统计,后续 3TLive 将提供非实时对账接口。