我正在尝试重新构建https://github.com/Lockerios/VideoFromImage中的一些功能,并在此帖中进行了讨论:ASSETWriterInput for making Video from UIImages on Iphone Issues
在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-BABIIDJJ将不正确的参数传递给CVPixelBufferCreate函数,其中最有可能是最后一个'pixelBufferOut'参数。
对此问题的任何见解将不胜感激。到目前为止,我对https://gist.github.com/naderhen/8407730
的全部代码有以下要点谢谢!
答案 0 :(得分:1)
看起来最后一个参数应该是指向CVPixelBufferRef
对象的指针。你可以试试这个:
pxbuffer = Pointer.new(:object)
这样做,我的状态为0而不是-6661。
然后,要访问缓冲区,请使用pxbuffer[0]