在winRT网格视图中显示视频图像

本文关键字:显示 视频 图像 视图 winRT 网格 | 更新日期: 2023-09-27 18:00:19

我正在开发一个Windows 8商店应用程序,我遇到了这个问题,我希望用户添加来自文件选择器的视频,并且我管理了它,问题是我想在GridView中显示视频图像,就像视频在某个位置的快照一样,我尝试了媒体元素,但它不起作用也是一个图像,但它没有意义。

在winRT网格视图中显示视频图像

这个问题可能没有纯粹的C#解决方案。也许SharpDX会让你这么做,但我没有尝试过,我不知道以前是否做过。如果你看看这两个线程:

http://social.msdn.microsoft.com/Forums/fil-PH/wingameswithdirectx/thread/05731d4f-5b7f-4ed1-8e28-94604655139e

http://social.msdn.microsoft.com/Forums/en/wingameswithdirectx/thread/ffacd05c-6e9e-43bf-b691-99127240730c

--您应该看到有一种TransferVideoFrame方法可以用于将帧从视频流复制到DirectX纹理。媒体引擎原生C++视频播放示例展示了如何原生使用它。如果您搜索TransferVideoFrame+SharpDX,您可以在C#中找到使用此方法的SharpDX版本的示例。将该帧传输到纹理后,可以使用MapUnmap方法将纹理的内容复制到WriteableBitmap,如这里所示。您也可以在此处使用BitmapEncoder a将其保存到文件中,也可以在这里使用WIC或SharpDX Toolkit将其直接从DirectX纹理保存到文件。你可能想建立一个缩略图缓存,以避免每次显示列表时都要处理视频,所以无论如何都应该保存到文件中。

您在其他地方引用的自己的解决方案应该至少适用于一些视频:

var thumb = await
    storageFile.GetThumbnailAsync(
        Windows.Storage.FileProperties.ThumbnailMode.PicturesView,
        1000,
        Windows.Storage.FileProperties.ThumbnailOptions.UseCurrentScale);

我建议使用GetThumbnailAsync(),它也同样有效。你甚至不需要获得视频属性或类似的东西。如果加载了StorageFile,这应该适用于任何格式的普通视频。