Salida de AVAssetWriter (UIImajes escritos en video) distorsionada

Estoy usando un AVAssetWriter para codificar una serie de imágenes en un file de película, siguiendo la respuesta de Zoul aquí: ¿Cómo exporto UIImage array como una película? .

En resumen, mi process es:

  • Cree UIImage desde el file .png
  • Obtenga CGImage de UIImage
  • convierta el CGImage a CVPixelBuffer (usando exactamente la function pixelBufferFromCGImage de zoul)
  • escriba los cuadros en .mov utilizando un AVAssetWriterInputPixelBufferAdaptor y AVAssetWriter

Esto funciona bien en la mayoría de los casos, sin embargo, a veces el file .mov que está codificado está distorsionado (vea la image a continuación). Me preguntaba si este tipo de salida de image distorsionada es familiar para cualquier persona, y si hubiera algún paso, podría haber tomado la encoding de los frameworks que lo causarían. El problema ocurre específicamente cuando las imágenes de origen que uso se generan mediante llamadas en Titanium a ImageView.toBlob (). Además del lado de titanio, ¡cualquier sugerencia sobre cómo podría aparecer este tipo de resultados sería genial!

Gracias alexander

Pantalla de la película: http://tinypic.com/view.php?pic=8wkqys&s=7

Imagen original: http://commons.wikimedia.org/wiki/File:Phalaenopsis_(aka).jpg

Phalaenopsis_ (aka)

Por favor, eche un vistazo a este enlace . Dice que el ancho debe ser un múltiplo de 16.

Simplemente obtenga el tamaño. Ancho, calcule el número más cercano que es múltiplo de 16. Y el código duro en lugar del tamaño. Ancho.

Funciona 🙂

Ok, esto resultó ser un problema con la relación de aspecto de las imágenes que estaba leyendo en ser diferente de la relación de aspecto del PixelBuffer que estaba creando. Los hizo iguales y funciona bien.