Przeglądaj źródła

音量设置界面

jsonwang 3 lat temu
rodzic
commit
19cecd1461

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

@@ -145,6 +145,7 @@ class BFRecordScreenBaseManager : NSObject{
             }
             
             playBGMPlayer.configPlayer(audioPathURL: URL(fileURLWithPath: dele?.bgmModel?.wavFilePath ?? ""))
+            playBGMPlayer.player?.volume = Float(dele?.bgmModel?.volume ?? 100) / 100.0
             //原背景音乐可使用时长
             let bgmSeconds = ((dele?.bgmModel?.endCMTime ?? .zero) - (dele?.bgmModel?.startCMTime ?? .zero)).seconds
             //余数

+ 13 - 33
BFRecordScreenKit/Classes/RecordScreen/Controller/BFRecordScreenController.swift

@@ -299,8 +299,8 @@ public class BFRecordScreenController: BFBaseViewController {
                                          AVEncoderBitDepthHintKey: 16, // 位深
                                          AVEncoderAudioQualityKey: AVAudioQuality.medium.rawValue] // 音频质量
 
-    public var haveSpeakVolume: Float = 0.15
-    public var noSpeakVolume: Float = 0.30
+    //原素材音量
+    public var originalVolume: Float = 0.2
 
     // 录音管理器
     var recorderManager: BFVoiceRecordManager?
