AVAssetWriter的输出(UIImages写入视频)失真

问题描述 投票:4回答:3

我正在使用AVAssetWriter将一系列图像编码为电影文件,遵循Zoul在这里的回答:How do I export UIImage array as a movie?

总之,我的过程是:

  • 从.png文件创建UIImage
  • 从UIImage获取CGImage
  • 将CGImage转换为CVPixelBuffer(完全使用zoul的function pixelBufferFromCGImage)
  • 使用AVAssetWriterInputPixelBufferAdaptor和AVAssetWriter将帧写入.mov。>
  • 在大多数情况下,这种方法都可以正常工作,但是有时编码的.mov文件会失真(请参见下图)。我想知道这种失真的图像输出是否为任何人所熟悉,并且是否可能在编码导致这种情况的帧方面采取了任何措施。当我使用的源图像是通过Titanium中对ImageView.toBlob()的调用生成的时,就会发生此问题。除了Titanium面,关于这种结果可能如何出现的任何提示都很棒!

谢谢,亚历山大

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

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

“蝴蝶兰(aka)”

我正在使用AVAssetWriter将一系列图像编码为电影文件,遵循Zoul在这里的回答:如何将UIImage数组导出为电影?简而言之,我的过程是:从.png中创建UIImage ...

ios uiimage titanium avfoundation
3个回答
6
投票

请看this link。它说宽度应该是16的倍数。


4
投票

确定,这与我正在读取的图像的纵横比与我正在创建的PixelBuffer的纵横比不同时是一个问题。使它们相等,效果很好。


0
投票

[旧线程但答案不同,我没有乘以一个数字,而是使用CVPixelBufferGetBytesPerRow来获取CGBitmapContextCreate每行的实际字节数,并且它固定了变形,高度/宽度相同

© www.soinside.com 2019 - 2024. All rights reserved.