Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何玩';http://mp3';使用AVAudioPlayer_Ios_Objective C_Avaudioplayer - Fatal编程技术网

Ios 如何玩';http://mp3';使用AVAudioPlayer

Ios 如何玩';http://mp3';使用AVAudioPlayer,ios,objective-c,avaudioplayer,Ios,Objective C,Avaudioplayer,我不能播放mp3音频文件 URL_PATH = @"http://...../.…./A1.mp3"; n错误*错误 player = [[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL URLWithString:URL_PATH] error:&error]; if (error) { NSLog(@"error:%@",error.localizedDescription); } if (player ==nil) {

我不能播放mp3音频文件

URL_PATH = @"http://...../.…./A1.mp3";
n错误*错误

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
我该怎么办?
请告诉我提示。谢谢

您使用了错误的播放器播放从网络流捕获的音频。请参阅苹果公司在
AVAudioPlayer
上的文档:

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

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

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];
});

您使用了错误的播放器播放从网络流捕获的音频。请参阅苹果公司在
AVAudioPlayer
上的文档:

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

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

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];
});

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

以下是苹果的答案(你可以在这里找到):

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


如果你在寻找一个音频流,你可以测试一下。

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

以下是苹果的答案(你可以在这里找到):

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


如果您要查找音频拖缆,可以对其进行测试。

我将用obj-c标记它。你会有更好的运气。这发生在模拟器或设备中?我会用obj-c标记它。你会有更好的运气。这是在模拟器中还是在设备中发生的?