如何使用 Swift 从 CMSampleBuffer 创建数据 4
How to create Data from CMSampleBuffer With Swift 4
我们可以使用以下函数将 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
}
刚用过
let data = Data(bytes: src_buff!, count: bytesPerRow * height)
而不是
let nsdata = NSData(bytes: src_buff, length: bytesPerRow * height)
关键在这里!在数据 src_buff 之后。
因为 xCode 显示了一些不相关的错误!用法我看不懂!被需要。
我们可以使用以下函数将 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
}
刚用过
let data = Data(bytes: src_buff!, count: bytesPerRow * height)
而不是
let nsdata = NSData(bytes: src_buff, length: bytesPerRow * height)
关键在这里!在数据 src_buff 之后。 因为 xCode 显示了一些不相关的错误!用法我看不懂!被需要。