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