我尝试将CoreVideo与Swift一起使用,但我收到了此错误:
let flags : CVOptionFlags = 0
CVPixelBufferLockBaseAddress(imageBuffer, flags)
^~~~~~~~~~~~~~~~~
无法转换表达式' CVReturn'输入' CVPixelBuffer!'
CVPixelBufferLockBaseAddress(imageBuffer, 0)
^~~~~~~~~~~~~~~~~
无法转换表达式' CVReturn'输入' CVOptionFlags'
如果我不使用它,为什么它无法转换价值呢?我应该以不同的方式传递第二个论点吗?
答案 0 :(得分:2)
我想它会起作用。
var tmp : COpaquePointer = CMSampleBufferGetImageBuffer(imageBuffer).toOpaque()
var pixelBuf : CVPixelBuffer = (Unmanaged<CVPixelBuffer>.fromOpaque(tmp)).takeUnretainedValue()
CVPixelBufferLockBaseAddress(pixelBuf, 0)
答案 1 :(得分:1)
我对CoreVideo不太熟悉,但我想问题更多的是imageBuffer
init,因为你的第一个实现似乎是正确的。
这段代码至少可以编译:
var pixelBuffer : CVPixelBuffer?
let optionFlags : CVOptionFlags = 0
CVPixelBufferLockBaseAddress(pixelBuffer, optionFlags)