Effizientes Aufnehmen von Pixeln aus Videos

Ich suche nach einer effektiven Möglichkeit, Bilddaten aus Videodateien zu extrahieren. Ich teste geradeFilgraphManagerClass.GetCurrentImage() von demInterop.QuartzTypeLib Bibliothek. Das macht was ich brauche, ist aber schmerzhaft langsam. Ich muss alle Frames jedes Videos verarbeiten. Welche besseren Möglichkeiten habe ich?

Bedarf

Muss rahmengenau sein. <- Sehr wichtig!Ermöglicht mir den Zugriff auf den decodierten Pixelpuffer (Array vonint oderbyte[]), idealerweise RGB24 oder RGB32.Der Puffer kann in Echtzeit oder schneller abgerufen werden. Ich muss das Video nicht anzeigen, ich muss nur die Pixel analysieren.Behandeln Sie mp4-Dateien (h264 / aac). Ich kann bei Bedarf über AviSynth neu einwickeln oder Bilder bereitstellen, aber es kann keine erneute Codierung erforderlich sein.

Anregungen wären willkommen.

Code wie gewünscht:

FilgraphManagerClass graphClass = new FilgraphManagerClass();
graphClass.RenderFile(@"C:\tmp\tmp.avs");

int sz = (graphClass.Width * graphClass.Height + 10) * 4;    
int[] buffer = new int[sz - 1];

Ich gehe dann jeden Frame durch. Ich habe so etwas in der Schleife:

graphClass.GetCurrentImage(ref sz, out buffer[0]);
//DoStuff(buffer);
graphClass.CurrentPosition += graphClass.AvgTimePerFrame;

Antworten auf die Frage(2)

Ihre Antwort auf die Frage