DX・デジタルトランスフォーメーション

AppStoreにて無料公開中! ”システム手帳”で検索! - AppStoreへ iPad版 - iPhone版

ブロックチェーン・暗号技術 | android | iOS | Web | アプリの著作権 | 日本のなりたち | 禅・大乗仏教 | 新しい社会

iOSでの音声の再生と録音についてまとめる

iOSでの音声の再生と録音についてまとめる。

wavなどの音声ファイルを再生するだけなら AVFoundation#AVAudioPlayer で簡単に再生できる。

録音する場合には、 AudioUnit#AudioUnit や AudioToolbox#AudioQueue を使う必要がある。

いづれの場合も 再生方法は AudioToolbox#AudioSession で設定する必要がある。

AVAudioPlayer 以外はC言語の関数なのでC言語がわからないと取り組むのは難しい。

また、コンピュータでサウンドをどう扱うのか(PCM、サンプリング周波数、量子化ビット数)の知識を持っている必要がある。

AudioUnit#AudioUnit

・Cフレームワーク

・サンプルレート、サウンドフォーマットを意識する必要がある低レベル関数群

// AudioUnitを取得して設定するAudioComponentFindNext();    AudioComponentInstanceNew();    AudioUnitSetProperty();AudioUnitInitialize(InputUnit);// 開始AudioUnitRender();

AudioToolbox#AudioQueue

・Cフレームワーク

// オーディオキュー作成AudioQueueNewOutput();// バッファ確保for (int cnt = 0; i < bufferCount; cnt++) {    AudioQueueAllocateBuffer();     HandleOutputBuffer();}// パラメータ設定AudioQueueSetParameter();// 再生開始AudioQueueStart();

AVFoundation#AVAudioPlayer

・Objective-Cクラスフレームワーク

・wav caf などのオーディオファイルをObjectiveCクラスを使って再生する

player = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"sample" ofType:@"caf"]] error:&playerError];[player prepareToPlay];

AudioToolbox#AudioSession

・Cフレームワーク

・オーディオ再生方法を指定する

OSStatus error = AudioSessionInitialize(NULL, NULL, interruptListener, self);// オーディオ再生方法を指定UInt32 sessionCategory = kAudioSessionCategory_PlayAndRecord;OSStatus error = AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), & sessionCategory);// オーディオルート変更デリゲートを指定OSStatus error = AudioSessionAddPropertyListener(kAudioSessionProperty_AudioRouteChange, routeChangeListener, self);// オーディオ出力先スピーカー設定UInt32 audioSpeaker = kAudioSessionOverrideAudioRoute_Speaker;error = AudioSessionSetProperty(kAudioSessionProperty_OverrideAudioRoute, sizeof (audioSpeaker), & audioSpeaker);AudioSessionSetActive(true);