直播观看阶段
JS SDK
序号 | 问题 | 解决方案 |
---|---|---|
1 | 关于自动播放 | 设置了 autoplay 参数后, 使用 PC Chrome 浏览器打开 demo 页可能会出现静音自动播放的情况, 这是浏览器的自动播放策略导致的。关于 Chrome 的自动播放策略请参考 Autoplay Policy Changes(国内网络可能打不开)。 此外, 移动端不支持自动播放。 |
2 | JSSDK 后台获取流的接口报 404 | 1、直播间未开播或者未设置默认回放; 2、摄像头或麦克风未开启,导致获取视频或音频的流的接口会报错 |
3 | JSSDK 用户信息更新接口是否为同步以及如何接收消息? | 用户信息更新接口为异步方法,JSSDK 有提供接收更新信息返回数据接口 |
4 | 初始化 JSSDK 后,播放器上未显示倍速或分辨率等按钮 | 请检查代码中是否将该元素 display |
5 | 初始化完成后,无法播放 | 1、目前 JSSDK 不支持模拟器 iPhone 播放视频,需要选择非 iPhone 模拟器; 2、播放方法无法直接调用或者说无法自动播放,根据浏览器安全规则规定,需要用户与浏览器有交互后,才可以播放 |
6 | jssdk 是否可以控制全屏开关,禁止观众点击全屏 | 可以。可在前端页面隐藏该按钮 |
嵌入模式
序号 | 问题 | 解决方案 |
---|---|---|
1 | 嵌入观看直播如何将观众的身份信息带入到直播活动中,例如昵称、头像等等 | 嵌入链接提供了参数拼接,可以通过拼接 nickname、email 等参数将身份信息带入,头像可以通过创建三方账号设置 head 来设置头像 |
iOS SDK
序号 | 问题 | 解决方案 |
---|---|---|
1 | 关于续播功能 | 需要用户根据活动 id,自己记录对应视频的播放进入,下次在开始观看之前,预设置 initialPlaybackTime 参数给出时间(秒),即可实现续播功能 |
2 | 观看回放,连着外设,如有线耳机 | 暂不支持外接设备的暂停、开始、快进等操作按钮 |
3 | 观看回放,接到电话后,画面虽然暂停了,但是播放状态依然是播放中 | 需要自行监听电话,并且触发暂停操作,详情见 iOS 问题 3 代码 |
4 | 观看直播,正常网络,刚播放的前几秒出现跳帧快进的情况 | 因为 bufferTime 参数导致的,越接近真实直播,越容易卡顿,推荐设置为 4 秒以上 |
5 | 观看直播,当弱网或者断网的情况下,重连若干次之后无法自动重来并报错 buffering timeout,是否可以无限重连? | 重连机制本身是看有几条观看地址线路,当所有的线路尝试完毕后就不在尝试,我们可以再报错回调中增加手动恢复播放的机制,详情见 iOS 问题 5 代码 |
6 | 观看直播,断网期间主持人开启文档演示 | 恢复网络后文档文档加载可能会有些问题,可以通过重新调用 startPlay 重置直播间播放和文档 |
7 | 互动直播,断开互动连接后再次进入房间,观看直播为黑屏 | 底层兼容,升级 6.14.0 可解决此问题 |
8 | 互动直播,上麦后最小化到后台,或接打电话,拍照等,出现远端声音停止播放;再次切回到前台后,存在声音追播或音视频不同步的现象 | 尝试开启后台播放音频权限,xcode - Singing & Capabilities - Background Modes - Audio,AirPlay,and PIP |
9 | 互动直播,上麦后接到微信语音/视频通话,微信语音/视频通话一段时间后,SDK 显示互动异常退出房间,重新进入房间点击上麦,此时主持端显示 SDK 仍在麦上,无法响应 SDK 的上麦申请 | 底层兼容,升级 6.14.0 可解决此问题 |
10 | 互动直播,上麦后接到电话,插入有线耳机/蓝牙耳机接听电话,然后挂断电话,麦克风和扬声器均无声音 | 此问题建议监听用户退到后台的时候调用下麦,一是因为在外面无法采集视频画面,二是不清楚会做什么设计麦克风扬声器视频采集的相关操作导致断开采集,所以建议返回到前台之后在进行正常互动连麦 |
11 | 观看直播转互动连麦直播,导致声音变小 | 底层兼容,升级 6.14.0 可解决此问题 |
iOS 问题 3
// 监听电话
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleInterruption:) name:AVAudioSessionInterruptionNotification object:nil];
#pragma mark - 电话监听
- (void)handleInterruption:(NSNotification *)notification {
NSDictionary *userInfo = notification.userInfo;
AVAudioSessionInterruptionType type = [[userInfo objectForKey:AVAudioSessionInterruptionTypeKey] unsignedIntegerValue];
switch (type) {
case AVAudioSessionInterruptionTypeBegan:
// 处理中断开始事件
// 如果当前正在播放,拔掉耳机,暂停播放
[self pausePlay];
break;
case AVAudioSessionInterruptionTypeEnded: {
AVAudioSessionInterruptionOptions options = [[userInfo objectForKey:AVAudioSessionInterruptionOptionKey] unsignedIntegerValue];
if (options & AVAudioSessionInterruptionOptionShouldResume) {
// 处理中断结束事件
}
break;
}
default:
break;
}
}
iOS 问题 5
// 播放时错误的回调
- (void)moviePlayer:(VHallMoviePlayer *)moviePlayer playError:(VHSaasLivePlayErrorType)livePlayErrorType info:(NSDictionary *)info
{
if (livePlayErrorType == VHSaasLivePlayCDNConnectError) {
// 出现这种报错后 继续重试
[self reconnectPlay];
}
}
Android SDK
序号 | 问题 | 解决方案 |
---|---|---|
1 | 关于续播功能 | 需要用户根据活动 id,自己记录对应视频的播放进入,下次在开始观看时收到播放器的 EVENT_INIT_PLAYER_SUCCESS 事件 调用 seekTo 方法 单位毫秒 |
2 | 观看回放,连着外设,如有线耳机 | 暂不支持外接设备的暂停、开始、快进等操作按钮 |
3 | 观看直播连麦时,接到电话后,会有视频声音输出 | 需要自行监听电话广播事件,并且触发媒体静音操作,详情见 Android 问题 1 |
4 | 观看直播,当弱网或者断网的情况下 重连若千次之后无法自动重来并报错 buffering timeout, 是否可以无限重连? | 重连机制本身是看有几条观看地址线路,当所有的线路尝试完毕后就不在尝试,我们可以在报错回调中监听 错误信息 ERROR_CONNECT,ERROR_REC 手动恢复播放的机制 |
5 | 观看直播,断网期间主持人开启文档演示 | 恢复网络后文档文档加载可能会有些问题,可以通过重新调用 start 重置直播间播放和文档 |
6 | 连麦时相机被其他应用占用导致连麦画面卡住 | 提供相机回调 Stream.StreamDelegate,根据回调事件类型进行下麦处理 |
7 | 基础美颜效果设置注意事项 | //打开美颜功能 interactive.localStream.setEnableBeautify(true); //设置美颜等级 0-4 4 效果最好 interactive.localStream.setBeautifyLevel(level); //注:基础美颜一定要关闭视频采集回调开关 interactive.localStream.setEnableCaptureCallback(false) |
8 | 互动直播,上麦后接到电话,插入有线耳机/蓝牙耳机接听电话,然后挂断电话,麦克风和扬声器均无声音 | 此问题建议监听用户退到后台的时候调用下麦,一是因为在外面无法采集视频画面,二是不清楚会做什么设计麦克风扬声器视频采集的相关操作导致断开采集,所以建议返回到前台之后在进行正常互动连麦 |
9 | 连麦时直接推出直播间偶尔出现未下麦情况 | 建议先进行下麦处理再退出直播间 |
Android 监听电话事件
观看直播连麦时,接到电话后,会有视频声音输出
业务层申请读取打电话权限并静音
<uses-permission android:name="android.permission.READ_PHONE_STATE" ></uses-permission>
<application>
...
<receiver android:name=".PhoneReceiver" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE"></action>
</intent-filter>
</receiver>
...
</application>
修改于 2025-05-27 13:07:16