@@ -577,22 +577,17 @@ public class BFRecordScreenController: BFBaseViewController {
     lazy var audioSettingView: BFAudioSettingView = {
         let audioSettingView = BFAudioSettingView(frame: CGRect(x: 0, y: 0, width: cScreenWidth, height: cScreenHeigth))
         audioSettingView.isHidden = true
-        audioSettingView.haveSpeakSlider.valueIsInt = true
-        audioSettingView.noSpeakSlider.valueIsInt = true
-        audioSettingView.callBack = { [weak self] haveSpeak, noHaveSpeak in
+        audioSettingView.musicSlider.valueIsInt = true
+        audioSettingView.originalMSlider.valueIsInt = true
+        audioSettingView.callBack = { [weak self] originalVolume, musicVolume in
 //            BFLog(1, message: "haveSpeak is:\(haveSpeak),noHaveSpeak is:\(noHaveSpeak)")
             guard let wself = self else { return }
 
-            wself.haveSpeakVolume = haveSpeak / 100.0
-            wself.noSpeakVolume = noHaveSpeak / 100.0
+            wself.bgmModel?.volume = Int(musicVolume)
+            wself.originalVolume = originalVolume / 100.0
             if !wself.isNormalPlaying, !wself.isRecording {
-                if wself.deleteRecordBtn.isHidden {
-//                    wself.recordPlayer.volume = 0
-                    wself.assetPlayer.volume = wself.noSpeakVolume
-                } else {
-//                    wself.recordPlayer.volume = 1.0
-                    wself.assetPlayer.volume = wself.haveSpeakVolume
-                }
+                
+                wself.assetPlayer.volume = wself.originalVolume
             }
         }
 
@@ -2061,16 +2056,7 @@ public class BFRecordScreenController: BFBaseViewController {
     // MARK: - 音视频处理
 
     func playRecord(at currentT: CMTime, periodicTimeObserver: @escaping (_ time: CMTime, _ currentItem: AVPlayerItem) -> Void, didPlayToEndTime: @escaping (_ recordedInfo: (Int, PQVoiceModel)?, _ currentItem: AVPlayerItem?) -> Void, playFailed _: @escaping (_ recordedInfo: (Int, PQVoiceModel)?, _ currentItem: AVPlayerItem?) -> Void) {
-//        if currentPlayRecordIndex >= 0 {
-//            if assetPlayer.volume != haveSpeakVolume{
-//                assetPlayer.volume = haveSpeakVolume
-//            }
-//        }else{
-//            if assetPlayer.volume != noSpeakVolume {
-//                assetPlayer.volume = noSpeakVolume
-//            }
-//        }
-        
+ 
         //add by ak 使用的音频数据
         let  useVoiceStickers = itemModels[currItemModelIndex].getUsedVoices()
         
@@ -2078,12 +2064,8 @@ public class BFRecordScreenController: BFBaseViewController {
         if itemModels[currItemModelIndex].voiceStickers.first(where: { m in
             CMTimeCompare(m.startCMTime, currentT) <= 0 && CMTimeCompare(currentT, m.endCMTime) <= 0
         }) != nil {
-            if assetPlayer.volume != haveSpeakVolume {
-                assetPlayer.volume = haveSpeakVolume
-            }
-        } else {
-            if assetPlayer.volume != noSpeakVolume {
-                assetPlayer.volume = noSpeakVolume
+            if assetPlayer.volume != originalVolume {
+                assetPlayer.volume = originalVolume
             }
         }
 //        BFLog(1, message: "volume:\(assetPlayer.volume ?? -1)")
@@ -2133,7 +2115,7 @@ public class BFRecordScreenController: BFBaseViewController {
                 wself.hadPrepareToPlayRecord = false
                 wself.currentPlayRecordIndex = -1
 //                wself.recordPlayer.volume = 0
-//                wself.assetPlayer.volume = wself.noSpeakVolume
+//                wself.assetPlayer.volume = wself.musicVolume
                 BFLog(3, message: "播放结束")
                 didPlayToEndTime((shouldPlayRecordIndex, recordedAudio), newItem)
             }
@@ -2204,8 +2186,6 @@ public class BFRecordScreenController: BFBaseViewController {
                             
                             if finished, wself.isNormalPlaying {
                                 wself.recordPlayer.play()
-//                                wself.recordPlayer.volume = 1
-//                                wself.assetPlayer.volume = wself.haveSpeakVolume ?? 0
                                 BFLog(1, message: "录音开始播放 playing, \(second), \(CMTimeGetSeconds(wself.recordPlayer.currentItem?.duration ?? .zero)), \(wself.recordPlayer.currentItem?.currentTime().seconds ?? 0)")
                             }
                         })

+ 65 - 64
BFRecordScreenKit/Classes/RecordScreen/View/BFAudioSettingView.swift

@@ -10,7 +10,8 @@ import BFMediaKit
 import BFUIKit
 import Foundation
 
-typealias BFAudioSettingViewCallBack = (_ haveSpeak: Float, _ noHaveSpeak: Float) -> Void
+// 1,原声音量  2,音乐音量
+typealias BFAudioSettingViewCallBack = (_ originalVolume: Float, _ musicVolume: Float) -> Void
 
 class BFAudioSettingView: UIView {
     var callBack: BFAudioSettingViewCallBack?
@@ -18,75 +19,75 @@ class BFAudioSettingView: UIView {
     // 操作板背景
     let backView = UIView()
     // 标题
-    public lazy var haveSpeakLab: UILabel = {
-        let haveSpeakLab = UILabel()
-        haveSpeakLab.font = UIFont.boldSystemFont(ofSize: 16)
-        haveSpeakLab.textAlignment = .left
-        haveSpeakLab.text = "sound_record_ture".BFLocale
-        haveSpeakLab.textColor = .white
-        haveSpeakLab.backgroundColor = .clear
-        return haveSpeakLab
+    public lazy var originalMLab: UILabel = {
+        let originalMLab = UILabel()
+        originalMLab.font = UIFont.boldSystemFont(ofSize: 16)
+        originalMLab.textAlignment = .left
+        originalMLab.text = "原声"
+        originalMLab.textColor = .white
+        originalMLab.backgroundColor = .clear
+        return originalMLab
     }()
 
     // 有录音
-    lazy var haveSpeakSlider: BFUISlider = {
-        let haveSpeakSlider = BFUISlider()
+    lazy var originalMSlider: BFUISlider = {
+        let originalMSlider = BFUISlider()
         let thbImage = UIImage.moduleImage(named: BFConfig.shared.silderPinUsedImageName, moduleName: "BFFramework", isAssets: false)
-        haveSpeakSlider.setMinimumTrackImage(thbImage, for: .normal)
-        haveSpeakSlider.setMaximumTrackImage(thbImage, for: .normal)
-        haveSpeakSlider.setThumbImage(thbImage, for: .highlighted)
-        haveSpeakSlider.setThumbImage(thbImage, for: .normal)
-        haveSpeakSlider.maximumTrackTintColor = UIColor.hexColor(hexadecimal: "#E6E8E8")
-        haveSpeakSlider.minimumTrackTintColor = UIColor.hexColor(hexadecimal: BFConfig.shared.styleColor.rawValue)
-        haveSpeakSlider.tag = 10
-        haveSpeakSlider.unit = "%"
+        originalMSlider.setMinimumTrackImage(thbImage, for: .normal)
+        originalMSlider.setMaximumTrackImage(thbImage, for: .normal)
+        originalMSlider.setThumbImage(thbImage, for: .highlighted)
+        originalMSlider.setThumbImage(thbImage, for: .normal)
+        originalMSlider.maximumTrackTintColor = UIColor.hexColor(hexadecimal: "#E6E8E8")
+        originalMSlider.minimumTrackTintColor = UIColor.hexColor(hexadecimal: BFConfig.shared.styleColor.rawValue)
+        originalMSlider.tag = 10
+        originalMSlider.unit = "%"
 //        speechSlidView.addTarget(self, action: #selector(sliderTouchEnded(sender:)), for: .touchUpInside)
-        haveSpeakSlider.maximumValue = 100
-        haveSpeakSlider.minimumValue = 0
-        haveSpeakSlider.isMovePoint = false
-        haveSpeakSlider.valueTextColor = UIColor.hexColor(hexadecimal: BFConfig.shared.styleColor.rawValue)
-        haveSpeakSlider.value = 15
-        haveSpeakSlider.valueChangedHandle = { [weak self] sender in
+        originalMSlider.maximumValue = 100
+        originalMSlider.minimumValue = 0
+        originalMSlider.isMovePoint = false
+        originalMSlider.valueTextColor = UIColor.hexColor(hexadecimal: BFConfig.shared.styleColor.rawValue)
+        originalMSlider.value = 20
+        originalMSlider.valueChangedHandle = { [weak self] sender in
             if self?.callBack != nil {
-                self?.callBack!(sender.value, self?.noSpeakSlider.value ?? 0)
+                self?.callBack!(sender.value, self?.musicSlider.value ?? 0)
             }
         }
-        return haveSpeakSlider
+        return originalMSlider
     }()
 
     // 标题
-    public lazy var noSpeakLab: UILabel = {
-        let noSpeakLab = UILabel()
-        noSpeakLab.font = UIFont.boldSystemFont(ofSize: 16)
-        noSpeakLab.textAlignment = .left
-        noSpeakLab.text = "sound_record_false".BFLocale
-        noSpeakLab.textColor = .white
-        return noSpeakLab
+    public lazy var musicLab: UILabel = {
+        let musicLab = UILabel()
+        musicLab.font = UIFont.boldSystemFont(ofSize: 16)
+        musicLab.textAlignment = .left
+        musicLab.text = "音乐"
+        musicLab.textColor = .white
+        return musicLab
     }()
 
-    lazy var noSpeakSlider: BFUISlider = {
-        let noSpeakSlider = BFUISlider()
+    lazy var musicSlider: BFUISlider = {
+        let musicSlider = BFUISlider()
         let thbImage = UIImage.moduleImage(named: BFConfig.shared.silderPinUsedImageName, moduleName: "BFFramework", isAssets: false)
-        noSpeakSlider.setMinimumTrackImage(thbImage, for: .normal)
-        noSpeakSlider.setMaximumTrackImage(thbImage, for: .normal)
-        noSpeakSlider.setThumbImage(thbImage, for: .highlighted)
-        noSpeakSlider.setThumbImage(thbImage, for: .normal)
-        noSpeakSlider.maximumTrackTintColor = UIColor.hexColor(hexadecimal: "#E6E8E8")
-        noSpeakSlider.minimumTrackTintColor = UIColor.hexColor(hexadecimal: BFConfig.shared.styleColor.rawValue)
-        noSpeakSlider.tag = 20
-        noSpeakSlider.isMovePoint = false
+        musicSlider.setMinimumTrackImage(thbImage, for: .normal)
+        musicSlider.setMaximumTrackImage(thbImage, for: .normal)
+        musicSlider.setThumbImage(thbImage, for: .highlighted)
+        musicSlider.setThumbImage(thbImage, for: .normal)
+        musicSlider.maximumTrackTintColor = UIColor.hexColor(hexadecimal: "#E6E8E8")
+        musicSlider.minimumTrackTintColor = UIColor.hexColor(hexadecimal: BFConfig.shared.styleColor.rawValue)
+        musicSlider.tag = 20
+        musicSlider.isMovePoint = false
 //        speechSlidView.addTarget(self, action: #selector(sliderTouchEnded(sender:)), for: .touchUpInside)
-        noSpeakSlider.maximumValue = 100
-        noSpeakSlider.minimumValue = 0
-        noSpeakSlider.unit = "%"
-        noSpeakSlider.valueTextColor = UIColor.hexColor(hexadecimal: BFConfig.shared.styleColor.rawValue)
-        noSpeakSlider.value = 30
-        noSpeakSlider.valueChangedHandle = { [weak self] sender in
+        musicSlider.maximumValue = 100
+        musicSlider.minimumValue = 0
+        musicSlider.unit = "%"
+        musicSlider.valueTextColor = UIColor.hexColor(hexadecimal: BFConfig.shared.styleColor.rawValue)
+        musicSlider.value = 20
+        musicSlider.valueChangedHandle = { [weak self] sender in
             if self?.callBack != nil {
-                self?.callBack!(self?.haveSpeakSlider.value ?? 0, sender.value)
+                self?.callBack!(self?.originalMSlider.value ?? 0, sender.value)
             }
         }
-        return noSpeakSlider
+        return musicSlider
     }()
 
     override init(frame: CGRect) {
@@ -104,31 +105,31 @@ class BFAudioSettingView: UIView {
             make.height.equalTo(220)
         }
 
-        backView.addSubview(haveSpeakSlider)
-        backView.addSubview(noSpeakSlider)
-        backView.addSubview(haveSpeakLab)
-        backView.addSubview(noSpeakLab)
+        backView.addSubview(originalMSlider)
+        backView.addSubview(musicSlider)
+        backView.addSubview(originalMLab)
+        backView.addSubview(musicLab)
 
-        haveSpeakLab.snp.makeConstraints { make in
+        originalMLab.snp.makeConstraints { make in
             make.left.equalToSuperview().offset(16)
             make.right.equalToSuperview().offset(-16)
             make.top.equalToSuperview().offset(25)
         }
-        haveSpeakSlider.snp.makeConstraints { make in
+        originalMSlider.snp.makeConstraints { make in
             make.left.equalToSuperview().offset(16)
             make.right.equalToSuperview().offset(-16)
-            make.top.equalTo(haveSpeakLab).offset(24)
+            make.top.equalTo(originalMLab).offset(24)
         }
 
-        noSpeakLab.snp.makeConstraints { make in
+        musicLab.snp.makeConstraints { make in
             make.left.equalToSuperview().offset(16)
             make.right.equalToSuperview().offset(-16)
-            make.top.equalTo(haveSpeakSlider).offset(42)
+            make.top.equalTo(originalMSlider).offset(42)
         }
-        noSpeakSlider.snp.makeConstraints { make in
+        musicSlider.snp.makeConstraints { make in
             make.left.equalToSuperview().offset(16)
             make.right.equalToSuperview().offset(-16)
-            make.top.equalTo(noSpeakLab).offset(24)
+            make.top.equalTo(musicLab).offset(24)
         }
     }
 
@@ -145,7 +146,7 @@ class BFAudioSettingView: UIView {
         if !backView.bounds.contains(tap.location(in: backView)) {
             isHidden = true
             if callBack != nil {
-                callBack!(haveSpeakSlider.value, noSpeakSlider.value)
+                callBack!(originalMSlider.value, musicSlider.value)
             }
         }
     }