Sim*_*n H 7 microphone avaudiorecorder audio-processing ios swift
我是 iOS 编程新手,我想使用 Swift 3 将 Android 应用程序移植到 iOS。该应用程序的核心功能是从麦克风读取字节流并实时处理该流。因此,将音频流存储到文件并在录音停止后对其进行处理是不够的。
我已经找到了可以工作的 AVAudioRecorder 类,但我不知道如何实时处理数据流(过滤、将其发送到服务器等)。AVAudioRecorder 的 init 函数如下所示:
AVAudioRecorder(url: filename, settings: settings)
Run Code Online (Sandbox Code Playgroud)
我需要的是一个类,我可以在其中注册一个事件处理程序或类似的类,每次读取 x 个字节时都会调用该类,以便我可以处理它。
AVAudioRecorder 可以做到这一点吗?如果没有,Swift 库中是否还有另一个类可以让我实时处理音频流?在 Android 中我使用 android.media.AudioRecord 所以如果 Swift 中有一个等效的类那就太好了。
问候
使用 Core Audio 框架中的音频队列服务。\n https://developer.apple.com/library/content/documentation/MusicAudio/Conceptual/AudioQueueProgrammingGuide/AQRecord/RecordingAudio.html#//apple_ref/doc/uid/TP40005343-CH4 -SW1
\n\nstatic const int kNumberBuffers = 3; // 1\nstruct AQRecorderState {\n AudioStreamBasicDescription mDataFormat; // 2\n AudioQueueRef mQueue; // 3\n AudioQueueBufferRef mBuffers[kNumberBuffers]; // 4\n AudioFileID mAudioFile; // 5\n UInt32 bufferByteSize; // 6\n SInt64 mCurrentPacket; // 7\n bool mIsRunning; // 8\n};\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n这里\xe2\x80\x99是这个结构中字段的描述:
\n\n1 设置要使用的音频队列缓冲区的数量。\n 2 AudioStreamBasicDescription 结构(来自 CoreAudioTypes.h)\n 表示要写入磁盘的音频数据格式。此格式由 mQueue 字段中指定的音频队列使用。mDataFormat\n 字段最初由程序中的代码填充,如\n 设置用于录制的音频格式中所述。最好通过查询音频队列的 kAudioQueueProperty_StreamDescription 属性来更新此字段的值,如从音频队列获取完整音频格式中所述。在 Mac OS X v10.5 上,\n 请改用 kAudioConverterCurrentInputStreamDescription 属性。
\n\n有关 AudioStreamBasicDescription 结构的详细信息,请参阅 Core\n 音频数据类型参考。
\n\n3 您的应用程序创建的录音音频队列。
\n\n4 一个数组,保存指向由音频队列管理的音频队列缓冲区的指针。
\n\n5 一个音频文件对象,表示程序在其中记录音频数据的文件。
\n\n6 每个音频队列缓冲区的大小(以字节为单位)。在这些示例中,在创建音频队列之后和启动之前,在 DeriveBufferSize 函数中计算该值。请参阅编写\n 函数来导出录音音频队列缓冲区大小。
\n\n7 要从当前音频队列缓冲区写入的第一个数据包的数据包索引。
\n\n8 一个布尔值,指示音频队列是否正在运行。
\n
| 归档时间: |
|
| 查看次数: |
2193 次 |
| 最近记录: |