【问题标题】:Saving current frame of video-Windows Store app保存当前帧视频-Windows Store 应用
【发布时间】:2013-08-10 03:02:49
【问题描述】:

我有一个场景,从库中选择视频并在单击按钮时将帧保存为图像。就像我们可以在 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; 但它不适用于媒体元素。

我发现帖子与我的This post 最相似,但我不明白如何使用它,因为它是用 C++ 编写的,我正在用 c# 创建我的应用程序。

【问题讨论】:

  • 你做到了吗?
  • 当时没有保存当前的媒体帧,播放视频时出现黑色图像。我需要这个来为视频创建缩略图,以便稍后保存在服务器上,我必须使用默认创建的视频缩略图。

标签: c# windows-store-apps render image-capture


【解决方案1】:

您可以使用 Emgu CV 框架进行实时捕获以及处理视频文件。这里是 Emgu 社区官方页面的 link 解释此示例。

【讨论】:

    猜你喜欢
    • 2015-05-19
    • 1970-01-01
    • 1970-01-01
    • 2016-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-16
    相关资源
    最近更新 更多