2017-04-18 6 views
0

私はiOSプログラミングが初めてで、Swift 3を使用してAndroidアプリケーションをiOSに移植したいと考えています。このストリームをライブで処理することができます。したがって、オーディオストリームをファイルに保存し、録音が停止した後で処理するだけでは不十分です。Swift 3のAVAudioRecorder:ファイルに保存する代わりにバイトストリームを取得する

私は既に動作するAVAudioRecorderクラスを見つけましたが、データストリームをライブ処理(フィルタリング、サーバーへの送信など)する方法がわかりません。 AVAudioRecorderの初期化機能は、以下のようになります。

AVAudioRecorder(url: filename, settings: settings) 

は、私は必要があるだろうが、私はxバイトたびに呼び出されるようなイベントハンドラか何かを登録することができ、クラスは私が処理できるように読まれていていますそれ。

これはAVAudioRecorderで可能ですか?そうでない場合は、スウィフトライブラリにオーディオストリームをライブで処理できる別のクラスがありますか? Androidでは、android.media.AudioRecordを使用しています。Swiftに同等のクラスがあれば素晴らしいでしょう。

よろしくお願いいたします。

+0

解決済みでしたか?私は同じ問題に固執しています。前もって感謝します! – miibpa

答えて

0

Core AudioフレームワークでAudio Queueサービスを使用してください。 https://developer.apple.com/library/content/documentation/MusicAudio/Conceptual/AudioQueueProgrammingGuide/AQRecord/RecordingAudio.html#//apple_ref/doc/uid/TP40005343-CH4-SW1

static const int kNumberBuffers = 3;       // 1 
struct AQRecorderState { 
    AudioStreamBasicDescription mDataFormat;     // 2 
    AudioQueueRef    mQueue;      // 3 
    AudioQueueBufferRef   mBuffers[kNumberBuffers];  // 4 
    AudioFileID     mAudioFile;     // 5 
    UInt32      bufferByteSize;    // 6 
    SInt64      mCurrentPacket;    // 7 
    bool       mIsRunning;     // 8 
}; 

ここでは、この構造体のフィールドの説明です:

1は、使用するオーディオキューバッファの数を設定します。 2(CoreAudioTypes.hの)AudioStreamBasicDescription構造体 は、ディスクに書き込むオーディオデータ形式を表します。この形式は、mQueueフィールドで指定されたオーディオキューによって使用される を取得します。 録音のためのオーディオフォーマットの設定で説明されているように、mDataFormat フィールドはプログラムのコードで最初に埋められます。 オーディオキューのフルオーディオフォーマットの取得の説明に従って、オーディオキューの kAudioQueueProperty_StreamDescriptionプロパティを照会して、このフィールドの値を更新することをお勧めします。 Mac OS X v10.5では、 はkAudioConverterCurrentInputStreamDescriptionプロパティを代わりに使用します。

AudioStreamBasicDescription構造体の詳細については、コア オーディオデータ型リファレンスを参照してください。

3アプリケーションによって作成された録音オーディオキュー。

4オーディオキュー によって管理されるオーディオキューバッファへのポインタを保持する配列。

5プログラム がオーディオデータを記録するファイルを表すオーディオファイルオブジェクト。

6各オーディオキューバッファのサイズ(バイト単位)。この値は、 のDeriveBufferSize関数でこれらの例で計算された です。 オーディオキューが作成され、開始される前です。 「オーディオキューのバッファサイズを記録する」機能を参照してください。 を参照してください。

7現在の オーディオキューバッファから書き込まれる最初のパケットのパケットインデックス。

8オーディオキューが実行中であるかどうかを示すブール値。 。

+0

このリンクは質問に答えるかもしれませんが、答えの本質的な部分をここに含めて参考にしてください。リンクされたページが変更された場合、リンクのみの回答は無効になります。 - [レビューから](/レビュー/低品質の投稿/ 18738067) –

関連する問題