AVInfo documentation

(прошу прощения, документация в стадии написания, текст не полон)

КРАТКОЕ ОПИСАНИЕ

AVInfo - консольная утилита для извлечения информации из мультимедийных файлов о видео, аудио. Работает как с индивидуальными файлами, так в пакетном режиме. Позволяет создавать списки файлов с указанием характеристик файлов (txt, html, csv)

Лирическое предисловие

Чтобы быстро объяснить, что такое AVInfo и для чего он нужен, скажу, что меня сподвигло на его написание.

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

Очевидным является желание сделать автоматическую генерацию и выкладывание в интернет (на сайт) списка с актуальными файлами. Конечно, в минимальном варианте для этого достаточно команды DIR, но при этом не указывается довольно существенная информация (такая как разрешение, fps видео, качество звука).

Все перепробованные мною программы, создающие подобного рода списки отличаются удивительной непродуманностью (например, указывают размер трёхсотмегабайтного файла в байтах, добавляют не нужне слова, вроде "mpeg picture sequence". Половина программ очень плохо интегрировалась в bat-файлы. А уж про списки в html и говорить нечего - те программы, которые их умели делать совершенно не умели работать с командной строкой и требовали много "мышекликания". А как я уже сказал выше, хотелось, чтобы "оно" само делало списки (по вызову из шедулера).

С чего начиналась история програмы лучше не вспоминать, но сейчас AVInfo находится в двух шагах от своего релиза. Из пока нереализованного - это поддержка *.mkv и кеш данных.

Официальная часть

УСТАНОВКА

Microsoft Windows 95,98,ME,NT,2k,XP,2003s (и будущие версии):

Поместите avinfo.exe из архива с программой в каталог, прописаный в path. Если лень разбираться с тем, что это такое и зачем - просто положите в каталог c:\windows (для windows 95,98,ME,XP) или c:\winnt (для NT/2k). Для того, чтобы проверить успешность установки, нажмите кнопку Пуск, выберете пункт "выполнить", наберите команду "avinfo -l-" (без кавычек). На экране должно появиться консольное окно. Выйдете из этого окна, нажав Ctrl-C. AVInfo готов к использованию. Примеры использования см. в пункте ПРИМЕРЫ.

Linux, FreeBSD, *nix:

Распакуйте архив, перейдите в каталог src, наберите команду make. Если компиляция будет успешной, поместите файл avinfo в каталог для исполняемых файлов. (например, /usr/bin, /usr/local/bin) Для успешной компиляции необходим bison и gcc.

N.B. Разумеется, GCC и Bison должны быть установлены.

N.B. К сожалению, в связи с отсутствием у меня под руками big-endian машины, проверить на ней работоспособность мне не представляется возможным. (хотя работать должно)

Компиляция AVInfo под Windows (если вдруг приспичило):

make-файл предназначен для работы под *nix-like операционные системы. При компиляции под windows нужно использовать файл Makefile.win (командой make -f Makefile.win, или просто удалите оригинальный Makefile и переименуйте Makefile.win в Makefile) В случае отсутствия gcc, собирать можно любым компилятором, руками указав компилировать все файлы C-файлы. Бизон можно найти тут: http://bison.gnu.org/

На всякий случай, готовый (обработанный бизоном) файл лежит в каталоге nobison, рядом с исходными текстами.

ПРИНЦИП РАБОТЫ

AVInfo читает указанный (указанные) имена файлов, передаёт файл модулю, ответственному за обработку файлов соответствующего типа (avi - riffparse, mp3 - mp3parse, mpeg 1,2 - mpegparse, ogm -omgparse etc). Модуль читает информацию о содержимом файла (разрешение, fps, длительность кодеки, etc), создаёт переменные с соответствующими значениями. После вызова модуля avinfo вызывает ПАРСЕР ШАБЛОНА. Шаблон - записанный при помощи встроенного языка (A.S.S. - AVInfo Simple Script) инструкции по выводу на экран информации. Парсер обрабатывает шаблон, выводит информацию в файл или на stdout, в зависимости от настроек.

В некоторых случаях, avinfo может по мере вызова модулей обработки файлов собирать статистику, выводить шапку/хвост.

Шапка - шаблон, который выводится до вывода первого файла.

Хвост - шаблон, который выводится после вывода информации о каждом файле. Статистика обычно печатается в хвосте.

РЕЖИМЫ РАБОТЫ

AVInfo может работать в двух режимах - с обработкой единичного файла и с обработкой списка файлов. Режимы переключаются опцией -l (см ниже). При обработке списка файлов имя файла, указанного в командной строке, игнорируется.

ИЗВЛЕКАЕМАЯ ИНФОРМАЦИЯ

AVInfo умеет извлекать информацию из следующих файлов:

Некоторые типы файлов, не поддерживаемые AVInfo, но являющиеся видео, не обрабатываются, но указываются в списках (*.rm, *.asf, *.wmv, *.mkv).

Так же, в некоторых режимах (--list, --html-list), собирается статистика по обработанным файлам, а именно:

Основное предназначение статисткики - увидеть, есть ли в обработанных файлах "низкокачественные" (с низким fps/bitrate/resolution).

ИСПОЛЬЗОВАНИЕ (командная строка)

Замечание вместо символа '=' (равно) можно использовать или ':' (двоеточие) или вообще пропускать символ (т.е. печатать значение ключа сразу после самого ключа).

Общий синтаксис вызова AVInfo выглядит так:

avinfo [keys] [filename] [--mode]

ОПЦИИ (keys):

ИМЯ ФАЙЛА

стандартное имя файла (как с путём, так и без). В настоящий момент avinfo не понимает символы маски (*,?).

РЕЖИМЫ (modes)

Cуществует несколько режимов, в которых показывается информация о файле. Каждый режим указывается при помощи двойного дефиса (--) и имени шаблона, который следует использовать. (avinfo a.avi --short)

ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ

ИНДИВИДУАЛЬНЫЙ РЕЖИМ (режим одного файла)

avinfo somefile.ogm

Самый простой пример. Будет выведена информация про файл.

avinfo -f:mpeg somefile.avi

Попытаться обработать указанный файл как mpeg-файл.

avinfo test.avi --raw

Вывести информацию о файле test.avi, используя шаблон raw (вывести всю информацию в формате, удобном для обработки внешними модулями).

ПАКЕТНЫЙ РЕЖИМ (режим со списком файлов)

dir /s /b somedir|sort|avinfo -l- --list >result.txt (для Windows)

ls -1 -R somedir|sort|avinfo -l- --list >~/result.txt (для Linux)

сформирует файл result.txt c отчётом о файлах в каталоге somedir, добавит в конец файла статистику об отсканированных файлах.

ls -1 -R /data/video |sort|avinfo -e:mp3 -l- --html-list >/pub/www/list/files.html

Создаст в виде html-файла список файлов с описаниями. Будут обработаны все файлы, кроме mp3.

[TODO]........