我们可以使用以下函数将CMSampleBuffer转换为NSData。 但是我们找不到将其转换为数据的方法。
我们尝试使用
Data(bytes: <#T##UnsafeRawPointer#>, count: <#T##Int#>)
代替
NSData(bytes: <#T##UnsafeRawPointer?#>, length: <#T##Int#>)
但是没有运气。 有谁能做得到。
func frameData() -> NSData {
let imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer)
CVPixelBufferLockBaseAddress(imageBuffer!, CVPixelBufferLockFlags(rawValue: 0))
let bytesPerRow = CVPixelBufferGetBytesPerRow(imageBuffer!)
let height = CVPixelBufferGetHeight(imageBuffer!)
let src_buff = CVPixelBufferGetBaseAddress(imageBuffer!)
let nsdata = NSData(bytes: src_buff, length: bytesPerRow * height)
CVPixelBufferUnlockBaseAddress(imageBuffer!, CVPixelBufferLockFlags(rawValue: 0))
return nsdata
}
答案 0 :(得分:1)
刚刚使用
let data = Data(bytes: src_buff!, count: bytesPerRow * height)
代替
let nsdata = NSData(bytes: src_buff, length: bytesPerRow * height)
关键在这里!在数据的src_buff之后。 因为xCode显示了一些不相关的错误!用法我听不懂!是需要的。