Skip to content

Commit 3bc084c

Browse files
HugoChaanenough0
andauthored
Dev/4.3.0 cp (#35)
* merge ktvapi * update ktvapi * update ktvapi * merge code --------- Co-authored-by: CP <[email protected]>
1 parent 61fcda5 commit 3bc084c

File tree

9 files changed

+2562
-267
lines changed

9 files changed

+2562
-267
lines changed

KTVAPI/iOS/Classes/KTVApi.swift

Lines changed: 78 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -65,16 +65,13 @@ import AgoraRtcKit
6565

6666
/// 加入合唱失败原因
6767
@objc public enum KTVJoinChorusFailReason: Int {
68-
case musicPreloadFail //歌曲预加载失败
6968
case musicOpenFail //歌曲打开失败
7069
case joinChannelFail //加入ex频道失败
71-
case musicPreloadFailAndJoinChannelFail
7270
}
7371

7472
@objc public enum KTVType: Int {
7573
case normal
7674
case singbattle
77-
case cantata
7875
case singRelay
7976
}
8077

@@ -105,17 +102,6 @@ import AgoraRtcKit
105102
func onMusicLoadFail(songCode: Int, reason: KTVLoadSongFailReason)
106103
}
107104

108-
109-
//public protocol KTVJoinChorusStateListener: NSObjectProtocol {
110-
//
111-
// /// 加入合唱成功
112-
// func onJoinChorusSuccess()
113-
//
114-
// /// 加入合唱失败
115-
// /// - Parameter reason: 失败原因
116-
// func onJoinChorusFail(reason: KTVJoinChorusFailReason)
117-
//}
118-
119105
@objc public protocol KTVLrcViewDelegate: NSObjectProtocol {
120106
func onUpdatePitch(pitch: Float)
121107
func onUpdateProgress(progress: Int)
@@ -160,6 +146,73 @@ import AgoraRtcKit
160146
func onMusicPlayerProgressChanged(with progress: Int)
161147
}
162148

149+
// 大合唱中演唱者互相收听对方音频流的选路策略
150+
enum GiantChorusRouteSelectionType: Int {
151+
case random = 0 // 随机选取几条流
152+
case byDelay = 1 // 根据延迟选择最低的几条流
153+
case topN = 2 // 根据音强选流
154+
case byDelayAndTopN = 3 // 同时开始延迟选路和音强选流
155+
}
156+
157+
// 大合唱中演唱者互相收听对方音频流的选路配置
158+
@objc public class GiantChorusRouteSelectionConfig: NSObject {
159+
let type: GiantChorusRouteSelectionType // 选路策略
160+
let streamNum: Int // 最大选取的流个数(推荐6)
161+
162+
init(type: GiantChorusRouteSelectionType, streamNum: Int) {
163+
self.type = type
164+
self.streamNum = streamNum
165+
}
166+
}
167+
168+
@objc open class GiantChorusConfiguration: NSObject {
169+
var appId: String
170+
var rtmToken: String
171+
weak var engine: AgoraRtcEngineKit?
172+
var channelName: String
173+
var localUid: Int = 0
174+
var chorusChannelName: String
175+
var chorusChannelToken: String
176+
var maxCacheSize: Int = 10
177+
var musicType: loadMusicType = .mcc
178+
var audienceChannelToken: String = ""
179+
var musicStreamUid: Int = 0
180+
var musicChannelToken: String = ""
181+
var routeSelectionConfig: GiantChorusRouteSelectionConfig = GiantChorusRouteSelectionConfig(type: .byDelay, streamNum: 6)
182+
var mccDomain: String?
183+
@objc public
184+
init(appId: String,
185+
rtmToken: String,
186+
engine: AgoraRtcEngineKit,
187+
localUid: Int,
188+
audienceChannelName: String,
189+
audienceChannelToken: String,
190+
chorusChannelName: String,
191+
chorusChannelToken: String,
192+
musicStreamUid: Int,
193+
musicChannelToken: String,
194+
maxCacheSize: Int,
195+
musicType: loadMusicType,
196+
routeSelectionConfig: GiantChorusRouteSelectionConfig,
197+
mccDomain: String?
198+
) {
199+
self.appId = appId
200+
self.rtmToken = rtmToken
201+
self.engine = engine
202+
self.channelName = audienceChannelName
203+
self.localUid = localUid
204+
self.chorusChannelName = chorusChannelName
205+
self.chorusChannelToken = chorusChannelToken
206+
self.maxCacheSize = maxCacheSize
207+
self.musicType = musicType
208+
self.audienceChannelToken = audienceChannelToken
209+
self.musicStreamUid = musicStreamUid
210+
self.musicChannelToken = musicChannelToken
211+
self.routeSelectionConfig = routeSelectionConfig
212+
self.mccDomain = mccDomain
213+
}
214+
}
215+
163216
@objc open class KTVApiConfig: NSObject{
164217
var appId: String
165218
var rtmToken: String
@@ -171,7 +224,7 @@ import AgoraRtcKit
171224
var type: KTVType = .normal
172225
var maxCacheSize: Int = 10
173226
var musicType: loadMusicType = .mcc
174-
var isDebugMode: Bool = false
227+
var mccDomain: String?
175228
@objc public
176229
init(appId: String,
177230
rtmToken: String,
@@ -181,9 +234,9 @@ import AgoraRtcKit
181234
chorusChannelName: String,
182235
chorusChannelToken: String,
183236
type: KTVType,
184-
maxCacheSize: Int,
185237
musicType: loadMusicType,
186-
isDebugMode: Bool
238+
maxCacheSize: Int,
239+
mccDomain: String?
187240
) {
188241
self.appId = appId
189242
self.rtmToken = rtmToken
@@ -195,17 +248,18 @@ import AgoraRtcKit
195248
self.type = type
196249
self.maxCacheSize = maxCacheSize
197250
self.musicType = musicType
198-
self.isDebugMode = isDebugMode
251+
self.mccDomain = mccDomain
199252
}
253+
254+
200255
}
201256

202257
/// 歌曲加载配置信息
203258
@objcMembers open class KTVSongConfiguration: NSObject {
204259
public var songIdentifier: String = ""
205-
public var autoPlay: Bool = false //是否加载完成自动播放
206260
public var mainSingerUid: Int = 0 //主唱uid
207261
public var mode: KTVLoadMusicMode = .loadMusicAndLrc
208-
262+
public var songCutter: Bool = false
209263
func printObjectContent() -> String {
210264
var content = ""
211265

@@ -234,10 +288,9 @@ public typealias JoinExChannelCallBack = ((Bool, KTVJoinChorusFailReason?)-> Voi
234288

235289
@objc public protocol KTVApiDelegate: NSObjectProtocol {
236290

237-
/// 初始化
238-
/// - Parameter config: <#config description#>
239-
init(config: KTVApiConfig)
291+
@objc optional func createKtvApi(config: KTVApiConfig) //小合唱必选
240292

293+
@objc optional func createKTVGiantChorusApi(config: GiantChorusConfiguration) //大合唱必选
241294

242295
/// 订阅KTVApi事件
243296
/// - Parameter ktvApiEventHandler: <#ktvApiEventHandler description#>
@@ -410,4 +463,6 @@ public typealias JoinExChannelCallBack = ((Bool, KTVJoinChorusFailReason?)-> Voi
410463
*/
411464

412465
func removeMusic(songCode: Int)
466+
467+
@objc func didAudioMetadataReceived( uid: UInt, metadata: Data)
413468
}

0 commit comments

Comments
 (0)