У меня есть SWF неизвестного происхождения, и мне нужно знать, в какую версию флеш-плейера он был нацелен, когда он был опубликован. Как получить эту информацию?
Как определить, для какой версии флэш-плеера был опубликован swf?
Ответ 1
4-й байт в SWF файле содержит номер версии, например 0A для Flash Player 10.
РЕДАКТИРОВАТЬ: Из-за высокого интереса к этому вопросу я решил дать больше отзывов
Первые 8 байтов любого SWF файла не сжаты, остальная часть файла может быть сжата (или нет) сжатием zlib.
- 1-й байт: 'F' (не сжатый) ИЛИ 'C' (сжатый).
- 2-й байт: 'W' всегда.
- Третий байт: 'S' всегда.
- 4-й байт: номер версии (09 означает, что этот файл предназначен для Flash Player 9 и т.д.)
- От 5-го по 8-й: длина всего файла в байтах.
Ответ 2
В Flex SDK содержится инструмент swfdump, который отображает все метаданные внутри SWF файла. Вот начало вывода, когда я запускаю "swfdump foo.swf":
<swf xmlns='http://macromedia/2003/swfx' version='9' framerate='24' size='10000x7500' compressed='true'>
Ответ 3
Это добавляет, что сказал Брайан Шарон.
Да отображение 1-к-1 версии swf-версии и версии Flash Player больше не существует.
Что изображает 4-й байт, является -swf-версией, и что хорошего в этом, так это то, что теперь есть отношение один к одному с выпуском точек.
Посмотрите на эти ссылки:
http://blogs.adobe.com/airodynamics/2011/08/16/versioning-in-flash-runtime-swf-version/
http://sleepydesign.blogspot.in/2012/04/flash-swf-version-meaning.html
Из второй ссылки:
Compiler Option Flash Player Version
-swf-version=9 9
-swf-version=10 10, 10.1
-swf-version=11 10.2
-swf-version=12 10.3
-swf-version=13 11.0
-swf-version=14 11.1
-swf-version=15 11.2
-swf-version=16 11.3
Я использую эту информацию из флеш файлов, чтобы предупредить пользователей о том, что их флэш-плеер может устареть на моем портале флеш-игр. И это прекрасно работает.
Ответ 4
Большинство - все? - ответов до сих пор неверны, что очень печально, так как я надеялся найти ответ на этот вопрос:).
Байт 4 SWF указывает, какая версия SWF файла используется SWF файлом. Это не то же, что и версия целевого игрока.
Минимальная версия игрока устанавливается во время компиляции с помощью целевого игрока опции компилятора, а версия формата SWF файла устанавливается с помощью опции swf-версии.
Значения по умолчанию для этих параметров можно найти внутри FLEX_SDK/frameworks/flex-config.xml. Для версии SDK, используемой мной (4.5.1), значения по умолчанию следующие:
<!-- Specifies the minimum player version that will run the compiled SWF. -->
<target-player>10.2.0</target-player>
<!-- Specifies the version of the compiled SWF -->
<swf-version>11</swf-version>
Это означает, что swfversion.com показывает 11 для моего SWF, хотя я только требую, чтобы у пользователей было 10.2. И согласно http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7a92.html, Flex 4.6 устанавливает целевого игрока в 11.1 и swf-версию до 14. Поэтому я не понимаю, как swfversion. com полезен.
Ответ 5
Вы можете использовать инструмент проверки DoubleClick Flash Validator:
https://flashval-temp.appspot.com/validator/
Он предоставит информацию, такую как имя SWF, версию, размер файла, размеры, кадры в секунду, сжатие и общие кадры.
Ответ 6
Возьмите gander в спецификации SWF из http://www.adobe.com/devnet/swf.html
Затем сделайте шестнадцатеричный дамп или откройте SWF в редакторе, который может отображать hex. Версия SWF является одним из первых байтов и перед запуском сжатых данных. Я хочу сказать, что это байт 4, но я не помню полностью. Значение - номер версии. IIRC, точечная версия не закодирована в SWF.
Файл GNU также может вам рассказать. Возможно, я редактировал свои правила, чтобы сделать это.