gpt4 book ai didi

c# - 从在 C# 中的 Windows 媒体播放器上播放的视频中获取图像

转载 作者:行者123 更新时间:2023-11-30 21:03:34 25 4
gpt4 key购买 nike

在我的 Windows 应用程序中,我使用 Windows Media Player dll 来播放视频。

在我的表单中,我有一个按钮可以为当前视频帧拍照。

我做了很多测试和代码检查,但我找不到为什么拍摄当前帧的照片失败。

我试过这段代码,但生成的图像是黑色的:

private Graphics g = null;

private void btnTakePicture_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(axWMVMovie.URL))
{
axWMVMovie.Ctlcontrols.pause();
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
System.Drawing.Image ret = null;
try
{
Bitmap bitmap = new Bitmap(axWMVMovie.Width, axWMVMovie.Height);
{
g = Graphics.FromImage(bitmap);
{
Graphics gg = axWMVMovie.CreateGraphics();
{
timerTakePicFromVideo.Start();
}
}

using (MemoryStream ms = new MemoryStream())
{
bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
ret = System.Drawing.Image.FromStream(ms);
ret.Save(saveFileDialog1.FileName);
}
}
}
catch
{
}
}
}
}

private void timerTakePicFromVideo_Tick(object sender, EventArgs e)
{
timerTakePicFromVideo.Stop();

g.CopyFromScreen(axWMVMovie.PointToScreen(new System.Drawing.Point()).X,

axWMVMovie.PointToScreen(new System.Drawing.Point()).Y, 0, 0,

new System.Drawing.Size(axWMVMovie.Width, axWMVMovie.Height));
}

我使用 Timer 是因为当用户选择保存路径时,函数会从用户在 save file dialog 中指定的文件中获取图像。视频格式为WMV。

最佳答案

我获取了您的代码修改了它。我把捕捉照片的代码放了一点,现在它可以工作了。我在 saveFileDialog 弹出之前创建了图片,所以您实际上只会得到图片,而不是图片中的 saveFileDialog。

if (!string.IsNullOrEmpty(axWindowsMediaPlayer1.URL))
{
axWindowsMediaPlayer1.Ctlcontrols.pause();

System.Drawing.Image ret = null;
try
{
// take picture BEFORE saveFileDialog pops up!!
Bitmap bitmap = new Bitmap(axWindowsMediaPlayer1.Width, axWindowsMediaPlayer1.Height);
{
Graphics g = Graphics.FromImage(bitmap);
{
Graphics gg = axWindowsMediaPlayer1.CreateGraphics();
{
//timerTakePicFromVideo.Start();
this.BringToFront();
g.CopyFromScreen(
axWindowsMediaPlayer1.PointToScreen(
new System.Drawing.Point()).X,
axWindowsMediaPlayer1.PointToScreen(
new System.Drawing.Point()).Y,
0, 0,
new System.Drawing.Size(
axWindowsMediaPlayer1.Width,
axWindowsMediaPlayer1.Height)
);
}
}
// afterwards save bitmap file if user wants to
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
using (MemoryStream ms = new MemoryStream())
{
bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
ret = System.Drawing.Image.FromStream(ms);
ret.Save(saveFileDialog1.FileName);
}
}
}
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
}
}

关于c# - 从在 C# 中的 Windows 媒体播放器上播放的视频中获取图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12777042/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com