AVCaptureDeviceのAVCaptureAudioDataOutputまたは処理用のタップを挿入したAVAudioEngineをAudio Toolbox:Audio Queue ServicesのRemoteIOオーディオユニットに入れて、 Audio ToolboxのAudioFileまたはExtAudioFileを使用して、書き込んだフレームの数をカウントし、新しい8秒のファイルを開始するタイミングを決めることができます。
リズミックFistmanは、上記の指摘のように、より安全になりますがなかった場合
キャプチャコールバックのようなもの--pushes-へ - >リングバッファ< --pulls-フロム・ファイル書き込みコード
1つのファイルを閉じて別のファイルを開くときには、キャプチャコールバックが引き続き入力されるため、ファイルI/Oをブロックすると、フロアにデータをドロップする可能性が非常に高くなります。
コールバックからメモリ内の8秒間のバッファにデータを書き込む方法があると思います。満杯になったら、新しいバッファをmallocしてその中に記録を開始する間に、作者はそれが終わったら古いバッファを破棄します)。
編集:また、あなたの質問でSwiftについて何も見ませんでしたが、これはSwiftやC/Obj-Cからうまくいくはずです。
あなたが探しているものがリングバッファかもしれません。 –
答えをいただきありがとうございます。バッファーコードに挿入する例を教えてください。 –
オーディオをリアルタイムで処理したい場合は、AVAudioRecorderよりも低いレベルのものを使用したいと思うかもしれません。 - > https://developer.apple.com/library/content/documentation/MusicAudio/Conceptual/AudioQueueProgrammingGuide/AQRecord/RecordingAudio.html#//apple_ref/doc/uid/TP40005343-CH4-SW1 –