|
@@ -101,8 +101,8 @@ class PQStuckPointEditerController: PQBaseViewController {
|
|
|
lazy var sustomSwitchView: PQCustomSwitchView = {
|
|
|
let sustomSwitchView = PQCustomSwitchView(frame: CGRect(x: 16, y: 0, width: 180, height: 30), titles: ["快节奏", "适中", "慢节奏"], defaultIndex: stuckPointMusicData?.speed ?? 2)
|
|
|
sustomSwitchView.switchChangeHandle = { [weak self] sender in
|
|
|
-
|
|
|
- if(self?.currentCreateStickersModel == .createStickersModelSpeed){
|
|
|
+
|
|
|
+ if(self?.currentCreateStickersModel == .createStickersModelSpeed && self?.selectedDataCount != self?.selectedImageDataCount){
|
|
|
self?.stuckPointMusicData?.speed = sender.tag + 1
|
|
|
}else{
|
|
|
self?.stuckPointMusicData?.speed = sender.tag
|
|
@@ -1180,9 +1180,14 @@ extension PQStuckPointEditerController {
|
|
|
var stuckPoints: Array = Array<Float>.init()
|
|
|
|
|
|
var stuckPointsTemp = Array<Float>.init()
|
|
|
+
|
|
|
+
|
|
|
+ let lastPoint = Float((stuckPointMusicData!.rhythmSdata[0].pointTimes[stuckPointMusicData!.rhythmSdata[0].pointTimes.count - 1] )) / Float(BASE_FILTER_TIMESCALE)
|
|
|
+
|
|
|
for (index, dunshu) in stuckPointMusicData!.rhythmSdata[0].pointTimes.enumerated() {
|
|
|
- BFLog(message: "原所有卡点数:\(index) \(Float(dunshu) / Float(BASE_FILTER_TIMESCALE))")
|
|
|
- if Float64(dunshu) / Float64(BASE_FILTER_TIMESCALE) > (stuckPointMusicData?.startTime ?? 0) {
|
|
|
+
|
|
|
+ if Float64(dunshu) / Float64(BASE_FILTER_TIMESCALE) > (stuckPointMusicData?.startTime ?? 0) && Float64(dunshu) / Float64(BASE_FILTER_TIMESCALE) < Float64(lastPoint) {
|
|
|
+ BFLog(message: "原所有卡点数:\(index) \(Float(dunshu) / Float(BASE_FILTER_TIMESCALE))")
|
|
|
stuckPointsTemp.append(Float(dunshu) / Float(BASE_FILTER_TIMESCALE))
|
|
|
}
|
|
|
}
|
|
@@ -1194,8 +1199,6 @@ extension PQStuckPointEditerController {
|
|
|
适中为每两个点位取一个,即0,2,4,6……
|
|
|
慢节奏为每三个点位取一个,即0,3,6,9……
|
|
|
*/
|
|
|
- BFLog(message: "stuckPointMusicData?.speed is \(String(describing: stuckPointMusicData?.speed))")
|
|
|
-
|
|
|
|
|
|
if(seed == 1){
|
|
|
stuckPoints = stuckPointsTemp
|
|
@@ -1223,7 +1226,7 @@ extension PQStuckPointEditerController {
|
|
|
BFLog(message: "有 start end 计算后的卡点数\(point)")
|
|
|
}
|
|
|
|
|
|
- BFLog(message: "stuckPoints count is \(stuckPoints.count)")
|
|
|
+ BFLog(message: "处理节奏后 stuckPoints count is \(stuckPoints.count) seed \(seed), start time:\(stuckPoints.first ?? 0.0),end time:\(stuckPoints.last ?? 0.0) 总时长为:\((stuckPoints.last ?? 0.0) - (stuckPoints.first ?? 0.0))")
|
|
|
|
|
|
return stuckPoints
|
|
|
|
|
@@ -1239,7 +1242,7 @@ extension PQStuckPointEditerController {
|
|
|
|
|
|
|
|
|
let stuckPointsTemp:Array<Float>
|
|
|
-
|
|
|
+
|
|
|
|
|
|
var useAssestDuration:Float = 0.0
|
|
|
switch model {
|
|
@@ -1254,16 +1257,16 @@ extension PQStuckPointEditerController {
|
|
|
while useAssestDuration < Float(Float(selectedTotalDuration) / (Float(maxSpeed) + 1)) {
|
|
|
|
|
|
|
|
|
- if(i+2 >= stuckPointsTemp.count){
|
|
|
+ if(i+1 >= stuckPointsTemp.count){
|
|
|
i = 0
|
|
|
}
|
|
|
|
|
|
let LA = (stuckPointsTemp[i+1] - stuckPointsTemp[i])
|
|
|
useAssestDuration = useAssestDuration + Float(LA)
|
|
|
if(useAssestDuration > Float(selectedTotalDuration)){ break}
|
|
|
-
|
|
|
- let LB = (stuckPointsTemp[i+2] - stuckPointsTemp[i+1])
|
|
|
- useAssestDuration = useAssestDuration + Float(LB)
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
i = i + 1
|
|
|
clipNum = clipNum + 1
|
|
|
}
|
|
@@ -1276,7 +1279,17 @@ extension PQStuckPointEditerController {
|
|
|
break
|
|
|
case .createStickersModelSpeed,.createStickersModelOnlyMusic:
|
|
|
|
|
|
- stuckPointsTemp = getUsedStuckPoint(seed: (stuckPointMusicData?.speed ?? 0) + 1)
|
|
|
+ var tempMaxSpeed:Float = 1
|
|
|
+ var tempMinSpeed:Float = 1
|
|
|
+ if(model == .createStickersModelSpeed){
|
|
|
+ stuckPointsTemp = getUsedStuckPoint(seed: (stuckPointMusicData?.speed ?? 0) + 1)
|
|
|
+ tempMaxSpeed = maxSpeed
|
|
|
+ tempMinSpeed = minSpeed
|
|
|
+ }else{
|
|
|
+ stuckPointsTemp = getUsedStuckPoint(seed: (stuckPointMusicData?.speed ?? 0))
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
|
|
|
- A-视频中的快速片段
|
|
@@ -1314,11 +1327,11 @@ extension PQStuckPointEditerController {
|
|
|
while useAssestDurationTemp < assetDuration {
|
|
|
|
|
|
|
|
|
- if(i+2 > stuckPointsTemp.count){
|
|
|
+ if(i+1 >= stuckPointsTemp.count || i+2 >= stuckPointsTemp.count){
|
|
|
i = 0
|
|
|
}
|
|
|
|
|
|
- let LA = maxSpeed * (stuckPointsTemp[i+1] - stuckPointsTemp[i])
|
|
|
+ let LA = tempMaxSpeed * (stuckPointsTemp[i+1] - stuckPointsTemp[i])
|
|
|
useAssestDurationTemp = useAssestDurationTemp + Float(LA)
|
|
|
if(useAssestDurationTemp > Float(assetDuration)){
|
|
|
useAssestDurationTemp = useAssestDurationTemp - Float(LA)
|
|
@@ -1328,7 +1341,7 @@ extension PQStuckPointEditerController {
|
|
|
LACount = LACount + 1
|
|
|
BFLog(message: "快速段段段段段段后LACount:\(LACount) realUsedMusicDuration:\(useAssestDurationTemp)")
|
|
|
|
|
|
- let LB = minSpeed * (stuckPointsTemp[i+2] - stuckPointsTemp[i+1])
|
|
|
+ let LB = tempMinSpeed * (stuckPointsTemp[i+2] - stuckPointsTemp[i+1])
|
|
|
useAssestDurationTemp = useAssestDurationTemp + Float(LB)
|
|
|
if(useAssestDurationTemp > Float(assetDuration)){
|
|
|
useAssestDurationTemp = useAssestDurationTemp - Float(LB)
|
|
@@ -1340,14 +1353,16 @@ extension PQStuckPointEditerController {
|
|
|
i = i + 1
|
|
|
}
|
|
|
|
|
|
- for i in 0...(LACount + LBCount) {
|
|
|
+ sticker.clipCount = LACount + LBCount
|
|
|
+
|
|
|
+ for i in 0...sticker.clipCount {
|
|
|
|
|
|
let a = stuckPointsTemp[(i + Int(lastPointIndex ?? 0)) % stuckPointsTemp.count]
|
|
|
let b = Float((i + Int(lastPointIndex ?? 0)) / stuckPointsTemp.count) * (stuckPointsTemp.first ?? 0)
|
|
|
finallyStuckPoints.append(a + b)
|
|
|
}
|
|
|
|
|
|
- sticker.clipCount = LACount + LBCount
|
|
|
+
|
|
|
|
|
|
|
|
|
if(useAssestDurationTemp < assetDuration){
|