2013-02-20 117 views
0

我正在开发Windows 8商店应用程序,我有这个问题, 我希望用户从文件选取器添加视频,并且我管理它, 问题是我想要显示在GridView中的视频图像, 就像在某个位置的视频快照,我试过媒体元素,它不工作 也是一个图像,它没有任何意义。在winRT gridview中显示视频图像

+0

您可能需要使用Media Foundation,也许DirectX和WIC将其保存在一个缩略图缓存中。 – 2013-02-21 04:47:03

回答

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#中找到使用SharpDX version of this methodthis sample。将该帧转换为纹理后 - 您可以使用MapUnmap方法(如​​)将纹理内容复制到WriteableBitmap。您也可以使用BitmapEncoder a here或直接从DirectX纹理使用WIC将文件保存到文件中,或者使用012D中的SharpDX Toolkit。您可能需要构建缩略图缓存以避免每次显示列表时都必须处理视频,因此保存到文件是您应该执行的操作。

0

自己的解决方案,你其他地方引用应该至少一些影片的工作:

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

我建议使用GetThumbnailAsync(),其作品一样好。你甚至不需要获取视频属性或类似的东西。如果加载StorageFile,这应该适用于任何格式的普通视频。