提问人:Arpit B Parekh 提问时间:7/25/2023 最后编辑:Arpit B Parekh 更新时间:7/26/2023 访问量:34
AVAudioEngine:在歌曲上添加低通滤波器不起作用
AVAudioEngine: adding low pass filter on a song not working
问:
在我的 iOS 应用程序中,
我需要滤波低通和高通频率
为此,我正在尝试从我的捆绑包中播放简单的歌曲,并使用和AVAudioengine
AVAudioUnitEQ
下面是代码,
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 {
}
}
能够播放歌曲,但无法使用过滤器播放
答: 暂无答案
评论