0

我想实现一个播放声音和/或音乐的播放器。我有这两种方法:

-(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”是因为我为这个音频播放器实现了单例模式。

关于我的代码中有什么错误的任何指示或想法,以便我可以播放声音但不能播放音乐?

4

1 回答 1

0

使用fileURLWithPath而不是URLWithStringin playMusic

NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:filename ofType:@"mp3"]];

URLWithString需要一个完整的 URL,例如“file://path/to/file.mp3”作为参数,fileURLWithPath只需要一个文件路径。

于 2012-10-22T14:03:04.373 回答