1

仕事中、私は通常CVOpenGLESTextureCacheCreateTextureFromImage、フォブからキャッシュ テクスチャを取得するために使用します。次に、asssetwriter を使用して mov ファイルを書き込みます。mov は正常に再生されますが、ビデオは上下逆になっています。

インターネットを検索したところ、これをコーディングする必要があることがわかりました:

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

正常に動作しますが、Windows XP で再生すると、まだ上下が逆になります。iOS だけでも、Apple OS 以外の Quicktime ビデオ プレーヤーでも問題なく再生できることがわかりました。

では、その理由は何ですか?うまくいかないのはなぜですか?

4

1 に答える 1

0

再生時にビデオ画像に画像変換を適用するためのCGAffineTransformMaskScale' merely sets some meta information in themov` コンテナ。ただし、このフラグを尊重するのは Quicktime プレーヤーだけです。

そもそも画像が上下逆さまになっているのは、OpenGL が画像の原点を左下に想定しているのに対し、ほとんどのビデオ画像フォーマットは画像を左上に配置しているためです。これらの仮定が衝突すると、もちろん画像が反転します。適切な解決策は、このメタデータ フラグを設定するだけでなく、実際に画像を反転することです。

中間ステップでスキャンラインを逆にするだけなので、画像を反転するのは簡単です。

于 2013-02-05T12:41:17.687 に答える