斯威夫特,中断后继续录音

时间:2016-04-17 20:42:40

标签: ios swift avaudioplayer avaudiorecorder avaudiosession

我试图让用户长时间录制音频。

那么我想要实现什么目标?

  • 开始录制将停止任何其他媒体,如音乐

  • 如果AVAudioRecorder被中断,它会暂停。

  • 当中断结束或用户手动恢复录制时,AVAudioRecorder将停止所有其他媒体并恢复并继续录制。

我的问题是当AVAudioRecorder被中断并恢复几次时,它会丢失重新编码的数据,例如,当我回放时记录30秒时,其持续时间变为10秒。 令人惊讶的是,这只会在它被中断时发生,但如果用户暂停并重新开始多次重新编码,则没问题。

有什么建议吗?

感谢。

func startRecording() {
        if !audioRecord!.recording {
            do {
                secondCounter = 0
                try self.audioSession?.setCategory(AVAudioSessionCategoryRecord)
                try self.audioSession?.setActive(true)
                self.stopAudioPlayer()
                self.playButton.enabled = false
                self.playButtonInPlayingMode(false)
                self.hideAudioContainer(true)
                audioRecord?.prepareToRecord()
                audioRecord?.meteringEnabled = true
                audioRecord!.record()
                self.micButton.tag = recording_state;
                self.monitorRecoderTime()
            } catch {
            }
        }
    }

    func pauseRecording() {
        if audioRecord != nil && audioRecord!.recording {
            self.recordingPauseMode()
            audioRecord?.pause()
        }
    }

    func recordingPauseMode() {
        self.micButton.setImage(UIImage(named: "micro.png"), forState: .Normal);
        self.micButton.tag = pause_state;
        self.stopMonitoring()
    }

    func resumeRecoding() {
        if audioRecord != nil && !audioRecord!.recording {
            self.micButton.setImage(UIImage(named: "micro_filled.png"), forState: .Normal);
            self.micButton.tag = recording_state;
            if audioRecord!.record() {
                print("Recording Resumed")
            }else{
                print("Unable to resume recording")
            }
            self.monitorRecoderTime()
        }
    }

0 个答案:

没有答案