Ich habe eine Sequenz von JPG-Bildern, die ich auf dem Bildschirm erfassen und rendern, um ein Video zu erstellen.Rendering einer Sequenz von Bildern in C#, um ein Video zu machen
Ich entpacke das Bild aus einem MemoryStream mit einem JpegBitmapDecoder und render es, indem Sie die Quelle auf ein Bild-Steuerelement festlegen. Das scheint in Ordnung zu sein, aber der Prozessor-Overhead ist ziemlich hoch. Die Bilder sind 1280x720, laufen mit 30fps und ich kann nur knapp mit meinem Computer mithalten (Dual Core 2.8Ghz). Das Laufen bei höheren Auflösungen bringt mich dazu, Frames wegzuwerfen. Ich würde gerne versuchen, die CPU-Auslastung zu senken.
Die meiste ausgegebene Zeit scheint in der Entschlüsselung zu sein (einfache Benchmarks der Decodierung allein auf meiner Maschine zeigen, dass ich über 40fps decodieren kann). Weiß jemand, ob es einen schnelleren Decoder gibt (DirectX? DirectShow? Etwas kann ich auf die Grafikkarte auslagern?)
Wie beim Rendern scheint es nicht so, als wäre das Image Control für diese Art der Nutzung ausgelegt (Ich war wirklich überrascht, dass es überhaupt funktioniert hat, ich habe es einfach ausprobiert, weil es einfach war). Gibt es eine andere Möglichkeit, die einzelnen Frames schneller zu rendern?
Eine alternative Lösung könnte sein, die jpg sequentiell zu benennen und dann die erste in VirtualDub zu öffnen, die sie dann als Video abspielen wird. –
Ich hätte klarer sein sollen. Ich streame die Bilder und möchte ein Live-Video von den gestreamten Bildern abspielen. – Dolphin
Welche Methode verwenden Sie, um die JPEG-Bilder zu streamen? Ich versuche fast genau dasselbe und verwende BinaryFormatter um den MemoryStream einzukapseln und zu senden. Ich frage mich, ob es eine bessere Methode gibt. – geometrikal