我正在开发具有以下要求的应用程序:
我为此使用了executePSModule
。
AVAudioEngine
然后我使用此函数将AVAudioPCMBuffer转换为数据
var engine = AVAudioEngine()
var input: AVAudioInputNode = engine.inputNode
var format: AVAudioFormat = input.outputFormat(forBus: AVAudioNodeBus(0))
input.installTap(onBus: AVAudioNodeBus(0), bufferSize: AVAudioFrameCount(8192), format: format, block: { buf, when in
// ‘buf' contains audio captured from input node at time 'when'
})
// start engine
我从CocoaPod func toData(PCMBuffer: AVAudioPCMBuffer) -> Data {
let channelCount = 1
let channels = UnsafeBufferPointer(start: PCMBuffer.floatChannelData, count: channelCount)
let ch0Data = NSData(bytes: channels[0], length:Int(PCMBuffer.frameLength * PCMBuffer.format.streamDescription.pointee.mBytesPerFrame))
return ch0Data as Data
}
libopus
我已经搜索了很多有关如何在IOS中使用OpusCodec的方法,但是还没有解决方案。
如何使用OpusCodec编码和解码此数据?我需要jitterBuffer吗?如果我需要如何在IOS中使用它
此Opus编解码器代码,但声音不太清晰
libopus
答案 0 :(得分:0)
尝试降低带宽或设置更高的比特率。我认为对于12kHz带宽的单声道音频,16kbit可能太低了。认为最好将带宽设置为与设置的VOIP一起自动运行。周围可能还有其他问题,但是“听起来不好”不足以进行分析。
答案 1 :(得分:0)
我建议使用比特率和带宽。
我已经成功地使它与这里描述的参数一起工作:
https://ddanilov.me/how-to-enable-in-band-fec-for-opus-codec/。