harry 3 gadi atpakaļ
vecāks
revīzija
54e75c8ed8

+ 3 - 3
BFRecordScreenKit/Classes/BFRecordExport.swift

@@ -447,7 +447,7 @@ public class BFRecordExport {
 
         // 有录音操作或者多个视频,就会进入合成步骤,否则就是一个没有处理的素材,直接导出就行了
         if voiceCount > 0 || videoStickers.count > 1 {
-            let (audioMix, composition) = mergeAudio(videoStickers: videoStickers, audios: voiceList, synthesisAll: synthesisAll)
+            let (audioMix, composition) = mergeAudio(videoStickers: videoStickers, audios: voiceList, synthesisAll: synthesisAll, totalDur: totalDuration)
 
             let outputSize: CGSize = CGSize(width: 1080, height: Int(1080 * CGFloat(UIScreen.main.bounds.size.height / UIScreen.main.bounds.size.width)))
             BFLog(message: "输出视频大小:\(outputSize)")
@@ -543,7 +543,7 @@ public class BFRecordExport {
 }
 
 extension BFRecordExport {
-    func mergeAudio(videoStickers: [PQEditVisionTrackMaterialsModel], audios: [PQEditVisionTrackMaterialsModel]?, synthesisAll: Bool) -> (AVMutableAudioMix, AVMutableComposition) {
+    func mergeAudio(videoStickers: [PQEditVisionTrackMaterialsModel], audios: [PQEditVisionTrackMaterialsModel]?, synthesisAll: Bool, totalDur:Double) -> (AVMutableAudioMix, AVMutableComposition) {
         let composition = AVMutableComposition()
         let audioMix = AVMutableAudioMix()
         var tempParameters = [AVMutableAudioMixInputParameters]()
@@ -570,7 +570,7 @@ extension BFRecordExport {
         BFLog(message: "合成视频总时长:\(composition.duration.seconds)")
         if bgmModel != nil, bgmModel?.wavFilePath != nil {
             bgmModel?.startTime = bgmModel?.currentTime ?? 0.0
-            let bgmParameters = PQPlayerViewModel.dealWithBGMTrack(bgmData: bgmModel!, totalDuration: composition.duration.seconds, composition: composition)
+            let bgmParameters = PQPlayerViewModel.dealWithBGMTrack(bgmData: bgmModel!, totalDuration: totalDur, composition: composition)
             if bgmParameters.count > 0 {
                 tempParameters += bgmParameters
             }

+ 1 - 0
BFRecordScreenKit/Classes/RecordScreen/Controller/BFRecordScreenBaseManager.swift

@@ -78,6 +78,7 @@ class BFRecordScreenBaseManager : NSObject{
         
         // add by ak 暂停时 isPlaying 设置为 false
         isPlaying = false
+        
     }
     
     func changeRecordMaterail(){

+ 1 - 0
BFRecordScreenKit/Classes/RecordScreen/Controller/BFRecordScreenCameraManager.swift

@@ -527,6 +527,7 @@ class BFRecordScreenCameraManager: BFRecordScreenBaseManager {
         super.pause()
         dispatchWorkItemIsCancel = true
         assetPlayer?.pause()
+        recordPlayer?.pause()
         playingVoiceMode = nil
 
         timerr?.invalidate()

+ 8 - 3
BFRecordScreenKit/Classes/RecordScreen/Controller/BFRecordScreenController.swift

@@ -135,6 +135,11 @@ public class BFRecordScreenController: BFBaseViewController {
             let itemModel = itemModels[currItemModelIndex]
             currMediaType = itemModel.mediaType ?? .Video
             isEndPlay = false
+            
+            assetPlayer.pause()
+            assetPlayer.replaceCurrentItem(with: nil)
+            recordPlayer.pause()
+            recordPlayer.replaceCurrentItem(with: nil)
 
             switch itemModel.mediaType {
             case .Image:
@@ -2034,7 +2039,7 @@ public class BFRecordScreenController: BFBaseViewController {
             recordBtn.isHidden = isEndPlay ? false : su
         }
         
-        deleteRecordBtn.isHidden = isEndPlay ? true : !(recordBtn.isHidden)
+        deleteRecordBtn.isHidden = isEndPlay ? true : ((isRecording || isNormalPlaying) ? true : !(recordBtn.isHidden))
     }
     
     func recordFinished(_ isFinished:Bool) {
@@ -2249,7 +2254,7 @@ public class BFRecordScreenController: BFBaseViewController {
         }
         if currMediaType == .Video {
             videoMaterialRecordPlay(at: currentT, shouldPlayRecordIndex: shouldPlayRecordIndex, recordedAudio: recordedAudio)
-        } else {
+        } else if currMediaType == .Image {
             imageMaterialRecordPlay(at: currentT, shouldPlayRecordIndex: shouldPlayRecordIndex, recordedAudio: recordedAudio)
         }
         BFLog(1, message: "应当播放:\(shouldPlayRecordIndex), 当前播放:\(currentPlayRecordIndex)")
@@ -2883,9 +2888,9 @@ extension BFRecordScreenController: UICollectionViewDelegate, UICollectionViewDa
         BFLog(1, message: "endScrollItem")
         rscurrentManager.playBGMPlayer.pause()
         // 切换素材时先把录制状态切为不可用,延迟可点,避免在缩略图未加载出来时即刻录制
+        pause()
         currItemModelIndex = page
         // 暂停
-        pause()
         //add by ak  BFRecordScreenCameraManager 中的播放器也要暂停那里的进度回调也会刷新 UI 导致出现闪烁 BUG
         rscmanager.pause()