AVAudioEngineでaiffの再生が出来ない
AVFoundation
のAVAudioEngine
を使って、.aiff
や.mp3
を再生したいと思い、下記のサンプルコードを作ってみましたが、[player play]
の直後に終了ハンドラーが呼ばれてしまい、音楽が再生されません。
AVFoundation.framework
はリンクしていますApp Sandboxing
はOFF
にしているため、ファイルアクセスは出来ているようです- ソース中の
aiffURL
を用いてNSSound
のインスタンスを作成し、play
メソッドを実行すると再生されます - ソース中の2箇所の
if (err)
はどちらもnil
で正常終了しているようです
お気づきの点がありましたらご指摘下さい。
#import "AppDelegate.h"
#import <AVFoundation/AVFoundation.h>
@implementation AppDelegate
- (void) applicationDidFinishLaunching:(NSNotification *)aNotification {
NSURL *aiffURL = [NSURL fileURLWithPath:@"/Users/username/Music/1 06 I Was Born To Love You.mp3"];
NSError *err;
AVAudioFile *music = [[AVAudioFile alloc] initForReading:aiffURL error:&err];
if (err) { NSLog(@"%@", err.debugDescription); }
AVAudioEngine *engine = [[AVAudioEngine alloc] init];
AVAudioPlayerNode *player = [[AVAudioPlayerNode alloc] init];
[engine attachNode:player];
[engine connect:player to:engine.mainMixerNode format:music.processingFormat];
[engine prepare];
[engine startAndReturnError:&err];
if (err) { NSLog(@"%@", err.debugDescription); }
[player scheduleFile:music atTime:nil completionHandler:^{
NSLog(@"Play done");
}];
[player play];
}