|
@@ -363,6 +363,16 @@ class PQStuckPointEditerController: PQBaseViewController {
|
|
|
self?.maxSpeed = maxSpeed
|
|
|
self?.minSpeed = minSpeed
|
|
|
BFLog(message: "自定义速度maxSpeed is\(maxSpeed) minSpeed \(minSpeed) \(isJumpSpeedModel)")
|
|
|
+
|
|
|
+ //自定定义的更新一下最后的选择位置
|
|
|
+ if self?.speedSettingView.viewType == 1{
|
|
|
+ self?.lastSpeedSelectIndex = -1
|
|
|
+ }else if self?.speedSettingView.viewType == 2{
|
|
|
+ self?.lastJumpSpeedSelectIndex = -1
|
|
|
+ }else{
|
|
|
+ self?.lastCyclesSelectIndex = Int(maxSpeed - 1)
|
|
|
+ }
|
|
|
+
|
|
|
self?.settingPlayerView()
|
|
|
//确认后 选中自定义
|
|
|
self?.speedSettingView.selectCustom()
|
|
@@ -1069,8 +1079,6 @@ extension PQStuckPointEditerController {
|
|
|
// 推荐卡点数
|
|
|
let beginDecoderTime: TimeInterval = Date().timeIntervalSince1970
|
|
|
|
|
|
-
|
|
|
-
|
|
|
// 保存滤镜对象数据
|
|
|
var stickers: Array = Array<PQEditVisionTrackMaterialsModel>.init()
|
|
|
for section in sections {
|
|
@@ -1170,12 +1178,8 @@ extension PQStuckPointEditerController {
|
|
|
|
|
|
if totalClipNum + clipindex + 1 < finallyStuckPoints.count {
|
|
|
deepCopySticker?.speedRate = tempSpeed
|
|
|
-
|
|
|
// 定义临时使用的变量
|
|
|
-
|
|
|
-
|
|
|
// 素材显示的开始时间和结束时间
|
|
|
-
|
|
|
let tempTimelineIn = Float64(finallyStuckPoints[totalClipNum + clipindex])
|
|
|
let timelineOut = Float64(finallyStuckPoints[totalClipNum + 1 + clipindex])
|
|
|
|
|
@@ -1339,7 +1343,7 @@ extension PQStuckPointEditerController {
|
|
|
var i: Int = 0
|
|
|
// L/(n+1) L -原视觉素材总时长 n-抛留倍数 lastJumpSpeedSelectIndex 是位置 对应的值要+1
|
|
|
//根据公式计划出的总时长
|
|
|
- let jumpTime = Float(selectedTotalDuration) / Float(lastJumpSpeedSelectIndex + 2)
|
|
|
+ let jumpTime = Float(selectedTotalDuration) / Float(maxSpeed + 1)
|
|
|
//只有图片素材时会为0
|
|
|
if(jumpTime > 0){
|
|
|
while useAssestDuration < Float(jumpTime) {
|
|
@@ -1511,11 +1515,11 @@ extension PQStuckPointEditerController {
|
|
|
var pointIndex = stuckPointsTemp.firstIndex(where: { (point) -> Bool in
|
|
|
(point == (finallyStuckPoints.last ?? 0).truncatingRemainder(dividingBy: (stuckPointsTemp.last ?? 0)))
|
|
|
})
|
|
|
- pointIndex = (pointIndex ?? 0) + 1
|
|
|
+ pointIndex = (pointIndex ?? 0)
|
|
|
|
|
|
var tempStartTime:Float = -1
|
|
|
var tempEndTime:Float = -1
|
|
|
- for i in 0 ... selectedImageDataCount - 1 {
|
|
|
+ for i in 0 ... selectedImageDataCount {
|
|
|
let a = stuckPointsTemp[(i + Int(pointIndex ?? 0)) % stuckPointsTemp.count]
|
|
|
let b = Float((i + Int(pointIndex ?? 0)) / stuckPointsTemp.count) * (stuckPointsTemp.first ?? 0)
|
|
|
finallyStuckPoints.append(a + b)
|
|
@@ -1534,20 +1538,20 @@ extension PQStuckPointEditerController {
|
|
|
speedSettingView.viewType = 3
|
|
|
|
|
|
// lastCyclesSelectIndex != -1 已经设置过循环次数 应该是手动设置的值
|
|
|
- if lastCyclesSelectIndex != -1 {
|
|
|
- if(lastCyclesSelectIndex != 0){
|
|
|
- for i in 0 ... lastCyclesSelectIndex - 1{
|
|
|
- var pointIndex = stuckPointsTemp.firstIndex(where: { (point) -> Bool in
|
|
|
- (point == (finallyStuckPoints.last ?? 0).truncatingRemainder(dividingBy: (stuckPointsTemp.last ?? 0)))
|
|
|
- })
|
|
|
- pointIndex = (pointIndex ?? 0) + 1
|
|
|
- for i in 0 ... selectedImageDataCount {
|
|
|
- let a = stuckPointsTemp[(i + Int(pointIndex ?? 0)) % stuckPointsTemp.count]
|
|
|
- let b = Float((i + Int(pointIndex ?? 0)) / stuckPointsTemp.count) * (stuckPointsTemp.first ?? 0)
|
|
|
- finallyStuckPoints.append(a + b)
|
|
|
- }
|
|
|
+ if lastCyclesSelectIndex != -1 {
|
|
|
+ //纯图片时 已经默认添加一次循环 所以要用lastCyclesSelectIndex - 1
|
|
|
+ for i in 0 ..< lastCyclesSelectIndex{
|
|
|
+ var pointIndex = stuckPointsTemp.firstIndex(where: { (point) -> Bool in
|
|
|
+ (point == (finallyStuckPoints.last ?? 0).truncatingRemainder(dividingBy: (stuckPointsTemp.last ?? 0)))
|
|
|
+ })
|
|
|
+ pointIndex = (pointIndex ?? 0) + 1
|
|
|
+ for i in 0 ... selectedImageDataCount {
|
|
|
+ let a = stuckPointsTemp[(i + Int(pointIndex ?? 0)) % stuckPointsTemp.count]
|
|
|
+ let b = Float((i + Int(pointIndex ?? 0)) / stuckPointsTemp.count) * (stuckPointsTemp.first ?? 0)
|
|
|
+ finallyStuckPoints.append(a + b)
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
|
|
|
} else {
|
|
|
lastCyclesSelectIndex = 0
|
|
@@ -1557,7 +1561,7 @@ extension PQStuckPointEditerController {
|
|
|
(point == (finallyStuckPoints.last ?? 0).truncatingRemainder(dividingBy: (stuckPointsTemp.last ?? 0)))
|
|
|
})
|
|
|
pointIndex = (pointIndex ?? 0) + 1
|
|
|
- for i in 0 ... selectedImageDataCount - 1 {
|
|
|
+ for i in 0 ... selectedImageDataCount {
|
|
|
let a = stuckPointsTemp[(i + Int(pointIndex ?? 0)) % stuckPointsTemp.count]
|
|
|
let b = Float((i + Int(pointIndex ?? 0)) / stuckPointsTemp.count) * (stuckPointsTemp.first ?? 0)
|
|
|
finallyStuckPoints.append(a + b)
|
|
@@ -1599,7 +1603,7 @@ extension PQStuckPointEditerController {
|
|
|
finallyUserAudioTime = Float(finallyStuckPoints.last ?? 0) + (Float(CMTimeGetSeconds(asset.duration)) - Float(lastSecondPoint))
|
|
|
}
|
|
|
|
|
|
- playeTimeRange = CMTimeRange(start: CMTime(value: CMTimeValue(Float(stuckPointMusicData?.startTime ?? 0) * Float(BASE_FILTER_TIMESCALE)), timescale: BASE_FILTER_TIMESCALE), end: CMTime(value: CMTimeValue((Float(finallyStuckPoints.last ?? 0)) * Float(BASE_FILTER_TIMESCALE)), timescale: BASE_FILTER_TIMESCALE))
|
|
|
+ playeTimeRange = CMTimeRange(start: CMTime(value: CMTimeValue(Float(finallyStuckPoints.first ?? 0) * Float(BASE_FILTER_TIMESCALE)), timescale: BASE_FILTER_TIMESCALE), end: CMTime(value: CMTimeValue((Float(finallyStuckPoints.last ?? 0)) * Float(BASE_FILTER_TIMESCALE)), timescale: BASE_FILTER_TIMESCALE))
|
|
|
|
|
|
for (index, usePoint) in finallyStuckPoints.enumerated() {
|
|
|
BFLog(message: "测试人员最后使用的卡点信息 \(index) : \(usePoint)")
|