来自服务器的 MP3 文件在 iOS7 中无法使用 AVAudioPlayer 播放
Posted
技术标签:
【中文标题】来自服务器的 MP3 文件在 iOS7 中无法使用 AVAudioPlayer 播放【英文标题】:MP3 file from server is not playing with AVAudioPlayer in iOS7 【发布时间】:2015-03-31 11:41:24 【问题描述】:这是我的代码,首先我调用 mp3 url 来下载音频数据。然后我将该数据保存在本地目录中,之后我正在从本地文件路径播放音频,但它不起作用AVAudioPlayer
抛出错误。我也尝试了其他一些方法,但没有人适合我。
在模拟器上相同的代码工作正常。
并且音频网址在浏览器中播放起来就像一个魅力。
NSURL *urlll=[NSURL URLWithString:@"www.xyz.audio.mp3"];
[NSURLConnection sendAsynchronousRequest:[NSURLRequest requestWithURL:urlll] queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *responce,NSData* data,NSError * error)
if (error == nil)
indicator.hidden=YES;
[indicator stopAnimating];
if (data)
NSString *docDirPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *filePath = [NSString stringWithFormat:@"%@/%@.mp3", docDirPath , @"Audio"];
[data writeToFile:filePath atomically:YES];
NSURL *fileURL = [NSURL fileURLWithPath:filePath];
AudioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:&error];
AudioPlayer.delegate=self;
[AudioPlayer prepareToPlay];
if (AudioPlayer == nil)
NSLog(@"AudioPlayer did not load properly: %@", [error description]);
else
[AudioPlayer play];
];
但我遇到了这些错误:Error Domain=NSOSStatusErrorDomain Code=1685348671 "The operation couldn't be completed. (OSStatus error 1685348671.)
请帮帮我:(。
【问题讨论】:
这个代码在你的 viewDidLoad 中吗? ***.com/questions/1490989/… 否,此代码是从 tableview 调用并选择。 【参考方案1】:在您的代码中,您将音频保存到NSString *filePath
,但您使用fileURL
启动。难道你真的想这样做:
AudioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL URLWithString:filePath] error:&error];
如果不是,那么您应该知道错误正在向您报告kAudioFileInvalidFileError
。这意味着文件格式错误。您可以尝试其他格式,例如 .caf
或 .aifc
或 aiff
。
--编辑--
确保 AVAudioPlayer
是 .m 或 .h 文件中的属性,以便离开方法后内存分配持续:
@property (nonatomic,strong) AVAudioPlayer *AudioPlayer;
(附注:属性应以小写 -> audioPlayer
)
【讨论】:
我已经尝试了所有格式和getiing,无法完成操作。 (OSStatus 错误 1954115647。) 此问题仅适用于更新设备上的 ios7 一切正常。 您的 AudioPlayer 属性是如何声明的? 在 .h 中像这样 AVAudioPlayer *AudioPlayer; 我试过这个@property (nonatomic,strong) AVAudioPlayer *AudioPlayer;以上是关于来自服务器的 MP3 文件在 iOS7 中无法使用 AVAudioPlayer 播放的主要内容,如果未能解决你的问题,请参考以下文章
如果 mp3 文件来自端口 8443,则音频标签在 Cordova Web 应用程序中不起作用
无法使用 AVAudioPlayer 播放存储在文档目录中的本地 mp3 文件