1

我已经尝试了我能找到的一切来尝试让我的应用程序播放 mp3。我有一些 2-3 秒的 mp3 可以作为音效播放,但我正在尝试播放 15 秒的 mp3,但没有任何运气。

    NSError *error;
    AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[[NSBundle mainBundle] URLForResource: @"test" withExtension: @"mp3"] error:&error];
    if (error)  {
        NSLog(@"Error creating audio player: %@", [error userInfo]);
    } else {
        if([audioPlayer play] == FALSE) {
            NSLog(@"Fail %@", error);
        }
    }
    NSTimer* myTimer = [NSTimer scheduledTimerWithTimeInterval: 15.0 target: self
                                                      selector: @selector(stopMusic) userInfo: nil repeats: NO];

我怀疑计时器与它有什么关系,但我想我会包括它以防万一。基本上我的错误检查根本没有被触发。它“应该”正常播放,但没有声音出来,也没有显示错误。

我尝试了其他一些方法来尝试使其正常工作,并且我尝试过不使用计时器。我找不到像样的指南。我不需要一个完整的媒体播放器,只需要一些背景音乐UIScreenViewController

我还尝试了以下代码,它适用于短 MP3,而不适用于我想播放的较长 MP3。

NSString *path  = [[NSBundle mainBundle] pathForResource:@"bgmusic" ofType:@"mp3"];
NSURL *pathURL = [NSURL fileURLWithPath : path];
AudioServicesCreateSystemSoundID((__bridge CFURLRef)pathURL, &audioEffect);
AudioServicesPlaySystemSound(audioEffect);

请帮忙,我花了几个小时试图对此进行排序。似乎苹果每次发布操作系统时都会重新调整他们的音频。

4

1 回答 1

2

我为您做了一些测试:事实证明,在 Xcode 5 中,音乐文件默​​认不会添加到目标。因此URLForResource:error:可能会返回nil.

尝试从您的项目中删除 mp3。然后再次添加它,这一次让你将它添加到你的目标中:

Xcode 截图

另一件事是:似乎您正在定义AVAudioPlayer方法的内部。您通常会为您的音频播放器设置一个@property,因为否则它的寿命仅限于该方法 - 并且在您到达该方法结束后音乐停止播放。

于 2013-10-06T09:32:34.440 回答