0

Audio Queue を使用して iPhone のマイクからオーディオを録音し、無音が検出された場合 (10 秒間オーディオ入力がない場合) に録音を停止していますが、オーディオ ファイルから無音を破棄したいと考えています。

関数ではAudioInputCallback、無音を検出するために次のコードを使用しています:

AudioQueueLevelMeterState meters[1];
UInt32 dlen = sizeof(meters);
OSStatus Status AudioQueueGetProperty(inAQ,kAudioQueueProperty_CurrentLevelMeterDB,meters,&dlen);
if(meters[0].mPeakPower < _threshold)
{ // NSLog(@"Silence detected");}

しかし、これらのパケットを削除するにはどうすればよいでしょうか? または、より良いオプションはありますか?

4

2 に答える 2

2

AudioQueue からパケットを削除する代わりに、最初にバッファに書き込むことで書き込みを遅らせることができます。バッファーは、inUserData 内に配置することで簡単に定義できます。

録音を終了するときに、最後の 10 秒間が無音でない場合は、書き込もうとしているファイルに書き戻します。それ以外の場合は、バッファを解放してください。

于 2012-09-20T23:23:14.860 に答える
0

ファイルを録音して閉じたら、関心のないサンプル データを開いて切り捨てます (注: AudioFile/ExtAudioFile API を使用して、依存するチャンク/ヘッダー サイズを適切に更新できます)。

于 2012-09-20T23:48:46.777 に答える