1
이 흐름이 지금 있습니다. AudioEngine을 사용하여 오디오를 녹음하고 오디오 처리 라이브러리로 보내고 오디오 버퍼를 다시 가져온 다음 쓰기를 강요합니다. wav 파일 그러나 나는 그것을 신속하게하는 방법을 완전히 혼란스러워.신속한 wav 오디오 파일에 float 배열 쓰기
나는 또 다른 유래 응답에서이 조각을 해봤지만 빈과 손상된 파일을 작성합니다.
//get data from library
var len : CLong = 0
let res: UnsafePointer<Double> = getData(CLong(), &len)
let bufferPointer: UnsafeBufferPointer = UnsafeBufferPointer(start: res, count: len)
//tranform it to Data
let arrayDouble = Array(bufferPointer)
let arrayFloats = arrayDouble.map{Float($0)}
let data = try Data(buffer: bufferPointer)
//attempt to write in file
do {
let format = AVAudioFormat(commonFormat: .pcmFormatFloat32, sampleRate: 16000, channels: 2, interleaved: false)
var buffer = AVAudioPCMBuffer(pcmFormat: format, frameCapacity: AVAudioFrameCount(data.count))
buffer.floatChannelData!.pointee.withMemoryRebound(to: UInt8.self, capacity: data.count) {
let stream = OutputStream(toBuffer: $0, capacity: data.count)
stream.open()
_ = data.withUnsafeBytes {
stream.write($0, maxLength: data.count)
}
stream.close()
}
//settings are from AudioEngine.inputNode!.inputFormat(forBus: 0).settings
var audioFile = try AVAudioFile(forWriting: url, settings: settings)
try audioFile.write(from: buffer)
} catch let error as NSError {
print("ERROR HERE", error.localizedDescription)
}
(load a pcm into a AVAudioPCMBuffer)
그래서, 나는이 floatChannelData의 변환 않는 것 같아요 잘못 또는 모든 잘못. 어떤 제안이나 조언을 어디서 읽을 것인가?
녹음하는 동안 wav 파일로의 전환은 내가 레코더 파일을 변환합니다 중지 한 후 현재 내가 다음 M4A 형식으로 기록 할 수 ... 완료되면 내가 궁금 안녕 zo_chu wav 형식으로. 직접 wav 형식으로 녹음을 찾고 메신저 –
@ ChinchanZu 안녕하세요, 저는 wav에 직접 쓰고 매력처럼 작동합니다. 예제의 URL은 wav 파일로 연결됩니다. –