如何使用Swift 4从CMSampleBuffer创建数据

时间:2018-11-07 07:47:38

标签: ios swift4

我们可以使用以下函数将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

    }

1 个答案:

答案 0 :(得分:1)

刚刚使用

       let data = Data(bytes: src_buff!, count: bytesPerRow * height)

代替

     let nsdata = NSData(bytes: src_buff, length: bytesPerRow * height)  

关键在这里!在数据的src_buff之后。 因为xCode显示了一些不相关的错误!用法我听不懂!是需要的。