检测iOS中声音的持续时间
我正在AVFoundation中使用audio测量,我想知道是否有方法来确定声音的时间长短。 我有我的录音机设置像这样:
func startMeterTimer() { levelTimer?.invalidate() levelTimer = CADisplayLink(target: self, selector: "updateMeter") levelTimer?.frameInterval = 5 levelTimer?.addToRunLoop(NSRunLoop.currentRunLoop(), forMode: NSRunLoopCommonModes) } func stopMeterTimer() { levelTimer?.invalidate() levelTimer = nil } func updateMeter() { readLevels() let avgPower = audioRecorder?.averagePowerForChannel(0) let peakPower = audioRecorder?.peakPowerForChannel(0) if peakPower >= -2 { print("CLAP DETECTED") soundLogicDelegate?.clapDetected() } // print("\(avgPower) + \(peakPower)") } func record() -> Bool { return (audioRecorder?.record())! }
logging和startMeterTImer被调用,当我拍我的手,即使我只拍一次,我得到了许多CLAP DETECTED打印语句。 我想知道是否有一种方法可以测量从第一次调用方法到最后一次调用方法的时间。
使用audioRecorderDidFinishRecording
委托方法,它的一个参数是AVAudioRecorder
一个实例,它具有currentTime
属性:
从录音开始以秒为单位的时间。 (只读)
如果要在每次调用updateMeter()
时检查录制时间,请使用audioRecorder?.currentTime
- 尝试从苹果发现错误的示例AVCAM
- UILocalNotification无法正常工作
- 无法使用StringLiteralConvertibletypes的参数列表调用“init”
- 将个人资料图片设置为Firebase用户的最佳方法是什么?
- Swiftstring如何比操作符工作更多
- 如何从Alamofire错误得到底层错误?
- 如何“在谷歌地图上显示我当前的位置,当我打开ViewController?”在Swift?
- 如何使用IBDesignable UIImageView在prepareForInterfaceBuilder中加载图像
- Swift中的base64EncodedStringWithOptions失败并出现编译错误