我有一个来历不明的SWF,我需要知道它在发布时针对哪个Flash播放器版本。我如何获得此信息?
答案 0 :(得分:35)
SWF文件中的第4个字节带有版本号,例如0A用于Flash Player 10。
编辑:由于这个问题的高度兴趣,我决定提供更多的反馈任何SWF文件的前8个字节都未压缩,zlib压缩可以压缩(或不压缩)文件的其余部分。
答案 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文件也可能告诉你。不过,我可能已经编辑了我的规则。