在我工作期间,我通常使用CVOpenGLESTextureCacheCreateTextureFromImage
从fob获取缓存纹理。然后我使用asssetwriter来编写一个mov文件,mov播放效果很好,但视频是颠倒的。
我确实搜索了互联网,发现我应该编码:
assetWriterInput.transform=CGAffineTransformMakeScale(1.0, -1.0);
它工作正常,但是当我在Windows XP上播放时,它仍然是颠倒的。我发现它在iOS或非Apple OS上的Quicktime视频播放器上播放效果很好。
那是什么原因?为什么不起作用?
答案 0 :(得分:0)
CGAffineTransformMaskScale' merely sets some meta information in the
mov`容器,用于在播放时将一些图像转换应用于视频图像。但是只有Quicktime播放器才会尊重此标志。
图像首先是颠倒的,是由于OpenGL假设图像来自左下角,而大多数视频图像格式将其放在左上角,如果这些假设发生碰撞,这当然会翻转图像。理智的解决方案是实际翻转图像,而不仅仅是设置元数据标志。
翻转图像非常简单,因为您只需在中间步骤中反转扫描线。