【问题标题】:Play sound with AVAudioPlayer and a valid URL使用 AVAudioPlayer 和有效 URL 播放声音
【发布时间】:2014-06-17 10:15:33
【问题描述】:

我在我的 iPad 上录制了一个声音文件。该文件保存在文档目录中。现在我想播放此声音,但出现错误。

我想播放这样的声音:

NSURL *soundFileURL = [NSURL URLWithString:ulrString];
_audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFileURL error:&err];

soundFileURL 是:

Printing description of soundFileURL:
/var/mobile/Applications/1824FDFA-18D7-472F-8C4D-16270372F9C9/Documents/Aufnahme-M-bi-1-7.m4a
(lldb) 

但我得到一个错误:

Error Domain=NSOSStatusErrorDomain Code=1685348671 "The operation couldn’t be completed. (OSStatus error 1685348671.)"

我也尝试了声音文件的以下路径:

@"file:///var/mobile/Applications/1824FDFA-18D7-472F-8C4D-16270372F9C9/Documents/Aufnahme-M-bi-1-7.m4a"

但这也行不通:/

【问题讨论】:

    标签: ios objective-c swift avaudioplayer nsurl


    【解决方案1】:

    文件格式错误。它正在向您报告kAudioFileInvalidFileError

    尝试其他格式,例如.caf,看看是否有效。

    我过去在播放不是来自 iTunes 的文件时遇到了问题。

    再次,请先尝试其他格式以缩小问题范围。我的猜测是当你切换到另一种格式时它会起作用,因为你的代码对我来说似乎很好。

    希望这会有所帮助。

    【讨论】:

    • 是的,这是真的。在这种情况下,.m4a 仅适用于模拟器。我已经用 kAudioFormatMPEG4AAC 切换到 .caf 工作正常。谢谢!
    【解决方案2】:

    你如何定义你的AVAudioPlayer?如果你使用ARC,它必须是强类型的属性。

        @property (strong,nonatomic) AVAudioPlayer *audioPlayer;
    

    另外,您是否为要播放的 m4a 文件正确设置了音频会话?

    AVAudioSession *session = [AVAudioSession sharedInstance];
    [session setCategory:AVAudioSessionCategoryRecord error:nil];
    [session setActive:YES error:nil];
    

    【讨论】:

    • 是的,一切都是这样设置的。在模拟器中它的工作正常:/
    猜你喜欢
    • 2014-08-15
    • 2015-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多