Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #58, ОКТЯБРЬ 2003 г.

Свой видеокомбайн на Delphi

Лозовский Александр

Xakep, номер #058, стр. 058-082-3


RewindWhenDone - если TRUE, то позиция чтения файла по окончании воспроизведения возвращается к началу, если FALSE - остается.

AddFile - добавляет файл в список воспроизведения. Ей необходимо передать имя компонента TMMAVIFile.

AddStream - то же самое, но для потока.

hasAudio - принимает значение TRUE, если в заданном файле присутствует звук.

hasVideo - аналогично предыдущей, но для видео.

Playing - становится TRUE, если идет процесс воспроизведения.

Paused - TRUE, если воспроизведение на паузе.

И, наконец, процедуры PLAY, PAUSE и STOP заботятся, соответственно, о запуске воспроизведения, паузе и стопе.

Зная эти и некоторые другие процедуры, можно легко обойтись без визуальной части этого компонента и сделать собственный дизайн. Точнее, мы просто обязаны это сделать, если твое творение выйдет за пределы твоего компа. Думаю, пользователю не надо знать, почему он заплатил $20 за прогу, написанную с помощью чужих компонентов :). Правда, Multimedia Tools стоят около 260 евро, так что все справедливо.

MMAVIVideoDisplay - компонент-дисплей. Перед началом работы, как я уже говорил, должен быть связан с MMAVIControl, хотя возможна и работа на автопилоте - в этом случае показывать он будет не весь поток, а отдельные фреймы. Для этого необходимо:

1) Добавить файл в список.

2) Передать номер потока (то есть, первый).

3) Выбрать номер фрейма: AVIDisplay.FrameIdx := номер. Нумеруются они от нуля до Streams[x].Length-1, поэтому экранизацией легко управлять с помощью трекбара или слайдера.

MMAVICompressor - отвечает за работу с AVI-файлами. Например, ты легко можешь создать собственную AVI’шку из нескольких BMP, записывать потоки в файл и многое другое. По сути, это - путь к редактированию авишек. А плеер с функциями editor’а - это уже о-го-го, такое даже WMPlayer’у не под силу.

AddStream - добавляет поток в файл. Откуда брать поток и файл? Об этом я уже писал чуть выше, когда рассказывал про TMMAVIFile. Ей передается только один аргумент - переменная типа TMMAVIStream.

SaveToFile - сохраняет потоки в файле; главное здесь - не скинуть на диск ненужные данные, поэтому пользуйся FreeStreams как процедурой, обнуляющей список потоков. Те же действия, проведенные для аудиопотока с сохранением в WAV-файл, позволяют выдирать звук из файла кино. Возьми на заметку - очень полезная вещь.

Кодинг

Наконец-то мы переходим к торжественной части. Она будет совсем несложной, и тебе понадобится не более 1% CPU твоего мозга.

Клади на форму компоненты: 1 MMLabel (объемный лейбл из MMTools), 1 MMAVIVideoDisplay, 1 MMAVIOpenDialog, 1 MMAVIFile, 1 MMAVICompressor, 1 MMSlider (по типу трекбара из MMTools), 1 MMAVISaveDialog, 1 MMAVIControl, 4 кнопки. Вот как это примерно должно выглядеть:

Расставим caption’ы:

Button1 - "открыть...". Это кнопка для открытия файлов.

Button2 - "Обн. фреймы". А эта обнуляет список сохраненных фреймов.

Button3 - "Порвать A/V". Позволяет делить AVI-файл на два - с видео и со звуком.

Button4 - "По кадрам". После ее нажатия ты сможешь выбирать нужный тебе кадр с помощью slider'a.

Назад на стр. 058-082-2  Содержание  Вперед на стр. 058-082-4