| 
														
															@@ -1408,26 +1408,33 @@ public class BFRecordScreenController: BFBaseViewController { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             hadPrepareToPlayRecord = false 
														 | 
														
														 | 
														
															             hadPrepareToPlayRecord = false 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             BFLog(1, message: "录音播放器初始化(有时候不准)") 
														 | 
														
														 | 
														
															             BFLog(1, message: "录音播放器初始化(有时候不准)") 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             BFLog(3, message: "重置播放index-\(#function) = \(currentPlayRecordIndex)") 
														 | 
														
														 | 
														
															             BFLog(3, message: "重置播放index-\(#function) = \(currentPlayRecordIndex)") 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            NotificationCenter.default.addObserver(forName: .AVPlayerItemDidPlayToEndTime, object: newItem, queue: .main) { [weak self, weak recordedAudio] _ in 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                self?.hadPrepareToPlayRecord = false 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                self?.currentPlayRecordIndex = -1 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                self?.recordPlayer?.volume = 0 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                self?.assetPlayer?.volume = self?.noSpeakVolume ?? 0 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                didPlayToEndTime((shouldPlayRecordIndex, recordedAudio) as? (Int, PQVoiceModel), newItem) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            NotificationCenter.default.addObserver(forName: .AVPlayerItemDidPlayToEndTime, object: newItem, queue: .main) { [weak self] _ in 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                guard let sself = self else { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                    return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                sself.hadPrepareToPlayRecord = false 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                sself.currentPlayRecordIndex = -1 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                sself.recordPlayer?.volume = 0 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                sself.assetPlayer?.volume = sself.noSpeakVolume 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                didPlayToEndTime((shouldPlayRecordIndex, recordedAudio), newItem) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             } 
														 | 
														
														 | 
														
															             } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             avplayerTimeObserver?.invalidate() 
														 | 
														
														 | 
														
															             avplayerTimeObserver?.invalidate() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            avplayerTimeObserver = recordPlayer?.addPeriodicTimeObserver(forInterval: CMTime(value: 1, timescale: 1000), queue: DispatchQueue.global()) { [weak self, weak recordPlayer] time in 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                BFLog(3, message: "当前播放---\(time),\(time.seconds),\(recordPlayer?.currentItem?.currentTime().seconds ?? 0),\(recordPlayer?.currentItem?.duration.seconds ?? 0)") 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                if CMTimeGetSeconds(self?.currenStartPlayTime ?? CMTime.zero) <= 0 { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                    BFLog(message: "重新更新开始播放进度\(#function)-\(self?.currenStartPlayTime.seconds ?? 0)") 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                    self?.currenStartPlayTime = time 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            avplayerTimeObserver = recordPlayer?.addPeriodicTimeObserver(forInterval: CMTime(value: 1, timescale: 1000), queue: DispatchQueue.global()) { [weak self, weak recordPlayer,weak assetPlayer] time in 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                guard let sself = self,let rPlay = recordPlayer,let aPlay = assetPlayer else { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                    return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                BFLog(3, message: "当前播放---\(time),\(time.seconds),\(rPlay.currentItem?.currentTime().seconds ?? 0),\(rPlay.currentItem?.duration.seconds ?? 0)") 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                if CMTimeGetSeconds(sself.currenStartPlayTime) <= 0 { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                    BFLog(message: "重新更新开始播放进度\(#function)-\(sself.currenStartPlayTime.seconds)") 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                    sself.currenStartPlayTime = time 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 } 
														 | 
														
														 | 
														
															                 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                let progressTime = CMTime(seconds: CMTimeGetSeconds(time) - CMTimeGetSeconds(self?.currenStartPlayTime ?? CMTime.zero), preferredTimescale: 1000) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                let progressTime = CMTime(seconds: CMTimeGetSeconds(time) - CMTimeGetSeconds(sself.currenStartPlayTime), preferredTimescale: 1000) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 BFLog(message: "progressTime进度\(#function)-\(progressTime.seconds)") 
														 | 
														
														 | 
														
															                 BFLog(message: "progressTime进度\(#function)-\(progressTime.seconds)") 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 periodicTimeObserver(progressTime, newItem) 
														 | 
														
														 | 
														
															                 periodicTimeObserver(progressTime, newItem) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                if (recordPlayer?.currentItem?.currentTime().seconds ?? 0) > (recordPlayer?.currentItem?.duration.seconds ?? 0) - 0.1 { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                    recordPlayer?.volume = 0 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                    self?.assetPlayer?.volume = self?.noSpeakVolume ?? 0 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                if (rPlay.currentItem?.currentTime().seconds ?? 0) > (rPlay.currentItem?.duration.seconds ?? 0) - 0.1 { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                    rPlay.volume = 0 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                    aPlay.volume = sself.noSpeakVolume 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                    didPlayToEndTime((shouldPlayRecordIndex, recordedAudio), newItem) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 } 
														 | 
														
														 | 
														
															                 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             } as? NSKeyValueObservation 
														 | 
														
														 | 
														
															             } as? NSKeyValueObservation 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         } 
														 | 
														
														 | 
														
															         } 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -1598,11 +1605,11 @@ public class BFRecordScreenController: BFBaseViewController { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 if index == 0 { 
														 | 
														
														 | 
														
															                 if index == 0 { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                     if asset.mediaType == .video { 
														 | 
														
														 | 
														
															                     if asset.mediaType == .video { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                         itemModel.fetchAVUrlAssetCallBack = { [weak self, weak itemModel] in 
														 | 
														
														 | 
														
															                         itemModel.fetchAVUrlAssetCallBack = { [weak self, weak itemModel] in 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                            //                            self?.export(avsss:uralss) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                             DispatchQueue.main.async { [weak self, weak itemModel] in 
														 | 
														
														 | 
														
															                             DispatchQueue.main.async { [weak self, weak itemModel] in 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                                 self?.progressThumV.recordItem = itemModel 
														 | 
														
														 | 
														
															                                 self?.progressThumV.recordItem = itemModel 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                                 self?.progressThumV.isHidden = false 
														 | 
														
														 | 
														
															                                 self?.progressThumV.isHidden = false 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                                 self?.recordBtn.isEnabled = true 
														 | 
														
														 | 
														
															                                 self?.recordBtn.isEnabled = true 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                                self?.reloadMaterial() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                             } 
														 | 
														
														 | 
														
															                             } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                         } 
														 | 
														
														 | 
														
															                         } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                     } else { 
														 | 
														
														 | 
														
															                     } else { 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -1648,14 +1655,17 @@ public class BFRecordScreenController: BFBaseViewController { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } 
														 | 
														
														 | 
														
															     } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															     func setAudioPlay(item: AVPlayerItem?) { 
														 | 
														
														 | 
														
															     func setAudioPlay(item: AVPlayerItem?) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        BFLog(message: "设置播放器item:\(String(describing: item))") 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         guard let item = item else { 
														 | 
														
														 | 
														
															         guard let item = item else { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             return 
														 | 
														
														 | 
														
															             return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         } 
														 | 
														
														 | 
														
															         } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         if let playItem = assetPlayer?.currentItem { 
														 | 
														
														 | 
														
															         if let playItem = assetPlayer?.currentItem { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             NotificationCenter.default.removeObserver(self, name: .AVPlayerItemDidPlayToEndTime, object: playItem) 
														 | 
														
														 | 
														
															             NotificationCenter.default.removeObserver(self, name: .AVPlayerItemDidPlayToEndTime, object: playItem) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             assetPlayer?.replaceCurrentItem(with: item) 
														 | 
														
														 | 
														
															             assetPlayer?.replaceCurrentItem(with: item) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            BFLog(message: "设置播放器playItem-替换:\(String(describing: item))") 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         } else { 
														 | 
														
														 | 
														
															         } else { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             assetPlayer = AVPlayer(playerItem: item) 
														 | 
														
														 | 
														
															             assetPlayer = AVPlayer(playerItem: item) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            BFLog(message: "设置播放器item-替换:\(String(describing: item))") 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             assetPlayer?.volume = noSpeakVolume 
														 | 
														
														 | 
														
															             assetPlayer?.volume = noSpeakVolume 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             avplayerTimeObserver?.invalidate() 
														 | 
														
														 | 
														
															             avplayerTimeObserver?.invalidate() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             avplayerTimeObserver = assetPlayer?.addPeriodicTimeObserver(forInterval: CMTime(value: 1, timescale: 1000), queue: DispatchQueue.global()) { [weak self] time in 
														 | 
														
														 | 
														
															             avplayerTimeObserver = assetPlayer?.addPeriodicTimeObserver(forInterval: CMTime(value: 1, timescale: 1000), queue: DispatchQueue.global()) { [weak self] time in 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -1820,7 +1830,9 @@ public class BFRecordScreenController: BFBaseViewController { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     // 修正视频旋转方向,因为自己录制的竖屏视频会预览为横屏 
														 | 
														
														 | 
														
															     // 修正视频旋转方向,因为自己录制的竖屏视频会预览为横屏 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     func reloadMaterial() { 
														 | 
														
														 | 
														
															     func reloadMaterial() { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         let recordItem = itemModels[currItemModelIndex] 
														 | 
														
														 | 
														
															         let recordItem = itemModels[currItemModelIndex] 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        BFLog(message: "设置播放器reloadMaterial:\(recordItem)") 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         if let vasset = recordItem.videoAsset, let cell: BFImageCoverViewCell = collectionView.cellForItem(at: IndexPath(item: currItemModelIndex, section: 0)) as? BFImageCoverViewCell { 
														 | 
														
														 | 
														
															         if let vasset = recordItem.videoAsset, let cell: BFImageCoverViewCell = collectionView.cellForItem(at: IndexPath(item: currItemModelIndex, section: 0)) as? BFImageCoverViewCell { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            BFLog(message: "设置播放器reloadMaterial-开始:\(recordItem)") 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             setVideoPlay(item: recordItem.playItem, imageView: cell.playView) 
														 | 
														
														 | 
														
															             setVideoPlay(item: recordItem.playItem, imageView: cell.playView) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             setAudioPlay(item: recordItem.playItem) 
														 | 
														
														 | 
														
															             setAudioPlay(item: recordItem.playItem) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             let degress = degressFromVideoFile(asset: vasset) 
														 | 
														
														 | 
														
															             let degress = degressFromVideoFile(asset: vasset) 
														 |