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