【问题标题】:AVPlayer does not play file recorded with AVAudioRecorder — SwiftAVPlayer 不播放用 AVAudioRecorder 录制的文件 - Swift
【发布时间】:2015-08-19 19:47:28
【问题描述】:

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

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

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

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

edit:该应用是为带有 Xcode 7 beta 5 的 iOS 9 构建的。该应用能够播放使用 AVPlayer 流式传输的音频文件。

【问题讨论】:

  • 我遇到了一个非常相似的问题,当我尝试在模拟器上播放时它起作用了。但是,播放无法在设备上运行,我不知道为什么。音频文件的编码或解码没有错误。

标签: ios swift avplayer avaudiorecorder


【解决方案1】:

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

fileURL.checkResourceIsReachableAndReturnError(&error)

因错误“文件不存在”而失败。相反,我使用新记录的文件的路径实例化了一个新的 NSURL:

let url = NSURL(fileURLWithPath: path)

通过这个 url,我可以实例化并播放 AVPlayer 的一个实例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-14
    • 1970-01-01
    • 2015-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多