Swift - 从 avaudioPCMbuffer 到数组
Swift - from audioPCMbuffer to array
是否可以将缓冲区中的数据提取为数组?我已将音频文件保存到缓冲区中,现在想提取数据。代码是:
import UIKit
import AVFoundation
//importing audio
let audioFileURL = Bundle.main.url(forResource: "Morning", withExtension: "wav")
let audioFile = try AVAudioFile(forReading: audioFileURL!)
//extract information
var audioFileFormat = audioFile.fileFormat
var audioFilePFormat = audioFile.processingFormat
var audioFileLength = audioFile.length
var audioFrameCount = UInt32(audioFile.length)
var audioFileChannels = audioFile.fileFormat.channelCount
var audioFileSamplingRate = audioFile.fileFormat.sampleRate
// insert into buffer
let audioBuffer = AVAudioPCMBuffer(pcmFormat: audioFilePFormat, frameCapacity: AVAudioFrameCount(audioFileLength))
try audioFile.read(into: audioBuffer, frameCount: AVAudioFrameCount(audioFileLength))
你可以这样做:
let channelData = audioBuffer.floatChannelData![0]
let arr = Array(UnsafeBufferPointer(start:channelData, count: Int(audioFileLength)))
是否可以将缓冲区中的数据提取为数组?我已将音频文件保存到缓冲区中,现在想提取数据。代码是:
import UIKit
import AVFoundation
//importing audio
let audioFileURL = Bundle.main.url(forResource: "Morning", withExtension: "wav")
let audioFile = try AVAudioFile(forReading: audioFileURL!)
//extract information
var audioFileFormat = audioFile.fileFormat
var audioFilePFormat = audioFile.processingFormat
var audioFileLength = audioFile.length
var audioFrameCount = UInt32(audioFile.length)
var audioFileChannels = audioFile.fileFormat.channelCount
var audioFileSamplingRate = audioFile.fileFormat.sampleRate
// insert into buffer
let audioBuffer = AVAudioPCMBuffer(pcmFormat: audioFilePFormat, frameCapacity: AVAudioFrameCount(audioFileLength))
try audioFile.read(into: audioBuffer, frameCount: AVAudioFrameCount(audioFileLength))
你可以这样做:
let channelData = audioBuffer.floatChannelData![0]
let arr = Array(UnsafeBufferPointer(start:channelData, count: Int(audioFileLength)))