繁体   English   中英

实时音频处理Swift

[英]Real time audio processing Swift

我们的应用程序不断记录和处理来自iPhone麦克风的音频。

目前,我使用AVAudioRecorder和AVFoundation并将音频输入输出录制到8秒的“ .wav”文件中。

相反,我想连续将音频输入记录到缓冲区并处理8秒长的缓冲区块。

如何将音频输入记录到缓冲区中,如何从那里读取8秒长的块?

谢谢!

您可以通过多种方式接收原始PCM(在AV Foundation中:来自AVCaptureDevice的AVCaptureAudioDataOutput或插入了处理分接头的AVAudioEngine;在Audio Toolbox中:Audio Queue Services,RemoteIO音频单元),然后编写文件,您可以使用音频工具箱的AudioFile或ExtAudioFile,只计算您已写入的帧数并确定何时开始一个新的8秒文件。

就像节奏节奏拳头在上面提到的那样,如果您执行以下操作会更安全

捕获回调--pushes-to->环形缓冲区<-pulls-from--文件写入代码

因为当您关闭一个文件并打开另一个文件时,捕获回调仍将进入,并且如果您阻塞文件I / O,则很有可能会在地板上丢掉一些数据。

我想另一种方法是从回调中填充内存中的8秒缓冲区,当缓冲区满时,让另一个线程在分配新缓冲区并开始记录的同时写入该文件(显然,文件编写器会丢弃该缓冲区)。完成后的旧缓冲区)。

编辑:另外,在您的问题中,我没有看到任何有关Swift的信息,但是从Swift或C / Obj-C可以正常运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM