Actionscript 3 如何确定swf发布的flash player版本?

Actionscript 3 如何确定swf发布的flash player版本?,actionscript-3,flash,Actionscript 3,Flash,我有一个来历不明的SWF,我需要知道它在发布时是针对哪个flash player版本的。我如何获得这些信息?从 然后进行十六进制转储或在可以显示十六进制的编辑器中打开SWF。SWF版本是前几个字节之一,在压缩数据开始之前。我想说它是字节4,但我不完全记得了。该值是版本号。IIRC,点版本未在SWF中编码 GNU文件也可能会告诉您。不过,我可能编辑了我的规则来实现这一点。Flex SDK包含一个名为swfdump的工具,该工具显示SWF文件中的所有元数据。以下是运行“swfdump foo.swf

我有一个来历不明的SWF,我需要知道它在发布时是针对哪个flash player版本的。我如何获得这些信息?

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


GNU文件也可能会告诉您。不过,我可能编辑了我的规则来实现这一点。

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


SWF文件中的第4个字节包含版本号,例如0A代表Flash Player 10

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

任何SWF文件的前8个字节都不会被压缩,文件的其余部分可以通过zlib压缩进行压缩(或不压缩)

  • 第一个字节:“F”(未压缩)或“C”(已压缩)
  • 第二个字节:“W”总是
  • 第3字节:始终为“S”
  • 第4字节:版本号(09表示此文件针对Flash Player 9等…)
  • 第5到第8位:整个文件的长度(以字节为单位)

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

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>

10.2.0
11

这意味着swfversion.com为我的SWF显示了11,尽管我只要求用户有10.2。根据这一点,Flex4.6将目标播放器设置为11.1,将swf版本设置为14。所以我不清楚swfversion.com到底有多有用。

这补充了brian sharon的说法

是的,swf版本和Flash Player版本的1:1映射不再存在

第4个字节描述的是-swf版本,它的优点是现在与点发布有一对一的关系

查看这些参考资料:

从第二个链接:

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游戏门户上可能已经过时。这很好。

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


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

关于点版本的快速说明。Adobe对Flash Player中版做了一些相当重要的更改(例如,9.0.115中的H.264支持)。当您向页面添加SWF时,您应该真正使用swfobject并指定点版本,以确保用户拥有正确的播放器(如果可能,还应为他们提供ExpressInstall)。从未知的SWF中确定最低点版本需要一些尝试和错误,以及adobe.com上所有存档的Flash播放器,以及查找内容的知识。有关于此过程的提示吗?现在只知道完整的版本号对我来说已经足够好了,但我很想知道这个过程是如何工作的。你需要查看发布说明中的point版本,并查找新功能或不起作用的东西。然后你猜这些功能是否正在被使用。有些是显而易见的(如H.264支持),有些则更微妙。您还可以安装Flash Player的调试版本,该版本将允许您查看任何异常。您经常可以在调用堆栈中看到功能请求。正如我在下面发布的,这会告诉您文件遵循的SWF规范版本,但不是所需的最低Flash player版本。谢谢,看起来它是Flash player 10。如何区分10和10.1?SWF文件本身并不针对Flash Player的特定次要版本。正如我在下面发布的,这会告诉您文件遵循的SWF规范版本,但不是所需的最低Flash Player版本。@LordCover嗨,请告诉我这表示的是哪个版本—“FWShˆUð”(É@3Y'因为我不在这里..我认为您尝试使用的文件已损坏或有某种混淆,因为通常第4个字节是09或0A或0B(即版本号)。你能交叉引用Adobe发布的规范来支持其他答案是错误的说法吗?我的理解是字节4的东西仍然适用,但SWF版本和Flash Player版本之间的转换不再是一对一了,现在有了小版本。尽管如此,你仍然无法检测到点release.假设你是对的,有没有办法找出swf文件针对的flash player版本?@MPD Brian是对的,请看我的答案以了解详细信息,这是你想从Adobe获得的参考资料-@AliVeli-是的,有办法,现在更好了,你可以知道它针对的是哪个版本,看看我的答案我是com完全确信adobe flash糟糕透了…getstacktrace在18版本以下无法工作,而且我们的GUI中没有stacktrace…太棒了
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