Ich muss die Wiedergabe einer AVI-Datei in einer WinForms-App mit C # einbetten und steuern können. Das Video muss in das Formular eingebettet und nicht in einem separaten Media Player-Fenster gestartet werden.
Was ist der beste Ansatz dafür? Ich fand den System.Media-Namespace, der vielversprechend klang, aber es scheint, dass das nur für Sound nützlich ist.
Verwenden Sie DirectX, um dies zu tun? MCI? Oder ein anderer Ansatz?
Sie können Media Player in Ihrem WinForm verwenden. Dies wäre ein einfacher Weg, es zu tun.
Wie ich es gemacht habe, war, und ich zitiere:
%Vor%Klicken Sie mit der rechten Maustaste auf die Toolbox, und klicken Sie auf Elemente auswählen.
Hinweis: Wenn die Toolbox nicht angezeigt wird, klicken Sie im Menü Ansicht auf Toolbox öffne es. Das Dialogfeld Toolbox-Elemente anpassen wird geöffnet.
Aktivieren Sie auf der Registerkarte COM-Komponenten das Kontrollkästchen Windows Media Player, und dann auf OK klicken.
Das Windows Media Player-Steuerelement wird auf der aktuellen Toolbox-Registerkarte angezeigt.
Wenn Sie das Windows Media Player-Steuerelement der Toolbox Visual hinzufügen Studio fügt automatisch Verweise auf zwei Bibliotheken hinzu: AxWMPLib und WMPLib. Der nächste Schritt besteht darin, das Steuerelement dem Windows-Formular hinzuzufügen.
So fügen Sie das Windows Media Player-Steuerelement zu einem Windows-Formular hinzu
Ziehen Sie das Windows Media Player-Steuerelement aus der Toolbox auf Windows Formular.
Legen Sie im Eigenschaftenfenster die Dock-Eigenschaft auf "Füllen" fest. Du kannst tun Klicken Sie dazu auf das mittlere Quadrat.
Doppelklicken Sie auf die Titelleiste des Formulars, um das Load-Standardereignis hinzuzufügen im Quelltext-Editor.
Fügen Sie dem Form_Load-Ereignishandler den folgenden Code hinzu, um ein Video zu laden wenn die Anwendung geöffnet wird.
Ich würde überlegen die WPF-Mediensteuerelemente zu verwenden und einfach das ElementHost verwenden, um Ihr WPF-Steuerelement in Ihre WinForms-App zu integrieren. Ich denke, dass Sie eine viel reichere Erfahrung bekommen werden.
Weitere Informationen finden Sie unter System.Windows.Forms.Integration
Die Vorschläge von Daok und Brian Genisio sind beide gute Optionen. Lassen Sie mich ein drittes hinzufügen: DirectShow. War ursprünglich Teil von DirectX, wurde jetzt jedoch zum Windows SDK hochgestuft. Es gibt viele gute C # -Beispielanwendungen, die man sich anschauen kann, und es gibt die vollständige Kontrolle über die Wiedergabe.