ソースを参照

音频波纹bug修复

huzhiqiang 3 年 前
コミット
f06add5f11

+ 1 - 1
BFFramework/Classes/Stuckpoint/Controller/PQStuckPointEditerController.swift

@@ -132,7 +132,7 @@ class PQStuckPointEditerController: PQBaseViewController {
 
     /// 裁剪视图
     lazy var stuckPointCuttingView: PQStuckPointCuttingView = {
-        let stuckPointCuttingView = PQStuckPointCuttingView(frame: CGRect(x: 0, y: optionlineView.frame.minY - 85 - 28, width: view.frame.width, height: 80), duration: CGFloat(Float(stuckPointMusicData?.duration ?? "0") ?? 0), startTime: CGFloat(stuckPointMusicData?.startTime ?? 0), endTime: CGFloat(stuckPointMusicData?.endTime ?? 0))
+        let stuckPointCuttingView = PQStuckPointCuttingView(frame: CGRect(x: 0, y: optionlineView.frame.minY - 85 - 28, width: view.frame.width, height: 80), duration: CGFloat(Float(stuckPointMusicData?.duration ?? "0") ?? 0), suggestRhythmStartTime: CGFloat(stuckPointMusicData?.suggestRhythmStartTime ?? 0))
         /// 裁剪进度回调
         stuckPointCuttingView.videoDidBeginDrag = { [weak self] in
             BFLog(message: "开始划动")

+ 6 - 0
BFFramework/Classes/Stuckpoint/Model/PQVoiceModel.swift

@@ -55,6 +55,7 @@ open class PQVoiceModel: NSObject, NSCopying {
     public var materialId: String? // 保存发音人后素材IDmaterialUrl
     public var volume: Int = 0 // 0-100 素材音量
     public var startTime: Float64 = 0 // 开始时间
+    public var suggestRhythmStartTime: Float64  = 0 //推荐起始点
     public var endTime: Float64 = 0 // 结束时间
     public var createTimestamp: Int64 = 0 // 创建时间
     public var voiceType: String = VOICETYPT.PRODUCE.rawValue // 音乐类型
@@ -244,6 +245,11 @@ open class PQVoiceModel: NSObject, NSCopying {
         if jsonDict.keys.contains("suggestRhythmStart") {
             startTime = (Float64("\(jsonDict["suggestRhythmStart"] ?? "0")") ?? 0) / 1_000_000
         }
+        
+        if jsonDict.keys.contains("suggestRhythmStart") {
+            suggestRhythmStartTime = (Float64("\(jsonDict["suggestRhythmStart"] ?? "0")") ?? 0) / 1_000_000
+        }
+        
         if jsonDict.keys.contains("suggestRhythmEnd") {
             endTime = (Float64("\(jsonDict["suggestRhythmEnd"] ?? "0")") ?? 0) / 1_000_000
         }

+ 11 - 4
BFFramework/Classes/Stuckpoint/View/PQStuckPointCuttingView.swift

@@ -83,6 +83,9 @@ class PQStuckPointCuttingView: UIView {
     
     //如果是用户主动划动的 就不自动滚动到推荐位置了
     var isUserDrag:Bool = false
+    // 推荐卡点起始时间
+    var suggestRhythmStartTime:CGFloat = 0.0
+    
     /// 滚动视图
     lazy var scrollView: UIScrollView = {
         let scrollView = UIScrollView(frame: bounds)
@@ -152,9 +155,10 @@ class PQStuckPointCuttingView: UIView {
         fatalError("init(coder:) has not been implemented")
     }
 
-    init(frame: CGRect, duration: CGFloat, startTime: CGFloat, endTime: CGFloat) {
+    init(frame: CGRect, duration: CGFloat, suggestRhythmStartTime: CGFloat) {
         super.init(frame: frame)
         videoDuration = duration
+        self.suggestRhythmStartTime = suggestRhythmStartTime
     
     }
 
@@ -302,7 +306,7 @@ class PQStuckPointCuttingView: UIView {
         if(clearData == true){
             lineLayerArray.removeAll()
             if(rateView.layer.sublayers != nil){
-                for (index,layer) in rateView.layer.sublayers!.enumerated() {
+                for (_,layer) in rateView.layer.sublayers!.enumerated() {
                     layer.removeFromSuperlayer()
                 }
             }
@@ -342,9 +346,9 @@ class PQStuckPointCuttingView: UIView {
             lineLayer.fillColor = UIColor.black.cgColor
 
             // 推荐的开始起点是虚线
-            if oneMarginTime * CGFloat(i) >= stuckPointStartTime && !isDrawLine {
+            BFLog(1, message: "suggestRhythmStartTime is \(suggestRhythmStartTime)")
+            if oneMarginTime * CGFloat(i) >= suggestRhythmStartTime && !isDrawLine {
                 isDrawLine = true
-                startLineX = originX
                 linePath.move(to: CGPoint(x: originX, y: -10))
                 // 终点
                 linePath.addLine(to: CGPoint(x: originX, y: 30))
@@ -352,6 +356,9 @@ class PQStuckPointCuttingView: UIView {
                 lineLayer.lineDashPhase = 0
                 lineLayer.lineDashPattern = [3, 3]
             }
+            if startLineX == 0 && oneMarginTime * CGFloat(i) >= stuckPointStartTime{
+                startLineX = originX
+            }
 
             lineLayerArray.append(lineLayer)
             rateView.layer.insertSublayer(lineLayer, at: 0)