Получение растрового изображения для первого кадра AVI в Silverlight - PullRequest
0 голосов
/ 13 апреля 2009

Мне было интересно, есть ли способ программно получить первый кадр AVI и получить растровое изображение, чтобы показать пользователю предварительный просмотр. MediaControl в Silverlight показывает предварительный просмотр видеофайлов, поддерживаемых Silverlight, но не AVI. Поскольку я нахожусь в среде Silverlight, я не могу использовать неуправляемый код или библиотеки для этого. У меня есть доступ только к файловому потоку.

Ответы [ 2 ]

1 голос
/ 14 апреля 2009

Среда выполнения Silverlight не имеет встроенной поддержки файлов AVI, поэтому вы не сможете использовать их с MediaElement.

Что вам нужно сделать, так это на самом деле проанализировать AVI-файл вручную и извлечь кадры из этого файла. Как только вы дойдете до точки, где вы анализируете фреймы, это может стать немного хитрее.

Если вы планируете эту работу в Silverlight 2, ваш файл AVI должен содержать кадры WMV или кадры в одном из поддерживаемых форматов изображений Silverlight (JPG или PNG). Если бы вы работали с WMV, я бы настроил MediaStreamSource и передал нужный видеокадр MediaStreamSource в качестве первого примера. Если вы работаете с одним из форматов изображений, вы должны использовать Image и установить его источник в поток. Вы можете увидеть пример, где Джо Стегман использовал это, чтобы помочь Silverlight 2 поддерживать неродные форматы изображений .

Если вы делали это в Silverlight 3 (он сейчас в бета-версии), то методы, как правило, одинаковы, но поддержка форматов мультимедиа немного расширяется и включает (помимо WMV): кадры H264, Raw YV12 или Raw ARGB , Точно так же в области обработки изображений у вас теперь есть WriteableBitmap, который вы можете использовать для рисования рамки.

Если ваше видео представляет собой что-то вроде Theora, Divx, Xvid, VP6 и т. Д. Вам необходимо найти способ декодирования этого кадра, чтобы вы могли отобразить его в Silverlight.

1 голос
/ 13 апреля 2009

Аналогичный вопрос был размещен на форуме Silverlight . В ветке форума приведены примеры кода.

Возможно, вы захотите выбрать кадр дальше в видео, так как первые несколько кадров могут исчезнуть или не очень репрезентативно для видео.

В зависимости от кодировки ваши файлы AVI могут быть недоступны для чтения классом MediaPlayer. (См. здесь для совместимых кодировок). Возможно, вам придется перекодировать видео, чтобы сделать это с помощью управляемого кода. Если вы не найдете / не напишите свой собственный декодер.

...