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

时间:2015-08-19 19:47:29

标签: ios swift avplayer avaudiorecorder

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

  1. AVAudioSession.sharedInstance的类别设置为AVAudioSessionCategoryPlayAndRecord
  2. AVAudioRecorder在应用程序的文档目录中使用NSURL进行实例化,并设置kAudioFormatAppleIMA4格式,比特率为32000,1通道,采样率为16000.0。
  3. 录制音频,然后停止。该文件已保存,我可以在应用程序的文档目录中找到它,并验证音频是否已正确记录。
  4. 使用文件的NSURL实例化AVPlayer的实例。将一个观察者添加到此对象以注册对其状态的更改。当AVPlayer是ReadyToPlay时,我调用播放功能。
  5. 然而,尽管控制流程达到AVPlayerStatus.ReadyToPlay并调用play,但不会产生声音。我在NSURL检查错误并验证文件的存在和属性。我还尝试通过实例化AVAsset,AVPlayerItem和AVPlayer来跟踪this SO post的过程。没有运气。

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

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

1 个答案:

答案 0 :(得分:2)

问题不是由AVAudioRecorder或AVPlayer引起的。我的录制网址是NSURL我会调用fileURL。我将此NSURL传递给另一个视图控制器,但在使用fileURL实例化时,AVPlayer无法播放。

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

失败并显示错误“文件不存在”。相反,我使用以下命令实例化了一个新的NSURL,其中包含新录制文件的路径:

let url = NSURL(fileURLWithPath: path)

使用此URL,我能够实例化并播放AVPlayer的实例。