如何使用 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 显示了一些不相关的错误!用法我看不懂!被需要。