AVInfo documentation
(прошу прощения, документация в стадии написания, текст не полон)
КРАТКОЕ ОПИСАНИЕ
AVInfo - консольная утилита для извлечения информации из мультимедийных файлов о видео, аудио. Работает как с индивидуальными файлами, так в пакетном режиме.
УСТАНОВКА
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. К сожалению, в связи с отсутствием у меня под руками машины с сетевым порядком байт, проверить на ней работоспособность мне не представляется возможным.
Компиляция AVInfo под Windows (если вдруг приспичило):
make-файл предназначен для работы с GCC (GNU C Compiler) и GNU bison. В случае отсутствия gcc, собирать можно любым компилятором, руками указав компилировать все файлы C-файлы. Бизон можно найти тут: http://bison.gnu.org/
ПРИНЦИП РАБОТЫ
AVInfo читает указанный (указанные) имена файлов, передаёт файл модулю, ответственному за обработку файлов соответствующего типа (avi - riffparse, mp3 - mp3parse, mpeg 1,2 - mpegparse, etc). Модуль читает информацию о содержимом файла (разрешение, fps, длительность кодеки, etc), создаёт переменные с соответствующими значениями. После вызова модуля avinfo вызывает ПАРСЕР ШАБЛОНА. Шаблон - записанный при помощи встроенного языка (A.S.S. - AVInfo Simple Script) порядок вывода на экран информации, её оформление. Парсер обрабатывает шаблон, выводит информацию на экран (точнее, в stdout, так что он может быть перенаправлен в файл или на stdin другой программы). В зависимости от режима, avinfo может по мере вызова модулей обработки файлов собирать статистику, выводить т.н. шапку/хвост.
Шапка - шаблон, который выводится до вывода первого файла.
Хвост - шаблон, который выводится после вывода информации о каждом файле. Статистика обычно печатается в хвосте.
РЕЖИМЫ РАБОТЫ
AVInfo может работать в двух режимах - с обработкой единичного файла и с обработкой списка файлов. Режимы переключаются опцией -l (см ниже). При обработке списка файлов имя файла, указанного в командной строке, игнорируется.
ИЗВЛЕКАЕМАЯ ИНФОРМАЦИЯ
AVInfo умеет извлекать информацию из следующих файлов:
- *.avi - RIFF/AVI, извлекается информация о видео, аудио, информация из описания (LIST [INFO]), битрейт (из индекса idx1) Поддерживается до 9 аудио и 9 видео потоков.
- *.mp3, *.mp2 - MPEG/Layer3(2), извлекается информация о звуке, иформация из описания (id3v1 tag), приблизительная длительность воспроизведения (может давать неверные результаты для VBR-файлов)
- *.mpg,*.mpeg, *.vob - MPEG1(2), извлекается информация о видео и звуковых потоках, рассчитывается приблизительная длительность. Поддерживается до 9 аудио и 9 видео потоков. N.B. Есть некоторые проблемы с vob-файлами, так как часть информации в них хранится в private streams, которые в настоящий момент AVInfo игнорирует.
- *.srt, *.smi, *.sub, *.ssa - субтитры. В настоящий момент проверяется их язык (английский/не английский), бинарность.
Некоторые типы файлов, не поддерживаемые AVInfo, но являющиеся видео, не обрабатываются, но указываются в списках.
Так же, в некоторых режимах (--list, --html-list), собирается статистика по обработанным файлам, а именно:
- Общее количество файлов
- Число обработанных файлов
- Общий размер обработанных файлов
- Общая длительность воспроизведения обработанных файлов
- Минимальное встреченное видео разрешение
- Минимальные fps видео
- Минимальный битрейт (аудио, видео)
- Минимальная частота оцифорвки звука
Основное предназначение статисткики - увидеть, есть ли в обработанных файлах "низкокачественные" (с низким fps/bitrate/resolution).
ИСПОЛЬЗОВАНИЕ
avinfo [keys] [filename] [--mode]
ОПЦИИ (keys):
все опции имеют формат -S[:|=]value, т.е. состоят из дефиса, буквы, указывающей на опцию, символа двоеточия или равно (не обязательно) и самого значения опции. Примеры: -m80, -m=150, -l=mylist, -i:40. Если опция требует числа, а следующий после буквы опции (или симола равно/двоеточие) символ не числовой, то опция игнорируется.
- -m=size - максимальное число символов в строке. 0 - неограниченно. Например, -m39 ограничит вывод 39 символами.
- -f=extension - использовать модуль, ассоциированный с указанным расширением, игнорируя расширение файла. Например: avinfo test.avi -f:mpg укажет AVInfo обрабатывать файл test.avi, как если бы он был MPEG файлом.
- -l=list - Использовать файллист. При указании этой опции avinfo читает из указанного файла список файлов для обработки. Для чтения списка файлов из стандартного ввода (stdin) вместо имени списка файлов следует использовать дефис. Например (windows) dir /s /b|avinfo -l- --list (*nix) ls -1 |avinfo -l=0- --html-list Формат списка файлов простой - каждая строка соответствует одному имени файла. Имя должно быть без кавычек или маскировки символов! (такой формат делают dir c опцией /b и ls с опцией -1)
- -i=ms (or -iMs) - делать задержку перед сканированием каждого файла (параметр указывается в милисекундах).
- -e=extension - игнорировать файлы с указанным расширением. (например, ls -1|avinfo -e:mp3 --list выведет информацию про указанные файлы, при этом игнорируя mp3 файлы).
- -s=value - параметры, передаваемые модулю, BitField
БИТЫ: (звёздочной отмечены дефолтовые настройки программы)
0-1 Число от 0 до 3, указывающее на качество сканирования
0 - вообще не делать циклов
(извлекать информацию только из заголовков,
первого фрейма, etc)
avi: не сканировать индекс
1 - пытаться "по быстрому" узнать, заглядывая на несколько
фреймов вперёд, читая лишь кусок индекса.
avi: читать первые 128к индекса (большая погрешность в вычислении битрейта) 2 - нормальный режим работы, как что делать решает модуль (*)
avi: читать весь индекс целиком
3 - сканировать всё целиком
avi: читать весь индекс целиком
2-7 reserved
ИМЯ ФАЙЛА
стандартное имя файла (как с путём, так и без). В настоящий момент avinfo не понимает символы маски (*,?).
РЕЖИМЫ (modes)
Cуществует несколько режимов, в которых показывается информация о файле. Каждый режим указывается при помощи двойного дефиса (--) и имени шаблона, который следует использовать. (avinfo a.avi --short)
- --default (штатный режим работы, используется, если шаблон не указан)
- --description (режим для генерации descript.ion)
- --short (краткий вариант descript.ion)
- --list (режим plain-text генерации списков)
- --html-list (режим html генерации списков)
- --raw (режим скидывания данных (печатается всё) для внешних скриптов)
ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ
ИНДИВИДУАЛЬНЫЙ РЕЖИМ (режим одного файла)
avinfo somefile.avi
Самый простой пример. Будет выведена информация про файл.
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)
ls -1R |grep -v "^$"|grep -v ":$"
сформирует файл result.txt c отчётом о файлах в каталоге somedir, добавит в конец файла статистику об отсканированных файлах.
ls -1 -R /data/video |sort|avinfo -e:mp3 -l- --html-list >/pub/www/list/files.html
Создаст в виде html-файла список файлов с описаниями. Будут обработаны все файлы, кроме mp3.
[TODO]........