3

我有一个场景,从库中选择视频并在单击按钮时将帧保存为图像。就像我们可以捕获在 wpf 中播放的当前视频帧一样。

我在 Windows Phone 8 中做过这个-

        WriteableBitmap bmpCurrentScreenImage = new WriteableBitmap((int)media.ActualWidth, (int)media.ActualHeight);
        bmpCurrentScreenImage.Render(media, new MatrixTransform());
        bmpCurrentScreenImage.Invalidate();
        try
        {
            using (var stream = new MemoryStream())
            {
                bmpCurrentScreenImage.SaveJpeg(stream, bmpCurrentScreenImage.PixelWidth, bmpCurrentScreenImage.PixelHeight, 0, 100);
                stream.Seek(0, SeekOrigin.Begin);
                BitmapImage bi = new BitmapImage();
                bi.SetSource(stream);
                img.Source = bi;
            }
        }
        catch (Exception exp)
        { }

但是在 Windows 商店应用程序中,WritableBitmap 类没有像 SaveJpeg() 这样的功能,所以我使用了工具包中的 WriteableBitmapRenderExtensions -WriteableBitmap w = await WriteableBitmapRenderExtensions.Render(myMedia); w.Invalidate(); thumb.Source = w; 但它不适用于媒体元素。

在 goggling 中,我发现与我的这篇文章最相似的帖子,但由于它是在 C++ 中,我无法理解如何使用它,并且我正在使用 c# 创建我的应用程序。

4

1 回答 1

0

您可以使用 Emgu CV 框架进行实时捕捉,也可以用于处理视频文件。这里是Emgu 社区官方页面的链接,解释了这个例子。

于 2016-02-06T07:52:17.563 回答