4 Stimmen

Umwandlung einer XAML/WPF-Datei in ein Video (AVI, WMV, usw.)

Ich habe eine einfache WPF (XAML) Datei, die einige animierte Formen und Text hat. Die Animation hat kein interaktives Verhalten. Ich möchte diese Animation als Videodatei aufzeichnen, die ich später als "Intro"-Bildschirm für einen Screencast verwenden möchte.

Was ich glaube, dass ich brauche: C#-Code, der eine XAML-Eingabedatei nimmt und spuckt eine hohe Qualität WMV bei (zum Beispiel bei 24fps).

Mögliche Alternativen habe ich bereits untersucht

  1. Nehmen Sie mit einer Bildschirmaufzeichnungssoftware wie Camtasia Studio auf. Das funktioniert, aber die Animationen sind nicht so flüssig, vor allem, wenn die Animation viele Übergänge oder Bewegungen enthält

  2. Verwenden Sie Hardware wie DVI2USB von Epiphan Systems. Kostet zu viel; habe es nicht ausprobiert.

  3. Aufnahme von TV-Ausgangssignalen (S-Video usw.) mit einer DVR-Karte - Niedrige Qualität und niedrige Auflösung.

Update am 28. Oktober 2008 - funktionierender Quellcode

Dieser Blogbeitrag enthält ein voll funktionsfähiges Quellcode-Beispiel für den Export von WPF/XAML als AVI. Es ist nicht so schnell wie ich möchte, aber es funktioniert für meine Bedürfnisse:

Link zum MSDN-Blog bost

4voto

ima Punkte 7865

Frames mit RenderTargetBitmap rendern, dann mit einem Codec Ihrer Wahl codieren. Nicht sehr schnell, aber 24 fps sind auf einem normalen PC erreichbar. Wir verwenden eine ähnliche Technik, um den Videostream von neuen WPF-Indikatoren in ein altes Bitmap-System einzuspeisen. Es könnte eine bessere Lösung geben, aber es funktioniert.

Ich hörte auch von einer Lösung mit dem Ziehen von gerenderten Rahmen aus DirectX-Puffern, die WPF intern verwendet, die viel schneller als RenderTargetBitmap funktioniert, aber es schien zu unzuverlässig, in einem Produktionssystem zu verwenden

Update: es scheint, dass man keine Echtzeit benötigt, so dass RenderTargetBitmap ohne Probleme funktionieren sollte.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X