Вопрос

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

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

// 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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top