Chroma-Filtering-Video mit GPUImage?
Ich versuche, eine Videodatei mit Transparenz in meiner Anwendung mithilfe eines Transparenzschlüssels anzuzeigen (RGB: 0x00FF00
, oder volles Grün) mit @ BradLarson's awesomeGPUImage Toolkit. Ich habe jedoch einige Schwierigkeiten mit demGPUImageChromaKeyFilter
Filter, und ich verstehe nicht ganz warum.
Meine Quellvideodatei ist in meiner Dropbox verfügbarHier (12 KB, 3 Sekunden lang, voller grüner Hintergrund, nur ein Quadrat auf dem Bildschirm),
Und ich habe das Beispielprojekt mit dem Titel verwendetSimpleVideoFilter
.
Dies ist der Code, den ich verwenden wollte (ich habe ihn einfach ersetzt)-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];
Laut der Dokumentation (die spärlich ist) ist diessollte bewirken, dass das gesamte Grün im Video ersetzt wird. Stattdessen erhalte ich Folgendes als Ausgabe:
Was mir sagt, dass das Video abgespielt wird (und somit in die Anwendung kopiert wird), aber es scheint kein Chroma-Keying durchzuführen. Warum sollte das so sein? Muss ich Glättungswerte und Schwellenwerte manuell einstellen? Ich sollte nicht, weil die Quelle nur zwei Farben enthält (0x00FF00
und0x000000
).
Ich habe dies auch auf dem Gerät getestet, ohne Erfolg. Fast alle anderen Filter, die ich versuche, arbeiten wieGPUImageRGBFilter
, GPUImageSepiaFilter
usw. KönntenGPUImageChromaKeyFilter
nur kaputt sein?
Für jede Hilfe wäre ich dankbar, da ich an dieser Stelle den Boden des Fasses für Transparenz in einem Video schabe.