NSString *path = [[NSBundle mainBundle] pathForResource:@"sample" ofType:@"mp3"]; NSString *expandedPath = [path stringByExpandingTildeInPath]; NSURL *url = [NSURL fileURLWithPath:expandedPath]; NSError *error = nil; AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error]; if (audioPlayer) { [audioPlayer prepareToPlay]; [audioPlayer play]; } else NSLog(@"error %@", error); }
簡単なコードなのに音声が再生されず、シンボルエラーで落ちるという現象が発生した。
落ちている場所はinitWithContentsOfURLのところ。
pathを変えてみるなどしたが、全く受け付けなかった。
・原因
使用した"sample.mp3"にあったようで、"sample.wav"などにエンコードすると問題なく再生された。
私がエンコードのヘッダーなどは分からないので詳細は不明だが、
エンコーダーやファイルによってはiOSで再生できないものがあるらしい。
そういえばAndroidSDKにもMediaPlayer似た問題があったな。
サウンドがが途切れたり、再生が遅かったり、再生されなかったり、、、
サウンド関係は面倒臭がらずにOpenALを使用したほうが結果的に良いかも
2013/06/19 追記
OpenALでも再生できなかった。
ビルドクリーンをして、本体orシミュレーターからアプリを削除して、
project.xcworkspaceとxcuserdataを削除した後に、
ビルドせずにMACを再起動して、ビルドをしたら問題無く再生された。
0 件のコメント:
コメントを投稿