AVAudioRecorder / AVAudioPlayer无法打开以前保存的文件

时间:2016-11-07 17:07:26

标签: ios avaudioplayer avaudiorecorder m4a

我可以使用AVAudioRecorder成功录制音频。我可以使用AVAudioPlayer成功播放此录音。 这将保存到文档文件夹:

FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)

但是,当我尝试重新打开此文件时(要么记录它还是回放它)我无法这样做。我得到记录状态或玩家状态以返回false。

文件名/网址的示例:

file:///var/mobile/Containers/Data/Application/30025787-C4F5-4F23-A345-C38EE44A180B/Documents/E678B939-730D-40D8-84EC-DE79FE4BDE3D.m4a

请注意,我尝试重新打开这样的文件:

self.audioRecorder = try AVAudioRecorder(url: self.recordedFileURL!, settings: settings)
self.audioRecorder.delegate = self
self.audioRecorder.isMeteringEnabled = true
let prepared = self.audioRecorder.prepareToRecord()
print("prepared to record = \(prepared)") // this returns FALSE when i am trying to re-open. But returns TRUE when i record for the first time.

当我尝试用AVAudioPlayer打开文件时,我收到错误:

The operation couldn’t be completed. (OSStatus error 2003334207.)

使用保存的URL打开文件的代码如下:

if (self.recordedFileURL != nil) {
  do {
    self.audioPlayer = try AVAudioPlayer(contentsOf: self.recordedFileURL!)
    self.audioPlayer.delegate = self
    self.audioPlayer.volume = 1.0
    self.audioPlayer.prepareToPlay()
  }
  catch let error {
    print("Play audio error: " + error.localizedDescription)
  }
}

*已更新*

我开始认为文件实际上没有保存在文档文件夹中。我在输出窗口中看到了这个错误:

fatal error: unexpectedly found nil while unwrapping an Optional value
2016-11-07 09:38:28.177535 fatal error: unexpectedly found nil while unwrapping an Optional value

如何验证文件夹中是否存在此文件?

*已更新*

我怀疑我将文件保存到临时位置。我回家后需要朝这个方向调查。这是reference

*已更新2 *

我找到了更精确的参考here

*已解决*

我相信有两(2)个问题。

1)我确保我没有使用已经存在的文件的路径名。如果我使用现有路径(这是录制音频的路径)来初始化录音机,它将覆盖录制的任何音频。我必须确保为任何新录音使用单独/唯一的路径。

2)我必须确保使用正确的URL路径。我发现我与此并不一致。简而言之,使用绝对字符串路径,并在任何地方(读取和读取)使用它。

0 个答案:

没有答案