|
@@ -67,6 +67,7 @@ class PQStuckPointEditerController: PQBaseViewController {
|
|
|
|
|
|
|
|
|
var finallyStuckPoints: Array = Array<Float>.init()
|
|
|
+ var finallyStuckPointsInt64: Array = Array<Int64>.init()
|
|
|
|
|
|
var finallyUserAudioTime: Float = 0.0
|
|
|
|
|
@@ -74,6 +75,7 @@ class PQStuckPointEditerController: PQBaseViewController {
|
|
|
|
|
|
|
|
|
var stuckPointsTemp: Array = Array<Float>.init()
|
|
|
+ var stuckPointsTempInt64: Array = Array<Int64>.init()
|
|
|
|
|
|
lazy var nextBtn: UIButton = {
|
|
|
let nextBtn = UIButton(type: .custom)
|
|
@@ -172,6 +174,10 @@ class PQStuckPointEditerController: PQBaseViewController {
|
|
|
self?.playeTimeRange = CMTimeRange(start: CMTimeMakeWithSeconds(Float64(startTime), preferredTimescale: BASE_FILTER_TIMESCALE), end: CMTimeMakeWithSeconds(Float64(endTime), preferredTimescale: BASE_FILTER_TIMESCALE))
|
|
|
|
|
|
self?.dealParameter(model: self?.currentCreateStickersModel ?? .createStickersModelSpeed)
|
|
|
+ if((self?.finallyStuckPoints.count ?? 0) < 1){
|
|
|
+ BFLog(message: "finallyStuckPoints data is error!!!!")
|
|
|
+ return
|
|
|
+ }
|
|
|
|
|
|
DispatchQueue.global().async {
|
|
|
let beginTime: TimeInterval = Date().timeIntervalSince1970
|
|
@@ -1255,7 +1261,7 @@ extension PQStuckPointEditerController {
|
|
|
if dunshu >= Int64((stuckPointMusicData?.startTime ?? 0) * Float64(BASE_FILTER_TIMESCALE)) && dunshu < lastPoint {
|
|
|
let savePointStr = String(format: "%.6f", Float(dunshu) / Float(BASE_FILTER_TIMESCALE))
|
|
|
BFLog(message: "原所有卡点数:\(index) \(savePointStr)")
|
|
|
-
|
|
|
+
|
|
|
pointsTemp.append(Float(savePointStr) ?? 0.0)
|
|
|
}
|
|
|
}
|
|
@@ -1301,7 +1307,7 @@ extension PQStuckPointEditerController {
|
|
|
|
|
|
func clipPoint(clipCount: Int, oldPoints: Array<Float>) {
|
|
|
BFLog(message: "拼接卡点数:\(clipCount)")
|
|
|
- if(clipCount < 0){
|
|
|
+ if(clipCount < 0 || oldPoints.count < 2){
|
|
|
BFLog(message: "clipCount is error!!!! \(clipCount)")
|
|
|
return
|
|
|
}
|
|
@@ -1309,10 +1315,10 @@ extension PQStuckPointEditerController {
|
|
|
if finallyStuckPoints.count == 0 {
|
|
|
finallyStuckPoints.append(stuckPointsTemp.first ?? 0.0)
|
|
|
}
|
|
|
+
|
|
|
for i in finallyStuckPoints.count ... clipCount + finallyStuckPoints.count {
|
|
|
- if (i % (oldPoints.count - 1)) != 0 {
|
|
|
-
|
|
|
- let value = String(format: "%.6f", finallyStuckPoints[i - 1] + oldPoints[i % (oldPoints.count - 1)] - oldPoints[(i - 1) % (oldPoints.count - 1)])
|
|
|
+ if (i % (oldPoints.count - 1)) != 1 {
|
|
|
+ let value = String(format: "%.6f", finallyStuckPoints[i - 1] + oldPoints[((i-1) % (oldPoints.count - 1)) + 1] - oldPoints[((i - 2) % (oldPoints.count - 1)) + 1])
|
|
|
|
|
|
finallyStuckPoints.append(Float(value) ?? 0.0)
|
|
|
} else {
|
|
@@ -1377,6 +1383,7 @@ extension PQStuckPointEditerController {
|
|
|
tempMinSpeed = minSpeed
|
|
|
} else {
|
|
|
stuckPointsTemp = getUsedStuckPoint(seed: (stuckPointMusicData?.speed ?? 0))
|
|
|
+
|
|
|
}
|
|
|
|
|
|
|
|
@@ -1399,54 +1406,42 @@ extension PQStuckPointEditerController {
|
|
|
let assetDuration = Float(CMTimeGetSeconds(asset.duration))
|
|
|
BFLog(message: "输入素材时长 \(assetDuration)")
|
|
|
|
|
|
-
|
|
|
- var lastPointIndex = stuckPointsTemp.firstIndex(where: { (point) -> Bool in
|
|
|
- (point == (finallyStuckPoints.last ?? 0.0).truncatingRemainder(dividingBy: (stuckPointsTemp.last ?? 0)))
|
|
|
- })
|
|
|
- var i = lastPointIndex ?? 0
|
|
|
-
|
|
|
- var LACount: Int = 0
|
|
|
- var LBCount: Int = 0
|
|
|
+ if(finallyStuckPoints.count == 0){
|
|
|
+ finallyStuckPoints.append(stuckPointsTemp[0])
|
|
|
+ }
|
|
|
+ var j = finallyStuckPoints.count
|
|
|
+
|
|
|
+ var pointCount:Int = 0
|
|
|
|
|
|
var useAssestDurationTemp: Float = 0.0
|
|
|
while useAssestDurationTemp < assetDuration {
|
|
|
-
|
|
|
- if i + 1 >= stuckPointsTemp.count || i + 2 >= stuckPointsTemp.count {
|
|
|
- i = 0
|
|
|
- }
|
|
|
-
|
|
|
- let LAValue = String(format: "%.6f", tempMaxSpeed * (stuckPointsTemp[i + 1] - stuckPointsTemp[i]))
|
|
|
- useAssestDurationTemp = useAssestDurationTemp + (Float(LAValue) ?? 0.0)
|
|
|
- if useAssestDurationTemp > Float(assetDuration) {
|
|
|
- useAssestDurationTemp = Float(assetDuration) - (Float(LAValue) ?? 0.0)
|
|
|
-
|
|
|
- break
|
|
|
- }
|
|
|
- LACount = LACount + 1
|
|
|
- BFLog(message: "快速段段段段段段后LACount:\(LACount) realUsedMusicDuration:\(useAssestDurationTemp)")
|
|
|
-
|
|
|
-
|
|
|
- let LBValue = String(format: "%.6f", tempMinSpeed * (stuckPointsTemp[i + 2] - stuckPointsTemp[i + 1]))
|
|
|
-
|
|
|
- useAssestDurationTemp = useAssestDurationTemp + (Float(LBValue) ?? 0.0)
|
|
|
- if useAssestDurationTemp > Float(assetDuration) {
|
|
|
- useAssestDurationTemp = useAssestDurationTemp - (Float(LBValue) ?? 0.0)
|
|
|
- break
|
|
|
+
|
|
|
+ let useSpeed = (pointCount % 2 == 0 ) ? tempMaxSpeed : tempMinSpeed
|
|
|
+
|
|
|
+
|
|
|
+ var sub:Float = 0.0
|
|
|
+ if stuckPointsTemp.count > 2 {
|
|
|
+ if ((j - 1) % (stuckPointsTemp.count - 1)) != 0{
|
|
|
+ sub = stuckPointsTemp[((j - 1) % (stuckPointsTemp.count-1)) + 1] - stuckPointsTemp[(j - 1) % (stuckPointsTemp.count - 1)]
|
|
|
+ }else {
|
|
|
+ sub = stuckPointsTemp[1] - stuckPointsTemp[0]
|
|
|
+ }
|
|
|
+
|
|
|
+ finallyStuckPoints.append(finallyStuckPoints[j - 1] + sub)
|
|
|
+ j += 1
|
|
|
}
|
|
|
- LBCount = LBCount + 1
|
|
|
- BFLog(message: "慢速段段段段段段后LACount:\(LBCount) realUsedMusicDuration:\(useAssestDurationTemp)")
|
|
|
- i = i + 1
|
|
|
+ useAssestDurationTemp += sub * useSpeed
|
|
|
+ pointCount += 1
|
|
|
+ FilterLog(message: "wwwwwwwaaaaaaafin;\((finallyStuckPoints.last ?? 0.0) - (finallyStuckPoints.first ?? 0.0)), tmp:\(useAssestDurationTemp)")
|
|
|
+
|
|
|
}
|
|
|
|
|
|
- sticker.clipCount = LACount + LBCount
|
|
|
+ sticker.clipCount = pointCount
|
|
|
if stuckPointsTemp.count < 1 {
|
|
|
|
|
|
BFLog(message: "卡点数据有错误!!!")
|
|
|
return
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
- clipPoint(clipCount: sticker.clipCount, oldPoints: stuckPointsTemp)
|
|
|
BFLog(message: "finallyStuckPoints\(finallyStuckPoints)")
|
|
|
|
|
|
|