1

在我的工作中,我通常使用CVOpenGLESTextureCacheCreateTextureFromImage从 fob 获取缓存纹理。然后我用assetwriter写了一个mov文件,mov播放得很好,但视频是颠倒的。

我确实搜索了互联网,发现我应该编码:

assetWriterInput.transform=CGAffineTransformMakeScale(1.0, -1.0);

它工作正常,但是当我在 Windows XP 上播放它时,它仍然是颠倒的。我发现它只在 iOS 或非 Apple 操作系统上的 Quicktime 视频播放器上播放良好。

那么是什么原因呢?为什么它不起作用?

4

1 回答 1

0

mov`CGAffineTransformMaskScale' merely sets some meta information in the容器在播放时对视频图像应用一些图像转换。然而,只有 Quicktime 播放器才会尊重此标志。

图像首先是颠倒的,这是由于 OpenGL 假设图像原点位于左下角,而大多数视频图像格式将其放置在左上角,如果这些假设发生冲突,这当然会翻转图像。理智的解决方案是实际翻转图像,而不仅仅是设置此元数据标志。

翻转图像很容易,因为您只需在中间步骤中反转扫描线。

于 2013-02-05T12:41:17.687 回答