Программа видеозахвата/редакции в MPEG4
1. Общие сведения.
Требуется разработать заново или переделать частично ПО, которое используется для видеозахвата, записи, воспроизведения и редактирования видеофильма. Необходимо сохранить имеющийся программный интерфейс и среду программирования. Хотя это ПО используется для получения синхронизированной с ЭЭГ (электроэнцефалограммой) видеозаписи пациента, оно существует абсолютно автономно от использующей его программы управления электроэнцефалографом.
2. Функциональность имеющегося ПО.
- видеозахват, конвертирование в реальном времени в формат MPEG4 (DivX или Xvid);
- запись в реальном времени на жеский диск с возможностью пауз в записи, вызов заданной извне процедуры (feedback) при поступлении каждого записываемого фрейма (для синхронизации с внешним процессом);
- воспроизведение любого фрагмента фильма, начиная с любого заданного фрейма или воспроизведение любого фрейма статически;
- редактирование фильма (сохранение вместо исходного фильма его части, состоящей из заданного извне набора сегментов [от фрейма , до фрейма]); вызов заданного извне callback’а для возможности оценить оставшееся время редактирования.
3. Недостатки имеющегося ПО и функциональность, которой должно обладать новое ПО.
- запись звука осуществляется отдельно от записи фильма, потом все как-то синхронизируется. Надо записывать звук вместе с фильмом:
- фильм записывается с покадровым сжатием (т.е. использование MPEG4 неэффективно), а надо использовать сжатие по серии кадров, как обычно в MPEG4. (Использование покадрового сжатия обусловлено работой существующего ПО с кодеком через общие функции Direct Show, без использования особенностей конкретного кодека. При отказе от покадрового сжатия паузы при записи и редактирование не работают.)
- чтобы отредактировать фильм, сейчас приходится вызывать стороннюю программу (.exe), иначе редактирование не работает (недостаточно просто закрыть файл с фильмом и все объекты Direct Show). Нужно избавиться от этого ограничения.
- запись фильма осуществляется в один файл при любой длине фильма. Надо предусмотреть возможность автоматического сегментирования – закрывать файл с фильмом и открывать новый через заданное время записи. Эта опция требует незначительного изменения программного интерфейса и может быть сделана в последнюю очередь.
4. Практические детали.
Среда программирования – C++Builder, версия 5. Видео: Direct Show.
Имеется 2 демо-программы, использующие объекты, реализующие имеющееся ПО. Одна программа записывает фильм, другая – воспроизводит и редактирует. Поскольку интерфейс к новому ПО должен остаться прежним, предлагается использовать эти демо-программы в качестве «упаковки» для нового ПО. Проекты под C++ Builder’ом, включающие весь код как для демо-оболочки, так и для объектов для работы с видео, будут предоставлены.