Как определить, для какой версии флеш-плеера был опубликован SWF?

У меня есть SWF неизвестного происхождения, и мне нужно знать, на какую версию флеш-плеера он был нацелен при публикации. Как я могу получить эту информацию?

6 ответов

Решение

4-й байт в SWF-файле содержит номер версии, например 0A для Flash Player 10.

РЕДАКТИРОВАТЬ: Из-за высокого интереса к этому вопросу я решил дать больше отзывов

Первые 8 байтов любого SWF-файла не сжимаются, остальная часть файла может быть сжата (или нет) сжатием zlib.

  • 1-й байт: "F" (не сжато) ИЛИ "C" (сжато).
  • 2-й байт: "W" всегда.
  • 3-й байт: "S" всегда.
  • 4-й байт: номер версии (09 означает, что этот файл предназначен для Flash Player 9 и т. Д.)
  • С 5 по 8: длина всего файла в байтах.

Flex SDK содержит инструмент swfdump, который отображает все метаданные внутри SWF-файла. Вот начало вывода, когда я запускаю "swfdump foo.swf":

<swf xmlns='http://macromedia/2003/swfx' version='9' framerate='24' size='10000x7500' compressed='true'>

Это добавляет то, что сказал Брайан Шарон.

Да, сопоставление "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 SWF указывает, какая версия формата файла SWF используется SWF. Это не то же самое, что версия целевого игрока.

Минимальная версия проигрывателя устанавливается во время компиляции с помощью опции-компилятора target-player, а версия формата SWF-файла задается с помощью опции swf-version.

Значения по умолчанию для этих параметров можно найти в 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 устанавливает target-player в 11.1 и swf-версию в 14. Поэтому я не понимаю, как swfversion.com это вообще полезно.

Вы можете использовать инструмент Flash Validator от DoubleClick:

https://flashval-temp.appspot.com/validator/

Он будет предоставлять такую ​​информацию, как имя SWF, версия, размер файла, размеры, количество кадров в секунду, степень сжатия и общее количество кадров.

Взгляните на спецификацию SWF на http://www.adobe.com/devnet/swf.html

Затем сделайте шестнадцатеричный дамп или откройте SWF-файл в редакторе, который может отображать шестнадцатеричный код. Версия SWF является одним из первых нескольких байтов и находится до запуска сжатых данных. Я хочу сказать, что это байт 4, но я не совсем помню. Значение является номером версии. IIRC, точечная версия не закодирована в SWF.

Файл GNU также может сказать вам. Возможно, я изменил свои правила, чтобы сделать это, хотя.

Другие вопросы по тегам