1

我无法播放 mp3 音频文件。

URL_PATH = @"http://...../.…./A1.mp3";

NSError *错误;

player = [[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL URLWithString:URL_PATH] error:&error];
if (error) 
{
    NSLog(@"error:%@",error.localizedDescription);
}

if (player ==nil)
{
    NSLog(@"nil");
}
else 
{
    NSLog(@"playing");
    [player play];
}  

错误代码 :

error:The operation couldn’t be completed. (OSStatus error -43.)
nil

我能怎么做?请告诉我提示。预谢谢!

4

2 回答 2

7

您使用错误的播放器播放从网络流中捕获的音频。请参阅 Apple 的文档AVAudioPlayer

Apple 建议您将此类用于音频播放,除非您正在播放从网络流中捕获的音频或需要非常低的 I/O 延迟。有关音频技术的概述,请参阅多媒体编程指南中的音频和视频起点和“使用音频”。

一种解决方法AVAudioPlayer是获取音频数据并将其放入NSData. 然后你可以初始化你AVAudioPlayer的 by initWithData:error:。另外,不要将代码放在主队列中。否则它将阻止您的用户界面对用户的输入做出反应。

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    NSURL *mp3URL = [NSURL URLWithString:@"http://zhangmenshiting.baidu.com/data2/music/44799433/4479927746800128.mp3?xcode=dbff90a141d5d136fdc7275fdc3fae126077a44adc974ad8"];
    NSData *data = [NSData dataWithContentsOfURL:mp3URL];
    self.audioPlayer = [[AVAudioPlayer alloc] initWithData:data error:NULL];
    [self.audioPlayer play];
});
于 2013-06-07T03:10:26.273 回答
0

sunkehappy 是对的,AVAudioPlayer 不适用于流式音频。它用于播放音频文件和已经在内存中的数据。这就是为什么您需要使用数据而不是 URL 来初始化它。

这是苹果的答案(你可以在这里找到http://developer.apple.com/library/ios/#qa/qa1634/_index.html):

AVAudioPlayer 类不支持基于 HTTP URL 的流式音频。与 initWithContentsOfURL: 一起使用的 URL 必须是文件 URL (file://)。即,本地路径。

如果您寻找音频流媒体,您可以测试该音频流媒体

于 2013-06-07T09:03:05.723 回答