我想实现播放声音和/或音乐的播放器。我有这两种方法:
-(void)playSound:(int)soundIndex
{
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:[SoundFxFilenameArray objectAtIndex:soundIndex] ofType:@"mp3"]];
if(FxPlayer)
{
[FxPlayer release];
FxPlayer = nil;
}
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategorySoloAmbient error:nil];
FxPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
[FxPlayer play];
}
-(void)playMusic:(NSString *)filename
{
NSURL *url = [NSURL URLWithString:[[NSBundle mainBundle] pathForResource:filename ofType:@"mp3"]];
if(MusicPlayer)
{
[MusicPlayer release];
MusicPlayer = nil;
}
MusicPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
[MusicPlayer play];
}
现在,[[SoundPlayer sharedManager] playSound:FXIndex_Default]
工作正常。当我尝试播放音乐时,[[SoundPlayer sharedManager] playMusic:@"music_file_name_here"
只是没有做任何事情。请注意,声音文件和音乐文件的格式相同(mp3)。
另外,“sharedInstance”是因为我为这个音频播放器实现了单例模式。
我的代码中有什么错误的指针或想法,以便我可以播放声音而不是音乐?
答案 0 :(得分:0)
在fileURLWithPath
中使用URLWithString
代替playMusic
:
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:filename ofType:@"mp3"]];
URLWithString
需要一个完整的URL,例如“file://path/to/file.mp3”作为参数,fileURLWithPath
只需要一个文件路径。