如何为录音设置 60 秒的限制
Posted
技术标签:
【中文标题】如何为录音设置 60 秒的限制【英文标题】:How to set a 60 second limit to Audio recording 【发布时间】:2015-11-18 09:26:32 【问题描述】:您好,我正在使用 IQAudioRecorder 进行录音。我想设置录制的固定时间,就像用户最多可以录制 1 分钟一样。那我该怎么做呢?
这是我的代码
func AudioFunction()
let controller = IQAudioRecorderController()
controller.recordingTintColor = UIColor.whiteColor()
controller.playingTintColor = UIColor.whiteColor()
controller.delegate = self
presentViewController(controller, animated: false, completion: nil)
func audioRecorderController(controller: IQAudioRecorderController!, didFinishWithAudioAtPath filePath: String!)
let d = NSDate()
print(d)
let vData = NSData(contentsOfURL: NSURL(fileURLWithPath: filePath))
dataStr = vData!.base64EncodedStringWithOptions(.Encoding64CharacterLineLength)
print(vData)
print(filePath)
func audioRecorderControllerDidCancel(controller: IQAudioRecorderController!)
func playSound(soundName: String)
let strpath = NSTemporaryDirectory() + "/" + soundName
NSLog("File: %@", strpath)
let coinSound = NSURL(fileURLWithPath:strpath)
do
audioPlayer = try AVAudioPlayer(contentsOfURL:coinSound)
audioPlayer.prepareToPlay()
audioPlayer.play()
catch
print("Error getting the audio file")
【问题讨论】:
嗨@Govind Rakholiya:我在使用controller.delegate=self 时遇到了一些问题。你有一个用于swift 的示例IQ 记录器 【参考方案1】:使用 NSTimer。录制开始时实例化一个 NSTimer。 在 60 秒结束时,计时器将触发并调用一个方法,从而停止记录。
这里是示例代码:
func startRecording()
let theTimer = NSTimer.scheduledTimerWithTimeInterval(60, target: self, selector: Selector("stopRecording"), userInfo: nil, repeats: false)
// Start recording here.
theTimer.fire()
func stopRecording()
// Put the code to Stop recording here.
【讨论】:
【参考方案2】:现在有一个最大允许记录长度的属性。对于您的代码:
controller.maximumRecordDuration = 60
问题/解决方案链接 -- https://github.com/hackiftekhar/IQAudioRecorderController/issues/17#issuecomment-205175475
【讨论】:
【参考方案3】:我认为您遗漏了代码的录音部分,它可能位于 IQAudioRecorderController 中。
但假设您创建了一个类似于以下内容的记录器:
audioRecorder = try AVAudioRecorder(url: audioFilename, settings: settings)
audioRecorder.delegate = self
audioRecorder.record()
你可以把最后一行改成下面这样记录一分钟:
audioRecorder.record(forDuration: 60.0)
【讨论】:
以上是关于如何为录音设置 60 秒的限制的主要内容,如果未能解决你的问题,请参考以下文章