Ver código fonte

合成时按剪切的时间点循环

harry 3 anos atrás
pai
commit
3a122b2d82

+ 1 - 0
BFRecordScreenKit/Classes/BFRecordExport.swift

@@ -569,6 +569,7 @@ extension BFRecordExport {
         //add by ak  处理背景音乐 如果选择了背景音乐添加背景音乐音轨
         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)
             if bgmParameters.count > 0 {
                 tempParameters += bgmParameters

+ 2 - 1
BFRecordScreenKit/Classes/RecordScreen/Controller/BFMusicManager.swift

@@ -88,7 +88,8 @@ class BFMusicManager {
         }
         NotificationCenter.default.addObserver(forName: .AVPlayerItemDidPlayToEndTime, object: player.currentItem, queue: .main) {[weak self] notice in
             guard let wself = self else { return }
-            wself.player.currentItem?.seek(to: .zero, completionHandler: nil)
+            
+            wself.player.currentItem?.seek(to: wself.player.currentItem?.reversePlaybackEndTime ?? .zero, completionHandler: nil)
             wself.play()
         }
     }

+ 4 - 0
BFRecordScreenKit/Classes/RecordScreen/Controller/BFMusicSearchController.swift

@@ -100,6 +100,10 @@ class BFMusicSearchController: BFBaseViewController {
         super.viewDidAppear(animated)
         
         searchTF.becomeFirstResponder()
+    }
+    
+    override func viewDidLayoutSubviews() {
+        super.viewDidLayoutSubviews()
         uiForChangeVolume()
     }
     

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

@@ -2374,11 +2374,13 @@ public class BFRecordScreenController: BFBaseViewController {
             rscurrentManager.currentAssetProgress = .zero
         }
 
+        bgmPlayer.player.currentItem?.reversePlaybackEndTime = CMTime(seconds: bgmModel?.currentTime ?? 0.0, preferredTimescale: 1000)
         bgmPlayer.player.volume = Float(choseMusicPanel.musicVolume) / 100.0
         assetPlayer.volume = originalVolume
         
+        
         if currItemModelIndex == 0 && currentAssetProgress == .zero{
-            bgmPlayer.player.seek(to: .zero) {[weak self] _ in
+            bgmPlayer.player.seek(to: bgmPlayer.player.currentItem?.reversePlaybackEndTime ?? .zero ) {[weak self] _ in
                 self?.bgmPlayer.play()
             }
         }else{