C# 在winRT gridview中显示视频图像

C# 在winRT gridview中显示视频图像,c#,xaml,windows-runtime,winrt-xaml,mediaelement,C#,Xaml,Windows Runtime,Winrt Xaml,Mediaelement,我正在开发一个Windows 8应用商店应用程序,我有这个问题, 我希望用户从文件选择器添加视频,我管理了它, 问题是我想在GridView中显示视频图像, 就像视频在某个位置的快照一样,我尝试了媒体元素,但它不起作用 还有一个图像,它没有意义。这个问题可能没有一个纯粹的C#解决方案。也许SharpDX会让你这么做,但我没有试过,也不知道以前是否做过。如果您查看这两个线程: --您应该看到,有一种方法可以用于将帧从视频流复制到DirectX纹理。显示了如何在本地使用它。如果您搜索Transf

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

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


--您应该看到,有一种方法可以用于将帧从视频流复制到DirectX纹理。显示了如何在本地使用它。如果您搜索TransferVideoFrame+SharpDX,您可以在C#中找到使用。将该帧传输到纹理后-可以使用
Map
Unmap
等方法将纹理的内容复制到
WriteableBitmap
。您还可以使用
BitmapEncoder
a将其保存到文件中,或使用WIC或SharpDX Toolkit将其直接从DirectX纹理保存到文件中,如中所示。您可能希望建立缩略图缓存,以避免每次显示列表时都必须处理视频,因此无论如何都应该将其保存到文件中。

您在别处引用的解决方案至少适用于某些视频:

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

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

您可能需要使用MediaFoundation和DirectX和WIC来将其保存在一个缩略图缓存中。