Игорь Штомпель
Обзор проекта Gnash
Свободный Flash, открытая медиа: это то, что нужно делать!
Призыв разработчиков Gnash
Часто у проприетарных программ, имеющих большую популярность, появляется свободная реализация. Oдним из таких продуктов и стал Gnash – альтернатива закрытому флеш-плееру компании Adobe. Кроме того, он привнес возможности и поддержку платформ, недоступные в последнем, входит в список приоритетных проектов Фонда свободного программного обеспечения и находится «в шаге» от реализации поддержки ActionScript 3 Class Library.
История проекта
История проекта Gnash началась в 2005 году с разработки на заказ библиотеки GameSWF, над которой работал сегодняшний мейнтейнер проекта – Роб Савой (Rob Savoye). Как говорил разработчик в своем интервью Linux Format, он опирался на свободные проекты, которых оказалось немного [1].
Кстати, Gnash и сейчас разрабатывается на C++, что обусловлено активным использованием библиотеки GameSWF в ходе развития свободного плеера. Библиотека создана на языке C++, доступна по адресу http://tulrich.com/textweb.pl?path=geekstuff/gameswf.txt.
Сопоставив два интервью мейнтейнера и архитектора Gnash (одно, данное для ZDNet.com 16 ноября 2006 года [2], и другое – для Linux Format в июле 2008 года), можно прийти к выводу, что GameSWF был проектом по созданию пользовательского интерфейса для ТВ-приставок, который предложил реализовать Джон Гилмор (John Gilmore), друг Савоя. Используя имеющиеся свободные разработки, Роб Савой добавил в них ActionScript и создал интерфейс для стерео.
Через какое-то время Гилмор снова обратился к Савою и предложил на базе созданного Flash-плеера сделать плагин для Firefox. Но на тот момент последний уже уезжал на ликвидацию последствий урагана Катрина, который практически уничтожил Новый Орлеан. А вернувшись, он приступил к работе над данным плагином, что в конечном итоге привело к реализации Gnash таким, какой он есть сегодня.
В марте 2008 года было объявлено о создании некоммерческого фонда Open Media Now. Это произошло, после того как разработчики Gnash поняли, что необходимо создание «целостной инфраструктуры», т.е. реализации поддержки свободной флеш-технологии как на стороне клиента, так и на стороне сервера. Фонд был создан с целью оказания сервисных услуг как частным лицам, так и организациям в деле развития открытой инфраструктуры медиа (open media infrastructure). Gnash стал одним из проектов этого фонда.
В совет директоров Open Media Now сегодня входят: бывший глава компании RedHat – Боб Янг (Bob Young), Джон Гилмор, Дэвид «Lefty» Шлезингер (David «Lefty» Schlesinger) и Роб Савой.
Читателям будет интересно узнать, что в ходе разработки свободного плеера сложилась определенная дискуссия вокруг принятия/не принятия условий EULA на Flash-инструменты от компании Adobe/Macromedia. Разработчики Gnash встали на позицию невозможности установки этих инструментов, тем самым не принимая данное лицензионное соглашение с конечным пользователем. Они, например, предпочитают использовать такие утилиты, как Ming для генерации testcases (набор тестов для тестирования ПО) Flash [3].
Поддерживаемые платформы
Сегодня Gnash поддерживает платформы:
- Intel x86;
- Intel ia64;
- AMD x86_64;
- AMD Geode;
- PowerPC (32 и 64-бита);
- Mips;
- Arm (7, 9 и 11);
- Hitachi SH.
Операционных системы, на которых будет работать свободный плеер:
- GNU/Linux (протестировано на базе Ubuntu, Fedora и Debian);
- BSD (протестировано на базе OpenBSD, NetBSD и FreeBSD);
- Open Embedded (различные дистрибутивы на основе Debian);
- Darwin;
- IRIX;
- Solaris;
- Windows.
Кроме того, имеются официально не поддерживаемые версии для операционных систем:
- RiscOS;
- OS/2;
- Syllable;
- Haiku.
Свободный Flash-плеер доступен и для встраиваемых устройств в рамках следующих проектов:
- OpenMoko;
- Ubuntu Mobile;
- Sharp Zaurus;
- Access Linux Platform;
- MobLin;
- OLPC XO;
- Intel Classmate PC;
- Studentmate.
Возможности
Gnash обеспечивает поддержку, в первую очередь swf-файлов версии 7, реализация поддержки файлов версий 8 и 9 находится в активной разработке. Выпуск 0.8.2 (5 марта 2008 года [4]) принес первоначальную поддержку парсера swf (версий 8 и 9). Из классов ActionScript 2 поддерживаются часто используемые методы каждого класса. Поддержка остальных классов пока реализована частично. Кроме того, Gnash поддерживает большую часть кодов операций вплоть до версии 9 формата swf.
Свободный плеер позволяет автономно запускать флеш-файлы для просмотра. Например, на рис. 1 показана работа тестового файла clip_as_button2.swf в плеере Gnash (тестовые файлы поставляется вместе с исходным кодом программы – в версии gnash 0.8.5 они находятся в каталоге /testsuite/samples). Кроме того, свободный плеер может быть установлен в качестве плагина для браузеров Mozilla и Konqueror.
Рисунок 1. Работа тестового файла clip_as_button2.swf в плеере Gnash
Поддержка видео появилась в Gnash в 2007 году, но стоит отметить, что многие сайты используют swf версии 8 и 9, реализация которых в свободном плеере находится на начальной стадии. Для воспроизведения видео используются кодеки ffmpeg (на этапе компиляции пользователь может выбирать использовать кодеки ffmpeg или GStreamer), которые позволяют проигрывать форматы SWF, FLV, VP6 (ON2), H.263, H.264, а также аудио MP3. Имеется поддержка Ogg Vorbis и Theora, а также Dirac.
Официально заявлена поддержка потокового видео с таких популярных сайтов, как Lulu.tv и YouTube.com. Мне, как видно на рис. 2, при использовании плагина Gnash версии 0.8.2 (mozilla-plugin-gnash 0.8.2ubuntu3) для Mozilla Firefox 2 в операционной системе gNewSense GNU/Linux 2.2 удалось просмотреть видео с www.youtube.com. Высокое качество вывода обеспечивается использованием OpenGL для рендеринга графики на настольных компьютерах и Anti-Grain Geometry (AGG) (свободная графическая библиотека, написанная на C++ и доступная по адресу http://www.antigrain.com) для встраиваемых устройств.
Рисунок 2. Просмотр видео на сайте www.youtube.com с использованием плагина Gnash для Mozilla Firefox 2
Еще одной возможностью, которой характеризуется свободный плеер, является поддержка основанной на XML системы сообщений, описанной в спецификации формата Flash.
Для работы на серверной стороне, в рамках проектов Open Media Now, развивается Cygnal (на сегодняшний день еще не готов и представляет собой прототип). Продукт призван стать совместимым с Flash Media Server от компании Adobe. Он будет иметь возможность обрабатывать тысячи сетевых соединений и несколько потоков с различным содержимым, и работать на крупных кластерах GNU/Linux.
Cygnal должен будет работать с RTMP (Real Time Messaging Protocol, протокол потоковой передачи данных – видео, аудио). Уже сегодня разработчики усовершенствовали производительность сервера (http) и поддержку прерванных закачек (uploads). Вся сетевая работа свободного сервера на сегодняшний день основывается на очереди сообщений, что позволит ему осуществлять маршрутизацию пакетов между сетевыми соединениями или RTMP-каналами.
Из-за патентных угроз, связанных с форматами MP3, FLV и ON2, Cygnal будет использовать свободные кодеки для их воспроизведения. Например, будет использоваться плагин ffmpeg с поддержкой FLV, а также ON2 (VP6 и VP7) для Gstreamer. Также свободный сервер получит возможность конвертации данных (потоков аудио/видео), сжатых с использованием закрытых технологий в свободные форматы, например, в Ogg Theora и в Ogg Vorbis. Узнать о текущем состоянии проекта Cygnal можно по адресу http://wiki.gnashdev.org/Cygnal.
Все, что было сказано о Gnash выше – это была «теория». Испытать свободный плеер на практике можно, либо установив его с помощью программы управления пакетами вашего дистрибутива, либо загрузив и установив с этой страницы http://www.getgnash.org/packages/releases.
Например, для установки плеера в gNewSense GNU/Linux 2.2 нужно дать команду:
apt-get install gnash
А если необходимо установить Gnash в качестве плагина для браузера mozilla, то надо выполнить:
apt-get install mozilla-plugin-gnash
Ближайшие перспективы
В течение этого года в рамках развития проекта планировалось: продолжение работы по поддержке swf версии 9, реализация ActionScript 3 Class Library, развитие набора тестов и улучшение совместимости с другими плеерами, разработка свободных спецификаций swf и ActionScript, усовершенствование работы с памятью и процессором [5].
Но недавно стало известно, что разработчики хотят форсировать развитие проекта. Так, к концу лета 2009 года планируется выпуск Gnash 9.0. В данной версии будет включена поддержка библиотек классов ActionScript3, с целью обеспечения корректной работы свободного плеера с версиями swf – 9 и 10, и соответственно с образовательными, информационными и новостными порталами, а также большинством популярных сайтов, использующих данную технологию. Для реализации этих целей Open Media Now начала сбор средств в рамках проекта Gnash V9 Summer Bash.
Кроме того, планируется привлечение студентов в качестве стажеров – будет заключен контракт со студентами инженерных специальностей университета Колорадо, которые станут работать под непосредственным руководством Роба Савоя [7]. Как мне представляется, мы с большой долей вероятности увидим выпуск Gnash 9.0 в конце лета или с небольшой задержкой, так как такой проект, являющийся частью свободной альтернативы закрытым медиа в области Flash-технологии, не может оставить равнодушными власти различных стран, заинтересованные организации, разработчиков и студентов.
- Linux Format 107. Июль 2008. с. 26-27.
- http://blogs.zdnet.com/Stewart/index.php?p=177.
- http://www.gnashdev.org/?q=node/25.
- http://wiki.gnashdev.org/Release_0.8.2.
- http://www.openmedianow.org/?q=node/14.
- http://www.openmedianow.org/?q=node/39.
- http://www.openmedianow.org/SummerBash/GnashSummerBash.pdf.