Что такое формат файла SWF?
Файлы с расширением .swf содержат анимацию (которая может быть интерактивной), хранящуюся в бинарном мультимедийном формате, первоначально созданном FutureWave Software в 1996 году. Название расшифровывается как Small Web Format, что отражает его первоначальную цель - предоставление компактной, экономящей трафик анимации через интернет.
Формат был приобретен Macromedia, а позже Adobe, и используется для создания и хранения:
- мультимедийного контента, включая аудио и видео,
- векторной графики и растровых изображений,
- байт-кода ActionScript и интерактивных апплетов.
Приложения, исторически использовавшиеся для создания файлов .swf, включают Adobe Flash и Adobe Animate, пришедшее ему на смену; также были доступны инструменты с открытым исходным кодом, такие как SWFTools. В 2008 году Adobe частично открыла спецификацию формата, позволив поисковым системам, таким как Google и Yahoo, индексировать содержимое внутри анимаций. Формат развивался на протяжении многих лет: ранние версии позволяли анимировать только векторную графику, а более поздние выпуски расширили возможности до потокового аудио и видео, а также базовой 3D-анимации.
Adobe Flash Player - плагин для браузера, необходимый для воспроизведения файлов .swf, - прекратил свое существование 31 декабря 2020 года. Файлы по-прежнему можно воспроизводить вне браузера с помощью автономного эмулятора Ruffle или через плеер Internet Archive для сохранения Flash. Исходные проекты обычно сохранялись как файлы .FLA и компилировались в .swf для распространения; родственные форматы включают .FLV для потокового видео Flash и .SWC для библиотек повторно используемых компонентов Flash.
Безопасность и защита
РИСК: MEDIUMSWF был печально известным вектором распространения вредоносного ПО - Flash Player имел долгую историю критических уязвимостей удаленного выполнения кода (CVE), что стало основной причиной его закрытия. Устаревший плагин удален, поэтому атаки через SWF в браузерах больше не являются актуальной угрозой. Остаточные риски: (1) SWF содержит ActionScript, который может выполнять сетевые вызовы или открывать URL-адреса, поэтому запускайте недоверенные файлы в изолированном Ruffle (предпочтительно), а не в автономном отладочном проекторе; (2) вредоносные .exe-файлы «проекторы», притворяющиеся безобидной анимацией; (3) никогда не переустанавливайте прекращенный Flash Player со сторонних сайтов с «кодеками» - такие установщики сами по себе являются распространенной приманкой для вредоносного ПО.
Детали формата
в двух словахПрограммы, открывающие файлы SWF
Технические подробности
глубокая спецификация| Магические байты | FWS (46 57 53) = без сжатия; CWS (43 57 53) = сжатие zlib; ZWS (5A 57 53) = сжатие LZMA - все по смещению 0 |
| Поля версии и длины | Байт 3 кодирует номер версии SWF (1-46); байты 4-7 хранят полную длину несжатого файла в формате uint32 little-endian |
| MIME-тип | application/x-shockwave-flash |
| Сжатие | Отсутствует (SWF 1-5); zlib применяется после 8-байтового заголовка (SWF 6+, сигнатура CWS); LZMA применяется после 8-байтового заголовка (SWF 13+, сигнатура ZWS) - первые 8 байт никогда не сжимаются |
| Единица координат | Твип (1/20 пикселя); все пространственные значения хранятся как целые числа в твипах с использованием битовых полей SWF переменной длины |
| Теговая структура | Контент кодируется как записи с тегами: 2-байтовый короткий заголовок (10-битный тип записи + 6-битная длина) или 6-байтовый длинный заголовок для полезной нагрузки ≥ 63 байт |
| Векторная графика | Фигуры определяются через записи SHAPE с ребрами в виде квадратичных кривых Безье; типы заливки включают сплошной цвет, линейный/радиальный градиент и растр |
| Движок сценариев | ActionScript 1 и 2 работают на AVM1 (интерпретируемая виртуальная машина на основе стека); ActionScript 3 (SWF 9+) работает на AVM2 (на основе регистров, с JIT в некоторых средах) |
| Видеокодеки | Sorenson Spark (SWF 6+), Screen Video (SWF 7+), On2 VP6 и VP6 с альфа-каналом (SWF 8+) |
| Аудиокодеки | Несжатый PCM, ADPCM, MP3, Nellymoser (SWF 6+), Speex (SWF 10+) |
| Встраивание шрифтов | Контуры TrueType, преобразованные в записи фигур SWF; теги DefineFont2 и DefineFont3 включают полные таблицы символов Unicode |
| 3D-трансформации | Тег PlaceObject3 (SWF 11+) добавляет перспективную матрицу 4×4, позволяющую выполнять 3D-вращение и проекцию объектов списка отображения |
| Встраивание бинарных данных | Тег DefineBinaryData (SWF 9+) позволяет хранить произвольные необработанные бинарные данные внутри контейнера .swf |
| Модель временной шкалы | Список отображения на основе кадров; каждый кадр представляет собой разницу (diff) тегов PlaceObject и RemoveObject, примененных к графу сцены, а не полный снимок ключевого кадра |
| Выпущен | 1996 (FutureSplash Animator); Adobe published the SWF File Format Specification, now withdrawn after Flash EOL |
| Открыть стандартное | Да · без роялти |
| Спецификация | web.archive.org |
Конвертации SWF
Вопросы и ответы сообщества
спрошено пользователямиВопросов пока нет - станьте первым, кто спросит о файлах SWF.