ios - 使用 Swift 在 AV Audio Recorder 中实现队列服务

标签 ios swift core-audio avaudiorecorder

是否可以在 AVRecorder 框架中创建类似于 AudioQueue 服务的缓冲区概念。在我的应用程序中,我需要捕获音频缓冲区并通过 Internet 发送它。服务器连接部分已经完成,但我想知道是否有一种方法可以在前台连续录制语音,并在后台使用Swift将此音频缓冲区逐个缓冲区传递给服务器。 欢迎提出意见。

最佳答案

AVAudioRecorder 记录到一个文件中,因此您不能轻松地使用它从您的应用中流式传输音频数据。另一方面,AVAudioEngine 可以在捕获音频缓冲区时给您回电:

var engine = AVAudioEngine()

func startCapturingBuffers() {
    let input = engine.inputNode!
    let bus = 0

    input.installTapOnBus(bus, bufferSize: 512, format: input.inputFormatForBus(bus)) { (buffer, time) -> Void in
        // buffer.floatChannelData contains audio data
    }

    try! engine.start()
}

关于ios - 使用 Swift 在 AV Audio Recorder 中实现队列服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39845026/

相关文章:

ios - 为什么在 UIScrollView 中看不到 UIStackView?

iOS swift : Move focus from one textfield to another

将图像附加到图像数组时,IOS Swift 线程中止错误

ios - 在 Swift 中使用 AVAudioEngine 点击麦克风输入

将 m4a 转换为 WAV 的 iOS 代码

iphone - 在 uitabbar 应用程序 iOS iPad 中更改当前 View

iphone - 在 NSUserDefaults 中存储自定义对象的 NSArray

ios - 在 Spritekit 中快速保存分数

swift - Swift 有夏令时检查吗?

iphone - 从 AVAsset 中查找 channel 数