2013-07-24 3 views
11

Я пытаюсь написать код C#, чтобы извлечь каждый кадр файла .avi и сохранить его в предоставленном каталоге. Знаете ли вы какую-либо подходящую библиотеку для использования в этих целях?Извлечение фреймов файла .avi

Примечание: окончательная версия должна работать на всех системах независимо от установленного кодека или системной архитектуры. Он не должен требовать наличия на компьютере другой программы (например, MATLAB).

Заранее спасибо. Тунк

ответ

12

Это невозможно, если не добавить некоторые ограничения на ваш входной AVI файлы или иметь контроль над кодировщиком, используемым для их создания. Чтобы получить изображение, вам придется сначала его декодировать, и для этого вам понадобится соответствующий кодек, установленный или развернутый с вашим приложением. И я сомневаюсь, что его можно учесть для каждого кодека или установить/развернуть их все. Так что нет, вы не сможете открыть всего лишь avi-файл. Тем не менее, вы можете поддерживать самые популярные (или распространенные в вашем контексте) кодеки.

Самый простой способ сделать это - действительно использовать FFMPEG, так как его alredy включает в себя некоторые из наиболее распространенных кодеков (если вы не возражаете добавить 30+ Мб в приложение). Что касается оберток, я использовал обертку AForge в прошлом и ей очень понравилось, из-за того, насколько просто работать. Вот пример из его документации:

// create instance of video reader 
VideoFileReader reader = new VideoFileReader(); 
// open video file 
reader.Open("test.avi"); 
// read 100 video frames out of it 
for (int i = 0; i < 100; i++) 
{ 
    Bitmap videoFrame = reader.ReadVideoFrame(); 

    videoFrame.Save(i + ".bmp") 

    // dispose the frame when it is no longer required 
    videoFrame.Dispose(); 
} 
reader.Close(); 

Существует также VfW (который входит в Windows, по умолчанию) обертка в AForge, если вы хотите сохранить его простым, без привлечения внешних библиотек. Вам все равно понадобятся совместимые с VfW кодеки (некоторые из них включены в Windows по умолчанию, большинство из них не являются).

+1

Для тех, кому нужна простая библиотека для работы с видео .avi, я использовал AForge. Он бесплатный и не увеличивает размер программы. Я использовал библиотеку VFW, так как мне не удалось заставить FFMPEG работать, но очень просто извлечь фреймы при условии, что у машины есть соответствующий кодек для конкретного видео .avi. – talkanat

Смежные вопросы