CVPixelBufferCreate in RubyMotion



我正试图从https://github.com/Lockerios/VideoFromImage并在这篇文章中讨论:ASSETWriterInput用于在Iphone问题上从UIImages制作视频

在pixelBufferFromCGImage:size方法中,到目前为止我有以下内容:

options = {KCVPixelBufferCGImageCompatibilityKey => 1, KCVPixelBufferCGBitmapContextCompatibilityKey => 1}
pxbuffer = nil
status = CVPixelBufferCreate(KCFAllocatorDefault, imageSize.width, imageSize.height, KCVPixelFormatType_32ARGB, options, pxbuffer)

其中imageSize.width==640.0和imageSize.height==1136.0

但是,状态总是返回6661。我有点困惑为什么会发生这种事。此方法在其他地方被调用,并包含以下内容:

buffer = pixelBufferFromCGImage(array.objectAtIndex(0).CGImage, size:CGSizeMake(640, 1136))

当我从pixelBufferFromCGImage函数中检查图像时,它的类型似乎是"#<__NSCFType:0x9ba7fa0>",我不确定这是否是导致问题的原因。

根据https://developer.apple.com/library/ios/documentation/QuartzCore/Reference/CVConstantsRef/Reference/reference.html#//apple_ref/doc/uid/TP40010164-CH4g BABIDJJ,其中最有可能的是最后一个"pixelBufferOut"参数。

如能深入了解这个问题,我们将不胜感激。到目前为止,我在https://gist.github.com/naderhen/8407730

谢谢!

看起来最后一个参数应该是指向CVPixelBufferRef对象的指针。你可以试试这个:

pxbuffer = Pointer.new(:object)

这样,我得到的状态为0,而不是-6661。

然后,要访问缓冲区,请使用pxbuffer[0]

相关内容

  • 没有找到相关文章

最新更新