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

问题描述

我想从 iphone 麦克风录音并转换为 ulaw 格式的流数据,我猜那是 pcm 数据,但我有噪音。

installTap buff 是什么音频格式?我该怎么做才能获得 ulaw 数据格式? 我可以从 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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...