如何为录音设置 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 秒的限制的主要内容,如果未能解决你的问题,请参考以下文章

如何为 Kubernetes 作业设置时间限制?

如何为从库中选择的视频设置持续时间限制

NS2:如何为节点设置队列限制

c - 如何为 strtol 设置限制

如何为 Apple 的大图像缩小 iOS 示例设置最大缩放限制?

如何为css中的文本设置特定的像素或字符宽度限制