Создайте видеопоток (AVI) из серии изображений

Существует веб-камера IP, которую я написал .NET-класс еще некоторое время назад. Это в основном реализация таймера, которая каждые пять секунд записывает снимок CGI script из камеры. Сама камера очень грубовата; у меня нет каких-либо API для меня, единственное, что я могу сделать программно (удаленно), вызывает этот script. script возвращает изображение с разрешением 640x480 JPEG. Простой.

Теперь то, что мне нужно сделать, - это потратить на эти дни несколько дней, и создать из него "потоковый" видеопоток AVI, который в конечном итоге будет встроен в веб-страницу. Как это сделать с помощью VB.NET?

Ответ 1

.net напрямую не поддерживает видеоформаты. Лучше всего использовать сторонний инструмент для создания .avi.

ffmpeg - один из вариантов. Вы можете получить доступ к нему напрямую через командную строку следующим образом:

ffmpeg -f image2 -i img%d.jpg /output/a.mpg

Вам нужно будет назвать ваши изображения img1.jpg, img2.jpg и т.д. Подробнее см. ffmpeg faq. Вы также должны найти подробную информацию о том, как выводить различные видеоформаты.

Вы можете запустить процесс из vb, используя Process.Start(). Что-то вроде этого:

Process.Start("ffmpeg.exe", "-f image2 -i img%d.jpg /output/a.mpg")

Вы также можете взглянуть на ffmpeg-sharp или Tao.FFmpeg, они являются .net-обложками для библиотек ffmpeg. Я лично не пробовал, но похоже, что это может помочь вам.

Другой альтернативой было бы взглянуть на MEncoder, который имеет аналогичную функциональность. Вы должны иметь возможность искать аналогичную командную строку для этого инструмента.

[Связанный вопрос SO: 271003]

Ответ 4

Существует несколько инструментов командной строки, которые могут принимать серию изображений и выводить AVI файл. Я предлагаю вам позвонить одному из них из вашего приложения.

Я бы предоставил ссылки на предложения, но прошло много лет с тех пор, как я его использовал.

Изменить: видимо, вы можете сделать это, используя ffmpeg: http://ffmpeg.org/ffmpeg-doc.html

Для создания видео со многих изображений:

ffmpeg -f image2 -i foo-% 03d.jpeg -r 12-s WxH foo.avi

Синтаксис foo-% 03d.jpeg указывает на используйте десятичное число, состоящее из трех цифры, заполненные нулями, чтобы выразить порядковый номер. Это то же самое синтаксис, поддерживаемый C printf функции, но только форматы, принимающие нормальное целое.