1

これは非常に奇妙です。私のアプリは iPhone (シミュレーターとデバイス) では正常に動作しますが、iPad シミュレーターではクラッシュします。エラーは常に prepareToPlay メソッドを指しています。そのメソッドを外すと、それは play メソッドを指します。デバッグ領域には、エラーや警告は表示されません。私の唯一のリードはメソッドツリーですが、解決策がわかりません。ちなみに音声ファイルはmp3です

どんな助けでも大歓迎です。

_ viewDidLoad __

NSError *エラー = nil; [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback エラー:&error]; //AudioSessionInitialize(NULL, NULL, NULL, NULL);

timerSong = [[AVAudioPlayer alloc] initWithContentsOfURL:alarmSong error:&error];

[self loadSongTitles];

//Make sure the system follows our playback status
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
//infinite loops
audio1.numberOfLoops = -1;
audio2.numberOfLoops = -1;
timerSong.numberOfLoops = -1;

//set volume according to volume label
[audio1 setVolume:0.5];
[audio2 setVolume:0.5];
//strat playing track(s)
[audio1 play];
[audio2 play];

loadSongsTitles

for (NSNumber *number in passingArray) {
    //set the correct titles for each audio
    if (number == [NSNumber numberWithInt:10]) {
        firstSong = title;
        NSURL *audioFileLocationURL = [[NSBundle mainBundle] URLForResource:[backgroundTracks objectAtIndex:firstSong] withExtension:@"mp3"];
        audio1 = [[AVAudioPlayer alloc] initWithContentsOfURL:audioFileLocationURL error:&error];
        [audio1 setDelegate:self]; //setting delagate to restart after interruptions
        [audio1 prepareToPlay];
        audio1Label.text = [titles objectAtIndex:title];
        //when two songs selected make label empty
        onlyOneAudioLabel.text = @"";
    }

更新: 動作しています。mp3 の代わりに WAV ファイルを使用するだけで動作します。理由はわかりません。これが誰かに役立つことを願っています。

4

1 に答える 1

1

恒久的な解決策を見つけました。iPhoneとiPadの両方でmp3を使用できますが、ビットレートには十分注意する必要があります。両方のビットレートを「通常」(〜128kbits / s)に設定しただけで、機能します。お役に立てれば。

于 2013-03-12T11:41:51.150 に答える