Введение

Gnash – это медиаплеер для воспроизведения SWF-файлов. Gnash доступен как автономный проигрыватель для настольных компьютеров и встраиваемых устройств, так и в виде плагина для браузеров, поддерживающих NPAPI. Он является частью проекта GNU и представляет собой свободную и открытую альтернативу Adobe Flash Player. Разработка Gnash началась на основе проекта gameswf. Gnash был впервые представлен в конце 2005 года разработчиком программного обеспечения Джоном Гилмором. С 2011 года проект поддерживает Роб Савой. Основной веб-сайт разработчиков Gnash размещен на сервере поддержки проекта GNU Savannah Фонда свободного программного обеспечения. Gnash поддерживает большинство функций SWF v7, а также некоторые функции SWF v8 и v9, однако SWF v10 не поддерживается. До запуска Gnash проект GNU обращался с просьбой о помощи к проекту GPLFlash. Большинство разработчиков, ранее работавших над GPLFlash, перешли в проект Gnash, а существующая кодовая база GPLFlash будет переориентирована на поддержку встраиваемых систем. Основными условиями распространения Gnash являются условия лицензии GNU GPL. Однако, поскольку Gnash был создан с использованием кодовой базы проекта gameswf, находящейся в общественном достоянии, код, разработанный проектом Gnash и потенциально полезный для gameswf, размещается в общественном достоянии.

Архитектура

Adobe предоставляет только устаревшую версию (11.2) своего официального проигрывателя для Linux на IA 32 и предварительную версию для разработчиков AMD64 исключительно в виде бинарного файла. Gnash, напротив, может быть скомпилирован и запущен на множестве архитектур, включая x86, ARM, MIPS и PowerPC. Он также поддерживает операционные системы на базе BSD. Существует ранняя версия для RISC OS, которая никогда не поддерживала Macromedia/Adobe Flash выше версии 3, а также ранняя версия для BeOS, где поддержка Flash была прекращена на версии 4. Ведётся разработка версии для AmigaOS 4.1. Также существует версия для операционной системы Haiku. Для отрисовки Gnash требует AGG, Cairo или OpenGL. В отличие от большинства проектов GNU, написанных обычно на C, Gnash написан на языке программирования C++ из-за его наследия от gameswf. Цель разработчиков Gnash – обеспечить максимальную совместимость с проприетарным проигрывателем (включая поведение при некорректном коде ActionScript). Однако Gnash предлагает некоторые уникальные функции, недоступные в Adobe Player, такие как возможность расширения классов ActionScript с помощью разделяемых библиотек: примеры расширений включают поддержку MySQL, доступ к файловой системе и многое другое. В целях безопасности механизм расширения должен быть явно скомпилирован и активирован через файлы конфигурации.

Поддержка видео

Gnash поддерживает воспроизведение FLV-видео и позволяет воспроизводить некоторые FLV-файлы с YouTube, Myspace, ShowMeDo и других подобных сайтов (старые файлы со звуком, новые – без звука). Для поддержки FLV требуется установка FFmpeg или GStreamer в системе. Некоторые другие программы свободного ПО, такие как MPlayer, VLC media player или проигрыватели для Windows, основанные на кодеках ffdshow DirectShow, могут воспроизводить формат FLV, если файл специально загружен или перенаправлен в них. Версия 0.8.8 была выпущена 22 августа 2010 года. Роб Савой объявил, что Gnash теперь должен работать со всеми видео на YouTube. Версия 0.8.8 имеет поддержку GPU, что позволило ей обойти проприетарный Adobe Flash Player в Linux, пока Flash 10.2 не получил встроенное аппаратное ускорение. Gnash по-прежнему характеризуется высоким потреблением ресурсов процессора. Пользователь может установить плагин Flashblock, чтобы включать поддержку Flash только при необходимости, для каждого конкретного случая. Управление видео YouTube и полноэкранный режим работают, хотя в версии 0.8.8 есть ошибка, из-за которой YouTube может отображать сообщение "Неверные параметры". Многие популярные Flash-игры не работают с Gnash 0.8.8.

Сигналь

Cygnal — это аудио- и видеосервер, совместимый с Flash Media Server, разработанный в рамках проекта Gnash. Он отвечает за согласование обмена метаданными об авторских правах, а также за потоковую передачу контента. Он должен обрабатывать десятки тысяч одновременных сетевых подключений и поддерживать работу на крупных кластерах Linux. Cygnal должен поддерживать обработку нескольких потоков с различным содержимым, а также многоадресную передачу с одним источником данных. В связи с патентными ограничениями, касающимися MP3, и тем фактом, что FLV и ON2 являются закрытыми форматами, одной из главных целей проекта является поддержка свободных кодеков и свободных протоколов как основного принципа работы. Предусмотрена опциональная поддержка MP3, FLV и ON2 (VP6 и VP7) для воспроизведения существующего Flash-контента. FLV, а также кодеки VP6 и VP7 входят в состав ffmpeg. Пользователи могут использовать плагин ffmpeg для GStreamer 0.10 для работы с этими проприетарными кодеками.

Microsoft Windows

Gnash был портирован на Windows, и плагин оптимально работает с Firefox 1.0.4 или более новой версии, а также должен работать в любом браузере, основанном на Mozilla. Однако в более новых браузерах плагин может стать нестабильным или перестать работать. Новые сборки Gnash для Windows не содержат плагин, и на данный момент нет рабочего плагина Gnash для Windows более новой версии.

Финансовая поддержка

Проект финансировался коммерческой компанией Lulu.com до июля 2010 года. По состоянию на март 2012 года ведущий разработчик сообщил, что пожертвований едва хватает для оплаты хостинга проекта.

Лицензионное соглашение для конечного пользователя Adobe Flash Player

Одна из проблем проекта — сложность поиска разработчиков. Действующие разработчики никогда не устанавливали Adobe Flash Player, поскольку опасаются, что любой, кто когда-либо устанавливал Adobe Flash Player, одновременно принимал соглашение о запрете на изменение или декомпиляцию Adobe Flash Player. Поэтому, по состоянию на ноябрь 2010 года, в проекте Gnash было всего около 6 активных разработчиков. Однако подобные общие условия могут противоречить национальным антимонопольным законам при использовании в стандартных лицензионных соглашениях на программное обеспечение. 2 мая 2012 года Суд Европейского Союза вынес решение по делу C 406/10 SAS Institute Inc. против World Programming Ltd, согласно которому функциональность компьютерной программы не охраняется авторским правом в Европейском Союзе, а договорные положения, запрещающие наблюдение, изучение и тестирование компьютерной программы для воспроизведения её поведения в другой программе, являются недействительными. Это при условии, что исходный или объектный код не был скопирован.