我想从iphone麦克风录制并转换为ulaw格式流媒体



我想从iphone麦克风记录并转换为ulaw格式流数据,我猜这是pcm数据,但我得到了噪音。

installTap buff是什么音频格式?我怎样才能得到合法的数据格式?我可以从AVAudioRecorder中得到它,但我不能得到一个文件。更改格式设置'AVFormatIDKey=kAudioFormatULaw'会崩溃。

func testMicrophoneRecording1 () throws {
let tapNode: AVAudioNode = mixerNode
let format = tapNode.outputFormat(forBus: 0)

tapNode.installTap(onBus: 0, bufferSize: 1024, format: format, block: {
(buffer, time) in
let d = buffer.toNSData() as Data  
let ulaw_data = convert_pcm_(to_ulaw: d) 
sendUlawDataToDevice(data: ulaw_data)           
})
try engine.start()
}

和连接是:

func makeConnections() {
let inputNode = engine.inputNode
let inputFormat = inputNode.outputFormat(forBus: 0)
engine.connect(inputNode, to: mixerNode, format: inputFormat)
let mainMixerNode = engine.mainMixerNode
let mixerFormat = AVAudioFormat(commonFormat: .pcmFormatFloat32, sampleRate: 44100, channels: 1, interleaved: true)
engine.connect(mixerNode, to: mainMixerNode, format: mixerFormat)
}

我已经从麦克风得到pcm并转换为ulaw,形成这个例子:https://github.com/Epskampie/ios-coreaudio-example