在线KTV
  • iOS
  • Android : Java
  • Windows
  • Linux
  • Web
  • Flutter
  • Electron
  • Unity3D
  • 方案简介
  • 下载
  • 体验 App
  • 快速开始
  • 方案实现
  • ZEGO 内容中心
  • 客户端 API
  • 服务端 API
  • 常见错误码
  • 常见问题
  • 文档中心
  • 在线KTV
  • 常见问题

KTV方案集成 FAQ

更新时间:2023-12-11 16:18

点歌相关问题

1. 为什么切换原唱/伴唱没有成功?

只有带有伴奏的歌曲才可以切换原唱和伴奏。

2. 歌词同步频率和评分频率设置多少合适?

均设置为 60ms 一次。

3. 歌曲/伴奏文件的大小及下载时间,大概会是多少?

A3. 分为SQ(Standard Quality)、HQ、无损音乐(暂无),音质不同大小不同。歌曲:SQ是3-4M,HQ6-7M,伴奏:单音轨默认都是SQ等级,双音轨是10M左右。下载时间根据具体的下载网络类型和网速而定,如4G下行10M/s,下载时间在1s以内。

合唱方案相关问题

1. 为什么麦上用户延迟高?

可能造成的原因是:

  • 用户当前网络差;
  • 没有开启超低延迟模式;
  • jitterbuffer水位设置过高。
2. 观众端拉流时,为什么伴奏和人声对不齐?

没有开启混流对齐配置,总共有3个接口:

  • startPublishingStreamWithConfig(forceSynchronousNetworkTime = 1);
  • setStreamAlignmentProperty;
  • ZegoMixerTask setStreamAlignmentMode = 1。
3. 为什么拉流收听会有卡顿?

麦上的用户拉流的 jitterbuffer 水位过低。网络存在抖动。麦上用户推荐值是(30,30),观众是(500,100)。

4. 为什么多端伴奏不同步?

可能是因为开发者没有使用合唱示例源码,自行实现倒计时同步逻辑,导致存在误差。

5. 为什么观众端歌词会比人声滞后,甚至进度会暂停?

请查看是否开了 DTX,影响了 SEI 发送。

6. 为什么麦上用户接受不到 SEI 的回调?

可能有以下原因:

  • 重复设置了 setEventHandler 事件回调代理;
  • 推流端没发 SEI;
  • 拉流端没拉带有 SEI 的流。
7. 为什么观众端收听效果人声比伴奏慢?

请查看每次播放时有没有重新推伴奏流并更新混流。

8. 设置 setReverbPreset 后耳返没混响

Express 需要 advancedConfig("audio_loopback_after_prep":"true")。

9. 为什么辅路流没有数据?

请检查是否设置辅路流的数据来源,需要设置音频外部采集。

10. 中途加入合唱,伴奏为什么没有对齐?

需要使用合唱示例源码的中途加入合唱对齐功能实现。

11. 插拔耳机会导致进度落后,应该如何解决?

需要集成伴奏对齐功能,可以参考合唱示例源码实现。

抢唱方案相关问题

1. 为什么一轮的总曲目比设定的要少,例如我设置了一轮 8 首歌,但是只播放 7 首?

房主下载歌曲时,如果某些歌曲下载异常,例如已下架,则会上报后台该歌曲下载失败,后台会将歌曲从歌单剔除,所以歌曲会变少。

2. 为什么体验 App 中有些麦位的网络图标时有时无?

若对应的麦位是自己,则自己成功推流的时候才显示网络图标;若对应的麦位是其他用户,仅在他有推流且本端成功拉取他的流时才显示网络图标。其余的情况一律不显示网络图标。

3. 歌曲的 segment_begin, segment_end, prelude_duration 这三者的关系?

segment_beginsegment_end 这两个字段用来定位高潮片段在整首歌中的起始位置和结束位置,单位均为毫秒,下载到的资源即 segment_begin ~ segment_end 这段,时长为 segment_end - segment_begin 的值。

prelude_duration 这个字段描述的是高潮前奏的时长,单位毫秒,前奏是包含在 segment_begin ~ segment_end 这段里面的。

/Pics/GoEnjoy/KTVGrab/Common/grab_song_clip_rsc_exp.png

4. 如何将麦克风人声和播放器进行混流?

以下代码供您参考:

// 创建媒体播放器
ZegoMediaPlayer mediaPlayer = ZegoExpressEngine.getEngine().createMediaPlayer();
// 将播放器的流混入主流中
mediaPlayer.enableAux(true);

更多详情可参考 ZegoExpressSDK API 文档的 enableAux 接口。

5. 为什么有些情况需要提前推流?

由于客户端拉流建立链接需要短暂时间,因此为了保证拉流端的歌曲聆听体验,在某些状态会提前进行推流(状态 round_preparingnext_song_preparing)。

本篇目录