| 
					
				 | 
			
			
				@@ -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() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 |