@BradLarson の素晴らしいGPUImageRGB: 0x00FF00
ツールキットを使用して、透明キー (または完全な緑色) を使用して、アプリケーション内で透明なビデオ ファイルを表示しようとしています。ただし、フィルターでいくつかの問題が発生しており、その理由がよくわかりません。GPUImageChromaKeyFilter
私のソース ビデオ ファイルは、こちらのドロップボックスにあります(12 KB、長さ 3 秒、完全な緑色の背景、画面上の正方形のみ)。
というタイトルのサンプル プロジェクトを使用しましたSimpleVideoFilter
。
これは私が使用しようとしたコードです(単に置き換えました-viewDidLoad
):
NSURL *sampleURL = [[NSBundle mainBundle] URLForResource:@"sample" withExtension:@"m4v"];
movieFile = [[GPUImageMovie alloc] initWithURL:sampleURL];
filter = [[GPUImageChromaKeyFilter alloc] init];
[filter setColorToReplaceRed:0 green:1 blue:0];
[filter setEnabled:YES];
[movieFile addTarget:filter];
GPUImageView *filterView = (GPUImageView *)self.view;
[filter addTarget:filterView];
[movieFile startProcessing];
ドキュメント (まばらです) によると、これはビデオのすべての緑を置き換える効果があるはずです。代わりに、これを出力として取得します。
これは、ビデオが再生されている (つまり、アプリケーションにコピーされている) ことを示していますが、クロマ キー処理は行われていないようです。これはなぜでしょうか?スムージング値としきい値を手動で設定する必要がありますか? ソースには 2 つの色 (0x00FF00
と0x000000
) しか含まれていないため、そうすべきではありません。
デバイスでもこれをテストしましたが、役に立ちませんでした。GPUImageRGBFilter
、 など、使用しようとしている他のほとんどすべてのフィルターが機能しますGPUImageSepiaFilter
。GPUImageChromaKeyFilter
単に壊れている可能性がありますか?
この時点で、ビデオの透明性のためにバレルの底をこすっているので、これに関する助けをいただければ幸いです。