|
@@ -108,6 +108,7 @@ class PQStuckPointEditerController: PQBaseViewController {
|
|
|
let seekTimeRange: CMTimeRange = CMTimeRange(start: CMTime(value: CMTimeValue(Int64(newBeginSconds)), timescale: 600), end:
|
|
|
CMTime(value: CMTimeValue(Int64(endTime * 600)), timescale: 600))
|
|
|
BFLog(message: "修改的开始 \(CMTimeGetSeconds(seekTimeRange.start)) 结束 \(CMTimeGetSeconds(seekTimeRange.end))")
|
|
|
+ self?.playerView.configCache(beginTime: CMTimeGetSeconds(seekTimeRange.start))
|
|
|
self?.playerView.play(pauseFirstFrame: false, playeTimeRange: seekTimeRange)
|
|
|
|
|
|
} else {
|
|
@@ -403,7 +404,7 @@ class PQStuckPointEditerController: PQBaseViewController {
|
|
|
|
|
|
// 5,开始播放
|
|
|
self.playerView.isLoop = false
|
|
|
- self.playerView.showProgressLab = false
|
|
|
+ self.playerView.showProgressLab = true
|
|
|
|
|
|
// 初始化音频的开始和结束时间
|
|
|
BFLog(message: "播放的器 开始\(String(describing: CMTimeGetSeconds(self.playeTimeRange.start))) 结束 \(String(describing: CMTimeGetSeconds(self.playeTimeRange.end)))")
|
|
@@ -464,8 +465,8 @@ extension PQStuckPointEditerController {
|
|
|
3, 视频素材a1需要切分的个数clipNum = max (round (kongduan * a1 / L) , 1)
|
|
|
*/
|
|
|
// 要补的空位数
|
|
|
- let kongduan: Int = Int(stuckPoints.count) - 1 - Int(section.sectionTimeline!.visionTrack?.getEnableVisionTrackMaterials().count ?? 0)
|
|
|
-
|
|
|
+ let kongduan: Int = Int(stuckPoints.count) - Int(section.sectionTimeline!.visionTrack?.getEnableVisionTrackMaterials().count ?? 0)
|
|
|
+
|
|
|
// 所有视频总时长
|
|
|
var videoTotalDuration: Float64 = 0.0
|
|
|
for video in section.sectionTimeline!.visionTrack!.getEnableVisionTrackMaterials(type: "video") {
|
|
@@ -483,8 +484,7 @@ extension PQStuckPointEditerController {
|
|
|
let clipNum = Int(max(round(Double(kongduan) * CMTimeGetSeconds(asset.duration) / videoTotalDuration), 1))
|
|
|
sticker.duration = CMTimeGetSeconds(asset.duration)
|
|
|
BFLog(message: "单个视频\(sticker.locationPath)时长::\(CMTimeGetSeconds(asset.duration)) ,clipNum is:\(clipNum)")
|
|
|
-
|
|
|
- for clipindex in 0 ... clipNum {
|
|
|
+ for clipindex in 0 ... clipNum - 1 {
|
|
|
// deep copy sticker model 防止只有一个对象
|
|
|
let stickerjson = sticker.toJSONString(prettyPrint: false)
|
|
|
let deepCopySticker = Mapper<PQEditVisionTrackMaterialsModel>().map(JSONString: stickerjson!)
|
|
@@ -614,25 +614,38 @@ extension PQStuckPointEditerController {
|
|
|
// 第二种情况:有视频要进行分割
|
|
|
let clipFilters = clipVideoMerage(section: section, stuckPoints: stuckPoints)
|
|
|
for (index, point) in stuckPoints.enumerated() {
|
|
|
+ BFLog(message: "aaaaaindexindeindexxindexindexindex \(index)")
|
|
|
if index + 1 < stuckPoints.count, index < clipFilters.count {
|
|
|
+ BFLog(message: "bbbbbindexindeindexxindexindexindex \(index)")
|
|
|
let sticker: PQEditVisionTrackMaterialsModel = clipFilters[index]
|
|
|
sticker.timelineIn = Float64(stuckPoints[index])
|
|
|
- sticker.timelineOut = Float64(stuckPoints[index + 1])
|
|
|
-
|
|
|
- // 卡点的时间 > in out 值
|
|
|
+ // TODO 不是最好方案
|
|
|
+ sticker.timelineOut = Float64(stuckPoints[index + 1]) + 1
|
|
|
+ // 卡点的时间 > in out 值 这里就会出现鬼畜效果
|
|
|
let timelineInterval = sticker.timelineOut - sticker.timelineIn
|
|
|
let inOutInterval = sticker.out - sticker.model_in
|
|
|
if timelineInterval > inOutInterval {
|
|
|
- sticker.out = sticker.model_in + timelineInterval
|
|
|
+ BFLog(message: "实际要显示卡点时长\(timelineInterval) 素材裁剪时长:\(inOutInterval)")
|
|
|
+ sticker.out = sticker.model_in + timelineInterval + 0.01
|
|
|
+
|
|
|
+ //下面只是 LOG 方便查问题
|
|
|
+ let stickerInOut = sticker.out - sticker.model_in
|
|
|
+ let stickerTimelineInOut = sticker.timelineOut - sticker.timelineIn
|
|
|
+ if(stickerInOut != stickerTimelineInOut){
|
|
|
+ BFLog(message: "sticker.timelineIn \(sticker.timelineIn) stickerTimelineInOut is\(stickerTimelineInOut) stickerInOut is\(stickerInOut) 相差\(stickerTimelineInOut - stickerInOut)")
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
// out > 素材的总时长in out 进行前移操作
|
|
|
let offsetAssetDuration = sticker.out - sticker.duration
|
|
|
if offsetAssetDuration > 0 {
|
|
|
- sticker.model_in = sticker.model_in - offsetAssetDuration
|
|
|
+ sticker.model_in = sticker.model_in - offsetAssetDuration - 0.01
|
|
|
sticker.out = sticker.out - offsetAssetDuration
|
|
|
}
|
|
|
|
|
|
- BFLog(message: "分割后 创建 filter start :\(sticker.timelineIn) end :\(sticker.timelineOut) type is \(sticker.type)")
|
|
|
+ BFLog(message: "index is \(index)分割后 创建 filter timelineIn :\(sticker.timelineIn) timelineOut :\(sticker.timelineOut) in :\(sticker.model_in) out:\(sticker.out) type is \(sticker.type) 显示总时长为:\(sticker.timelineOut - sticker.timelineIn) 裁剪总时长\(sticker.out - sticker.model_in)")
|
|
|
+
|
|
|
stickers.append(sticker)
|
|
|
}
|
|
|
}
|