|
Мультимедия без Макромедии?
Технологии интерактивной web-анимации, основанной на Flash, появившись, быстро завоевали популярность у дизайнеров. Разработка компании Macromedia объединила в себе множество различных решений в области мультимедийного представления информации. При сравнительно небольшом размере Flash позволяет использовать звуковые и графические эффекты, а также различные средства диннамизации сайтов. Наиболее популярным инструментом разработки является Macromedia Flash, но при всех его достоинствах у него есть один существенный недостаток цена. Впрочем, на сегодняшний день в операционной системе Linux доступно множество инструментов, позволяющих работать с Flash и при этом не слишком отягощающих бюджет. Сегодня мы познакомимся с самым популярным из них.
В пакет
SWFTools (www.swftools.org) входит несколько утилит, с помощью которых можно создавать и изменять готовые Flash-файлы. Доступны версии для нескольких операционных систем: Solaris, Linux, FreeBSD, OpenBSD, HPUX, MacOS X и Windows 98/ME/2000/XP. Распространяется под лицензией GNU GPL.
Установка обычно происходит без проблем. Например, пользователи дистрибутива ALTLinux могут установить swftools из Сизифа, используя apt-get.
К сожалению, в репозитарии Ubuntu этого пакета нет. Поэтому возможны два варианта: взять пакеты с родственного Debian www.mediasitomo.com/swft-dev/, либо же установить программу самому, используя исходные тексты.
Мы пойдем вторым, наиболее верным путем. Чтобы получить максимум возможностей, желательно первоначально установить следующие библиотеки:
freetype www.freetype.org;
t1lib ftp://sunsite.unc.edu/pub/linux/libs/graphics/;
jpeglib www.ijg.org/files/jpegsrc.v6b.tar.gz;
avifile avifile.sourceforge.net.
В дистрибутиве Kubuntu, которым я пользуюсь, эти библиотеки по умолчанию не устанавливаются. Самый простой способ узнать, есть ли у вас все это распаковать архив с swftools, зайти внутрь каталога и дать команду на конфигурирование. В конце скрипт выдаст информацию о недостающих библиотеках:
Этот вывод показывает, что будут скомпилированы не все утилиты. Но это легко исправить, благо в репозитарии Kubuntu все эти библиотеки есть. Чтобы их установить, даем следующую команду.
И снова проведите конфигурацию swftools. После установки в системе появится 13 новых утилит. Познакомимся с ними.
Конвертеры форматов
Это наиболее многочисленная категория утилит, входящая в комплект swftools. При помощи любой из этих семи утилит можно преобразовать файлы определенных форматов в SWF (small web format). Рассмотрим их по порядку. Начнем, пожалуй, с преобразования графических файлов.
Например, получим SWF из PNG-файлов, находящихся в текущем каталоге; в результирующем файле каждый фрейм будет соответствовать одному исходному файлу.
В качестве дополнительных параметров можно использовать сжатие (--zlib), уменьшив размер результирующего файла до 10%, также можно определить размеры окна (-X и -Y), а при помощи rate количество кадров в секунду (цифра в диапазоне от 1 до 256). При этом цифры должны подбираться с учетом формулы
1/значение, т.е. чем меньше указанное число, тем больше будет выставлен интервал времени, либо размер кадра.
Аналогичные опции имеет утилита
gif2swf, позволяющая проделать то же самое и с GIF-файлами.
Утилита для работы с JPEG-файлами jpeg2swf имеет еще две дополнительные опции: --mx для использования Flash-MX-H.263 компрессию, и --quality, определяющую качество в диапазоне от 1 (хуже) до 100 (лучше). В остальном все так же.
Идем далее. Например, у нас есть PDF-документ, необходимо получить Flash-файл для представления в Интернет. Без проблем.
В итоге получится SWF-файл, при просмотре которого в web-браузере будут показаны периодически сменяющие друг друга страницы документа. Если не указать имя выходного файла, результат будет выведен в stdout, в случае использования swftools для генерирования графики на web-сервере может быть полезна опция -C или cgi, генерирующая дополнительный http-заголовок.
В большинстве случаев весь документ не нужен, поэтому, использовав опцию --pages, можно указать необходимые страницы документа. Например, конвертируем только 1, 2 и страницы с 5 по 10:
А вот так можно получить SWF-файл из файла шрифтов:
Поддерживаются все распространенные форматы шрифтов: TTF, AFM, PFA, PFB и другие. К сожалению, невозможно указать кодировку, поэтому в результирующем файле локализованные шрифты выводятся неправильно (
рис. 1).
Переходим к следующей утилите
wav2swf; как понятно из названия, ее назначение получение SWF из звукового файла в формате WAV. Для кодирования используется кодек
LAME. В общем случае вызов утилиты прост:
В результате в текущем каталоге появится файл output.swf, при запуске которого будет воспроизводиться звук. При помощи дополнительных опций можно изменить битрейт (--bitrate), который по умолчанию составляет 32, частоту дискретизации (--samplerate), определить временные рамки повторяющегося фрагмента (--loop) и т.п.
И наконец, последний конвертер
avi2swf, позволяющий преобразовать AVI-файл в SWF, для кодирования будет использован кодек
h.263.
Вызывается утилита аналогично предыдущим:
Теперь, чтобы уменьшить размер конечного файла, изменим коэффициент качества с 80 (это значение используется по умолчанию) до 40, а также размер 40% от оригинального, при этом кодируем только первые 50 фреймов вместо всего файла.
Все просто. Но мы идем дальше.
Извлекаем информацию из Flash-файла.
Самой простой из утилит является
swfstrings, назначение которой извлечение текста из SWF-файла. Вызов предельно лаконичен:
В результате на экран будет выведен текст, содержащийся в файле; вероятно, вывод лучше всего перенаправить в другой файл:
Другая утилита
swfexstract умеет куда больше: извлекать все объекты, содержащиеся в SWF-файле, клипы, отдельные фреймы, шрифты и звук. Если вызвать ее без параметров, пользователь получит список объектов, содержащихся в файле:
Обратите внимание на буквы в квадратных скобках, выводящиеся в начале каждой строки. Это опции, с помощью которых можно извлечь указанный объект. Например, нам нужен звук:
Как видите, все просто. Возможен вывод и в WAV-файл, но это условие необходимо обязательно оговаривать опция -о. Теперь изображения, исключая пустые фреймы:
В результате в текущем каталоге появятся файлы вида pic17.png, pic23.png и т.п. А вот так можно извлечь отдельный видеофрейм:
Либо так:
Теперь следующая утилита
swfdump, назначение которой вывод информации о SWF-файле. Для вывода всей служебной информации воспользуемся следующей командой:
Утилита swfdump имеет еще одну ценную опцию, позволяющую генерировать готовый HTML-код:
Кроме того, используя параметр --text утилиты swfdump, можно извлечь текстовые поля Flash-файла (в этом она подобна swfstrings):
Манипулирование данными
ВУ этой рубрике всего одна утилита
swfbbox, при помощи которой можно пересчитать параметры SWF-файла и в результате сделать его меньшим по размеру. Параметры файла можно получить, запустив утилиту без параметра:
Теперь попробуем оптимизировать его при помощи опции О:
Хотя, признаться, мне редко удавалось оптимизировать файл больше, чем на 1%.
Результат оптимизации можно получить, использовав параметр S:
Объединение Flash-файлов
Итак, с помощью утилит, о которых было рассказано выше, можно перекодировать файлы в SFW из разных форматов, оптимизировать, извлечь служебную информацию. Теперь осталось только объединить результат. Как раз для этого и предназначена утилита
swfcombine, которая позволяет соединить два или более SWF-файла в один. Один из файлов обязательно должен быть определен как «master», остальные подключаются по мере необходимости как «slaves». Кроме того, с помощью swfcombine можно сжимать либо разжимать SWF-файлы, если же используется один файл, необходима опция d (--dummy), подразумевающая, что slave-файл не требуется. Сжимаем:
Разжимаем:
Теперь соединяем два файла вместе. Например, у нас есть файл с изображениями, теперь наложим еще звук, и файл готов:
Если количество slave-файлов велико, то их можно объединить:
С помощью дополнительных опций можно определить масштабирование (--scale) результирующего файла, количество кадров в секунду (--rate).
И наконец, последняя утилита
swfc, при помощи которой можно скомпилировать SC-скрипт в готовый Flash-файл. Здесь все просто: берем подготовленный файл и вводим следующую команду (в подкаталоге doc лежит готовый пример скрипта):
* * *
Итак, инструменты, входящие в состав пакета SWFTools, позволяют выполнить большую часть операций по работе с файлами формата Flash. Большая часть опций унифицирована, а значит, пара-тройка экспериментов и вы уже полностью освоите работу с любой из этих утилит.
Viva OpenSource!
|