如何确定swf发布的flash播放器版本?

时间:2010-12-04 01:20:04

标签: actionscript-3 flash

我有一个来历不明的SWF,我需要知道它在发布时针对哪个Flash播放器版本。我如何获得此信息?

6 个答案:

答案 0 :(得分:35)

SWF文件中的第4个字节带有版本号,例如0A用于Flash Player 10。

编辑:由于这个问题的高度兴趣,我决定提供更多的反馈

任何SWF文件的前8个字节都未压缩,zlib压缩可以压缩(或不压缩)文件的其余部分。

  • 第一个字节:'F'(未压缩)或'C'(压缩)。
  • 第二个字节:'W'总是。
  • 第3个字节:'S'总是。
  • 第4个字节:版本号(09表示此文件的目标是Flash Player 9,依此类推......)
  • 第5到第8位:整个文件的长度,以字节为单位。

答案 1 :(得分:12)

Flex SDK包含一个名为swfdump的工具,可显示SWF文件中的所有元数据。当我运行“swfdump foo.swf”时,这是输出的开始:

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

答案 2 :(得分:12)

这增加了布莱恩沙龙的说法。

是的,swf-version和Flash Player版本的一对一映射不再存在。

第4个字节描述的是-swf-version,这样做的好处是现在与点发布有一对一的关系

查看这些参考
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

我正在使用Flash游戏文件中的这些信息来警告用户他们的Flash播放器可能已在我的Flash游戏门户网站上过时。这很好用。

答案 3 :(得分:4)

大多数 - 全部? - 到目前为止答案是不正确的,这是不幸的,因为我希望找到这个问题的答案:)。

SWF的字节4表示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为我的SWF显示11,即使我只要求用户拥有10.2。根据{{​​3}},Flex 4.6将目标玩家设置为11.1,将swf版本设置为14.所以我不清楚swfversion.com如何有用。

答案 4 :(得分:4)

您可以使用DoubleClick的Flash验证工具:

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

它将提供SWF名称,版本,文件大小,尺寸,每秒帧数,压缩和总帧数等信息。

答案 5 :(得分:2)

http://www.adobe.com/devnet/swf.html

了解SWF规范

然后执行十六进制转储或在可以显示十六进制的编辑器中打开SWF。 SWF版本是前几个字节之一,并且在压缩数据开始之前。我想说它是字节4,但我不完全记得。值是版本号。 IIRC,点版本未在SWF中编码。

GNU文件也可能告诉你。不过,我可能已经编辑了我的规则。