AVAssetWriter输出(UIImage写入video)失真

我正在使用AVAssetWriter将一系列图像编码为电影文件,以下是Zoul的答案: 如何将UIImage数组导出为电影? 。

总之我的过程是:

  • 从.png文件创buildUIImage
  • 从UIImage获取CGImage
  • 将CGImage转换为CVPixelBuffer(完全使用zoul的函数pixelBufferFromCGImage)
  • 使用AVAssetWriterInputPixelBufferAdaptor和AVAssetWriter将帧写入.mov

这在大多数情况下工作正常,但有时编码的.mov文件是扭曲的(见下图)。 我想知道这种types的失真图像输出是否对任何人都熟悉,如果有任何的步骤,我可能会采取编码框架,会导致这一点。 当我使用的源图像是由Titanium调用ImageView.toBlob()生成的时候,就会出现这个问题。 除了titanium方面,关于这种types的结果可能出现的任何提示将是伟大的!

谢谢,亚历山大

从电影屏幕: http : //tinypic.com/view.php?pic=8wkqys&s=7

原始图片: http : //commons.wikimedia.org/wiki/File : Phalaenopsis_(aka).jpg

Phalaenopsis_(AKA)

请看看这个链接 。 它说宽度应该是16的倍数。

只要得到size.width,计算出16的倍数的最接近的数字,并代替size.width。

有用 :)

好吧,原来这是我正在阅读的图像的宽高比与我创build的PixelBuffer的宽高比不同的问题。 使他们平等,它工作正常。