Как получить миниатюру видео в .Net? - PullRequest
26 голосов
/ 01 октября 2008

Я хочу реализовать функцию, которая извлекает один кадр из входного видео, чтобы я мог использовать его в качестве эскиза.

Что-то вроде этого должно работать:

// filename examples: "test.avi", "test.dvr-ms"
// position is from 0 to 100 percent (0.0 to 1.0)
// returns a bitmap
byte[] GetVideoThumbnail(string filename, float position)
{
}

Кто-нибудь знает, как это сделать в .Net 3.0?

Правильным решением будет «лучшая» реализация этой функции. Бонусные баллы за избежание выбора пустых кадров.

Ответы [ 5 ]

10 голосов
/ 07 января 2009

В итоге я развернул свой собственный отдельный класс (с помощью описанного мною единственного метода), источник можно просмотреть здесь . Медиа-браузер имеет GPL, но я рад, что код, который я написал для этого файла, является Public Domain. Имейте в виду, что он использует взаимодействие из проекта directshow.net , поэтому вам придется очистить эту часть кода с ними.

Этот класс не будет работать с файлами DVR-MS, для них вам нужно добавить фильтр прямого показа.

7 голосов
/ 01 октября 2008

Этот проект сделает свое дело для AVI: http://www.codeproject.com/KB/audio-video/avifilewrapper.aspx

Что-нибудь в других форматах, вы можете посмотреть в DirectShow. Есть несколько проектов, которые могут помочь:
http://sourceforge.net/projects/directshownet/
http://code.google.com/p/slimdx/

4 голосов
/ 28 июля 2011

1 - Получить последнюю версию ffmpeg.exe из: http://ffmpeg.arrozcru.org/builds/

2- Извлеките файл и скопируйте ffmpeg.exe на ваш сайт

3- Используйте этот код:

Process ffmpeg;

string video;
string thumb;

video = Server.MapPath("first.avi");
thumb = Server.MapPath("frame.jpg");

ffmpeg = new Process();

ffmpeg.StartInfo.Arguments = " -i "+video+" -ss 00:00:07 -vframes 1 -f image2 -vcodec mjpeg "+thumb;
ffmpeg.StartInfo.FileName = Server.MapPath("ffmpeg.exe");
ffmpeg.Start();
0 голосов
/ 29 июля 2012

Это тоже стоит посмотреть:

http://www.codeproject.com/Articles/13237/Extract-Frames-from-Video-Files

0 голосов
/ 20 октября 2008

На www.mitov.com есть несколько библиотек, которые могут помочь. Это универсальная оболочка для функций Directshow, и я думаю, что одна из демонстраций показывает, как извлечь кадр из видеофайла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...