|
@@ -21,6 +21,14 @@ public class PQMovieInput: ImageSource {
|
|
|
|
|
|
var avPlayer:AVPlayer?
|
|
|
var indexRage = 0
|
|
|
+ var orginStuckRange : CMTimeRange?{
|
|
|
+ didSet{
|
|
|
+ if orginStuckRange != nil {
|
|
|
+ self.musicPlayRanges = [orginStuckRange!]
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 应存储多个 播放片断的时间座标,目前就只需要存放音乐本身的卡点座标就可以
|
|
|
var musicPlayRanges:[CMTimeRange]?
|
|
|
|
|
|
public weak var delegate: PQMovieInputDelegate?
|
|
@@ -187,11 +195,12 @@ public class PQMovieInput: ImageSource {
|
|
|
self.movieFramebuffer?.unlock()
|
|
|
self.cancel()
|
|
|
|
|
|
- PQNotification.removeObserver(avPlayer?.currentItem)
|
|
|
+ PQNotification.removeObserver(avPlayer?.currentItem as Any)
|
|
|
avPlayer?.replaceCurrentItem(with: nil)
|
|
|
self.videoInputStatusObserver?.invalidate()
|
|
|
self.audioInputStatusObserver?.invalidate()
|
|
|
self.avPlayerTimeObserver?.invalidate()
|
|
|
+
|
|
|
}
|
|
|
|
|
|
// MARK: -
|
|
@@ -679,10 +688,6 @@ extension PQMovieInput {
|
|
|
// 当前版本设置无限大
|
|
|
let loopCount = 10000 // ranges.count
|
|
|
|
|
|
- playerItem.forwardPlaybackEndTime = range?.end ?? CMTime(value: 0, timescale: 1404000)
|
|
|
- playerItem.reversePlaybackEndTime = range?.start ?? CMTime(value: 2000, timescale: 100)
|
|
|
- playerItem.seek(to: playerItem.reversePlaybackEndTime)
|
|
|
-
|
|
|
PQNotification.addObserver(forName: .AVPlayerItemDidPlayToEndTime, object: avPlayer?.currentItem, queue: .main) { [weak self] notify in
|
|
|
guard let strongSelf = self else {
|
|
|
return
|
|
@@ -692,13 +697,11 @@ extension PQMovieInput {
|
|
|
}
|
|
|
strongSelf.indexRage += 1
|
|
|
|
|
|
- if strongSelf.indexRage < loopCount{
|
|
|
+ if strongSelf.indexRage < loopCount && strongSelf.isPlay {
|
|
|
|
|
|
// let range = ranges[strongSelf.indexRage]
|
|
|
-
|
|
|
- playerItem.forwardPlaybackEndTime = range!.end
|
|
|
- playerItem.reversePlaybackEndTime = range!.start
|
|
|
-// HHZPrint("curr: start ********************\(CMTimeGetSeconds(range!.start)) - \(playerItem.reversePlaybackEndTime) - \(playerItem.forwardPlaybackEndTime)")
|
|
|
+// playerItem.forwardPlaybackEndTime = range!.end
|
|
|
+// playerItem.reversePlaybackEndTime = range!.start
|
|
|
strongSelf.avPlayer!.seek(to: playerItem.reversePlaybackEndTime) { isSuccess in
|
|
|
playerItem.seek(to: playerItem.reversePlaybackEndTime) { isSuccess in
|
|
|
strongSelf.avPlayer!.play()
|
|
@@ -717,7 +720,10 @@ extension PQMovieInput {
|
|
|
|
|
|
func avplayerMusic(){
|
|
|
let playerItem = self.avPlayer?.currentItem
|
|
|
- playerItem!.seek(to: playerItem!.reversePlaybackEndTime) { [weak self]_ in
|
|
|
+ let rangeee = CMTimeRangeMake(start: playeTimeRange.start, duration: self.musicPlayRanges?.first?.duration ?? CMTime(value: 1200, timescale: 40))
|
|
|
+ playerItem?.forwardPlaybackEndTime = rangeee.end
|
|
|
+ playerItem?.reversePlaybackEndTime = rangeee.start
|
|
|
+ playerItem?.seek(to: playerItem!.reversePlaybackEndTime) { [weak self]_ in
|
|
|
self?.avPlayer?.play()
|
|
|
}
|
|
|
}
|