Ich habe eine Windows Forms-Anwendung in C# geschrieben, die das eingebettete Windows Media Player (AxInterop.WMPLib.dll und WMPLib.dll) verwendet, um einige Videodateien abzuspielen. Jetzt muss ich eine Option zum Erfassen eines Bildes aus dem Video hinzufügen, wenn auf die Schaltfläche geklickt wird. Wenn ich die fensterlose Option auf true setze, kann ich ein Bild aus einem Video erfassen, aber wenn ich die fensterlose Option auf true setze, sehe ich auf einigen Computern kein Video-Bild. Ohne die fensterlose Option erhalte ich nur einen schwarzen Bildschirm mit diesem Code:
System.Drawing.Image ret = null;
try{
Bitmap bitmap = new Bitmap(wmPlayer.Width-26, wmPlayer.Height-66);
{
Graphics g = Graphics.FromImage(bitmap);
{
Graphics gg = wmPlayer.CreateGraphics();
{
this.BringToFront();
g.CopyFromScreen(
wmPlayer.PointToScreen(
new System.Drawing.Point()).X+13,
wmPlayer.PointToScreen(
new System.Drawing.Point()).Y,
0, 0,
new System.Drawing.Size(
wmPlayer.Width-26,
wmPlayer.Height-66)
);
}
}
using (MemoryStream ms = new MemoryStream()){
bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
ret = System.Drawing.Image.FromStream(ms);
ret.Save(@"C:\\WMP_capture.png");
pictureBox1.Image=ret;
}
}
bitmap.Dispose();
}catch (Exception){ }
Wie kann ich einen Frame (Snapshot) aus einem Video, das im eingebetteten Windows Media Player abgespielt wird, ohne die fensterlose Option in C# erfassen?
Oder gibt es einen anderen Videoplayer für C# Windows Forms, der einfach implementiert werden kann und Capture-Funktionen unterstützt.