AVPlayer 不播放用 AVAudioRecorder 录制的文件 — Swift

AVPlayer does not play file recorded with AVAudioRecorder — Swift

A​​VPlayer 不播放用 AVAudioRecorder 录制的 .aif 文件。我目前的流程是:

  1. AVAudioSession.sharedInstance 的类别设置为 AVAudioSessionCategoryPlayAndRecord
  2. AVAudioRecorder 在应用程序的文档目录中使用 NSURL 和 kAudioFormatAppleIMA4 格式设置、比特率 32000、1 个通道和采样率 16000.0 进行实例化。
  3. 音频被录制,然后停止。文件已保存,我可以在应用程序的文档目录中找到它并验证音频是否已正确录制。
  4. 使用文件的 NSURL 实例化了一个 AVPlayer 实例。观察者被添加到该对象以注册其状态的变化。当 AVPlayer 为 ReadyToPlay 时,我调用播放函数。

然而,尽管控制流到达 AVPlayerStatus.ReadyToPlay 点并调用播放,但没有发出任何声音。我正在检查错误并验证 NSURL 文件的存在性和属性。我还尝试通过实例化 AVAsset、AVPlayerItem 和 AVPlayer 来遵循 this SO post 的过程。运气不好。

对于为什么 AVPlayer 没有为这个新录制的本地文件播放音频有什么想法吗?

编辑:该应用程序是为 iOS 9 和 Xcode 7 beta 5 构建的。该应用程序能够播放使用 AVPlayer 流式传输的音频文件。

问题不是由 AVAudioRecorder 或 AVPlayer 引起的。我的录音 URL 是一个 NSURL 我会调用文件 URL。我将此 NSURL 传递给了另一个视图控制器,但 AVPlayer 在使用文件 URL 实例化时不会播放。 当

时,我得到了出错的提示
fileURL.checkResourceIsReachableAndReturnError(&error)

失败并出现错误 "The file does not exist." 相反,我使用新记录文件的路径实例化了一个新的 NSURL:

let url = NSURL(fileURLWithPath: path)

有了这个 url,我能够实例化并播放 AVPlayer 的实例。