2013-02-20 3 views
0

Я разрабатываю приложение для Windows 8 Store, у меня есть эта проблема, Я хочу, чтобы пользователь добавлял видео из файла picker, и я управлял им, проблема в том, что я хочу отображать изображения видео в GridView, , как снятый снимок видео в определенной позиции, я попробовал элемент мультимедиа, и он не работает также изображение, и это не имеет смысла.отображение видеоизображения в winRT gridview

+0

Возможно, вам понадобится использовать Media Foundation и, возможно, DirectX и WIC, чтобы сохранить его в виде кеша эскизов. –

ответ

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 - вы можете найти this sample, который использует SharpDX version of this method в C#. После переноса этого кадра на текстуру вы можете скопировать содержимое текстуры в WriteableBitmap с использованием методов Map и Unmap, таких как here. Вы также можете сохранить его в файле либо с помощью BitmapEncoder a here, либо непосредственно из текстуры DirectX в файл с использованием WIC или скажем SharpDX Toolkit, как в here. Вероятно, вы захотите создать кеш миниатюр, чтобы избежать необходимости обрабатывать видео каждый раз, когда вы показываете список, поэтому сохранение в файле - это то, что вы должны делать в любом случае.

0

Ваше собственное решение, которое вы процитировали в других местах, которые должны работать, по крайней мере, в некоторых видео:

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

Я предлагаю использовать GetThumbnailAsync(), который работает так же хорошо. Вам даже не нужно получать свойства видео или что-то в этом роде. Если StorageFile загружен, это должно работать для обычного видео в любом формате.

Смежные вопросы