AVAudioEngine:在歌曲上添加低通滤波器不起作用

AVAudioEngine: adding low pass filter on a song not working

提问人:Arpit B Parekh 提问时间:7/25/2023 最后编辑:Arpit B Parekh 更新时间:7/26/2023 访问量:34

问:

在我的 iOS 应用程序中, 我需要滤波低通和高通频率 为此,我正在尝试从我的捆绑包中播放简单的歌曲,并使用和AVAudioengineAVAudioUnitEQ

下面是代码,

 override init() {
        super.init()
        do {
            if #available(iOS 11.0, *) {
                try audioSession.setCategory(.playback)
            } else {
                try audioSession.setCategory(.playback)
            }
        } catch {
            print("Failed to set audio session category. Error: \(error)")
        }
        
        engine = AVAudioEngine()
        playerNode = AVAudioPlayerNode()
        

                do {
            let filePath: String = Bundle.main.path(forResource: "song", ofType: "mp3")!
            let fileURL: NSURL = NSURL(fileURLWithPath: filePath)
                    let audioFile = try AVAudioFile(forReading: fileURL as URL)
             audioFormat = audioFile.processingFormat
            let audioFrameCount = UInt32(audioFile.length)
            audioFileBuffer = AVAudioPCMBuffer(pcmFormat: audioFormat,
                                                   frameCapacity: audioFrameCount)
            try audioFile.read(into: audioFileBuffer!)
        } catch {
        }
    }

并添加过滤器

func addFilterInAVaudioEngine() {

        let equalizer = AVAudioUnitEQ(numberOfBands: 1)

        equalizer.bands[0].filterType = .lowPass
        equalizer.bands[0].frequency = 3000
        equalizer.bands[0].bypass = false

        engine.attach(equalizer)
        engine.attach(playerNode)

 engine.connect(playerNode, to: equalizer, format: audioFormat)
 engine.connect(equalizer, to: engine.mainMixerNode, format: nil)
       
        
        engine.prepare()
        do {
            try engine.start()
            playerNode.scheduleBuffer(audioFileBuffer, at: nil, options:.loops, completionHandler: nil)
            playerNode.play()
        } catch {
        }
    }

能够播放歌曲,但无法使用过滤器播放

iOS Swift Xcode 过滤器 AVAudioEngine

评论


答: 暂无答案