Как получить миниатюру видео в .Net?
Я хочу реализовать функцию, которая извлекает один кадр из входного видео, поэтому я могу использовать его как миниатюру.
Что-то в этом направлении должно работать:
// 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?
Правильное решение будет "лучшей" реализацией этой функции.
Бонусные баллы за исключение выбора пустых кадров.
Ответы
Ответ 1
Я закончил свой собственный самостоятельный класс (с единственным описанным мной методом), источник может быть просмотрен здесь. Медиа-браузер - это GPL, но я рад за код, который я написал для этого файла, чтобы быть общедоступным. Имейте в виду, что он использует interop из проекта directshow.net, поэтому вам придется очистить эту часть кода от них.
Этот класс не будет работать для файлов DVR-MS, вам нужно ввести для них фильтр прямого просмотра.
Ответ 2
Этот проект будет делать трюк для AVI: http://www.codeproject.com/KB/audio-video/avifilewrapper.aspx
В любом другом формате вы можете посмотреть в directshow. Есть несколько проектов, которые могут помочь:
http://sourceforge.net/projects/directshownet/
http://code.google.com/p/slimdx/
Ответ 3
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();
Ответ 4
Есть несколько библиотек в www.mitov.com, которые могут помочь. Это универсальная оболочка для функции Directshow, и я думаю, что одна из демонстраций показывает, как взять кадр из видеофайла.
Ответ 5
Это также стоит посмотреть:
http://www.codeproject.com/Articles/13237/Extract-Frames-from-Video-Files