我目前正在处理音频样本。我从 AVAssetReader 获取它们并有一个CMSampleBuffer类似这样的内容:
guard let sampleBuffer = readerOutput.copyNextSampleBuffer() else {
guard reader.status == .completed else { return nil }
// Completed
// samples is an array of Int16
let samples = sampleData.withUnsafeBytes {
Array(UnsafeBufferPointer<Int16>(
start: $0, count: sampleData.count / MemoryLayout<Int16>.size))
}
// The only way I found to convert [Int16] -> [Float]...
return samples.map { Float($0) / Float(Int16.max)}
}
guard let blockBuffer = CMSampleBufferGetDataBuffer(sampleBuffer) else {
return nil
}
let length = CMBlockBufferGetDataLength(blockBuffer)
let sampleBytes = UnsafeMutablePointer<UInt8>.allocate(capacity: length) …Run Code Online (Sandbox Code Playgroud) 我有一个 Java 服务器,我在其中使用 ashort[]并将其转换为byte[](Big Endian)并将其发送到 iOS 设备。我无法将此字节数组(或DataSwift 中的)转换为int16数组 ( [Int16])。我还想知道我假设 Javashort类型的 Swift 等价物是 Swift 中的 a 是否正确Int16。