3

我正在开发一个 iPhone 应用程序。在这个应用程序中,我使用 AVAudioPlayer 播放音频。这是我播放声音的代码。

  NSString* resourcePath = [[NSBundle mainBundle] resourcePath];
    resourcePath = [resourcePath stringByAppendingString:@"/sound.mp3"];

    NSError* err;

    player_ = [[AVAudioPlayer alloc] initWithContentsOfURL:
               [NSURL fileURLWithPath:resourcePath] error:&err];

    if( err )
    {
    }
    else
    {
        [player_ prepareToPlay];

        [player_ play];

        int playingLoops = 0;

        player_.numberOfLoops = playingLoops;
    }

它在 iPhone5 以外的 iPhone 设备上运行良好。当我在 iPhone 5 上运行应用程序时,我收到以下错误,然后应用程序崩溃。

2012-11-26 09:02:28.484 test[728:1dd03] <0xb0081000> Error '!obj' trying to fetch default input device's sample rate
2012-11-26 09:02:28.484 test[728:1dd03]  <0xb0081000> Error getting     audio input  device sample rate: '!obj'
2012-11-26 09:02:28.494 test[728:1dd03]  <0xb0081000> AQMEIOManager::FindIOUnit: error '!dev'
4

3 回答 3

0

您必须将 AVAudioPlayerDelegate 添加到您的 .h 文件中,并将以下代码添加到您的 .m 文件中

NSString* resourcePath =[[NSBundle mainBundle]pathForResource:@"sound" ofType:@"mp3"];
NSError* err;
AVAudioPlayer *audioplayer =[[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL fileURLWithPath: resourcePath]  error:&err];
audioplayer.delegate=self;
if( err )
{
   NSLog(@"%@",err);
}
else
{
   [audioplayer prepareToPlay];
   [audioplayer play];
}

此代码对我有用,如果有效,请接受答案。

于 2012-11-26T04:20:14.253 回答
0

我也面临同样的问题,给出同样的错误。当尝试解决这个问题时,我注意到代码没有问题。我们需要更新媒体播放器或安装 Flash 播放器,它工作正常。

于 2012-12-03T11:36:50.733 回答
0

Anbu,试试下面的代码。在我的最后它工作正常。

NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/audiofile.mp3", [[NSBundle mainBundle] resourcePath]]];

NSLog(@"File path is:->%@",[NSString stringWithFormat:@"%@/audiofile.mp3", [[NSBundle mainBundle] resourcePath]]);

NSFileManager* manager;
manager = [NSFileManager defaultManager];
if([manager fileExistsAtPath:[NSString stringWithFormat:@"%@/audiofile.mp3", [[NSBundle mainBundle] resourcePath]]])
{
    printf("file Exists...\n\n");
}
else
    printf("File not exist...\n\n");

NSError *er;
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
audioPlayer.numberOfLoops = -1;

if (audioPlayer == nil)
    NSLog([er description]);                
else 
    [audioPlayer play];

有任何问题,请告诉我。并且,还请检查您的控制台以获取完整路径以及文件是否存在。

于 2012-11-26T06:19:35.850 回答