在winRT gridview中显示视频图像

时间:2013-02-20 10:22:41

标签: c# xaml windows-runtime winrt-xaml mediaelement

我正在开发Windows 8商店应用,我有这个问题, 我希望用户从文件选择器中添加视频并进行管理, 问题是我想在GridView中显示视频图像, 就像在特定位置拍摄视频一样,我尝试了媒体元素并且它无法正常工作 也是一个图像,它没有意义。

3 个答案:

答案 0 :(得分:0)

可能没有针对此问题的纯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纹理。 Media engine native C++ video playback sample显示了如何在本地使用它。如果您搜索TransferVideoFrame + SharpDX - 您可以在C#中找到使用this sampleSharpDX version of this method。将该帧传输到纹理后 - 您可以使用WriteableBitmapMapUnmap方法将纹理内容复制到BitmapEncoder。您也可以使用{{1}} here或使用WIC直接从DirectX纹理将文件保存到文件,或者像here中一样将SharpDX Toolkit保存到文件中。您可能希望构建一个缩略图缓存,以避免每次显示列表时都必须处理视频,因此保存到文件是您应该做的事情。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

我建议使用GetThumbnailAsync(),它的效果也一样。您甚至不需要获取视频属性或类似内容。如果加载了StorageFile,这应适用于任何格式的普通视频。