2010-12-04 10 views

Respuesta

34

El cuarto byte en el archivo SWF lleva el número de versión, por ejemplo 0A es para Flash Player 10.

EDITAR : Debido al gran interés que tiene esta pregunta, he decidido dar más comentarios

Los primeros 8 bytes de cualquier archivo SWF no están comprimidos, el resto del archivo se puede comprimir (o no) mediante compresión zlib.

  • 1st byte: 'F' (no comprimido) OR 'C' (comprimido).
  • 2do byte: 'W' siempre.
  • 3er byte: 'S' siempre.
  • 4to byte: número de versión (09 significa que este archivo está dirigido a Flash Player 9 y así sucesivamente ...)
  • 5to a 8vo: Longitud del archivo completo en bytes.
+3

Gracias, parece que es un reproductor flash 10. ¿Cómo podría diferenciar 10 y 10.1? http://www.johndierks.com/img/flashversionhexdump.png – John

+4

El archivo SWF en sí mismo no está dirigido a una versión menor específica de Flash Player. –

+0

Como publiqué a continuación, esto le indica la versión de la especificación SWF que sigue su archivo, pero no la versión mínima requerida de Flash Player. –

2

echar un vistazo a la especificación SWF desde http://www.adobe.com/devnet/swf.html

A continuación, hacer un volcado hexadecimal o abrir el archivo SWF en un editor que puede mostrar hexagonal. La versión SWF es uno de los primeros pocos bytes y está antes de que comience la información comprimida. Quiero decir que es el byte 4, pero no lo recuerdo del todo. El valor es el número de versión. IIRC, la versión de punto no está codificada en el SWF.

El archivo GNU también puede informarle. Aunque puedo haber editado mis reglas para hacer esto.

+0

Nota rápida sobre la cosa punto de versión. Adobe ha realizado algunos cambios bastante significativos en la versión media de Flash Player (por ejemplo, compatibilidad con H.264 en 9.0.115). Cuando agrega un archivo SWF a una página, debe usar swfobject y especificar la versión de punto para asegurarse de que el usuario tenga el reproductor adecuado (y proporcione ExpressInstall si es posible). La determinación de la versión de punto mínimo de un archivo SWF desconocido requiere un poco de prueba y error junto con todos los reproductores Flash archivados de adobe.com, así como el conocimiento de qué buscar. – mpdonadio

+0

¿Algún consejo sobre cómo funciona este proceso? El solo hecho de saber el número de versión completo es suficiente para mí en este momento, pero me gustaría saber cómo funciona este proceso. – John

+0

Debe comprobar las notas de la versión para las versiones de punto y buscar las nuevas características o cosas que no funcionan. Entonces, adivina si esas características se están utilizando. Algunos son obvios (como el soporte H.264), otros son más sutiles. También puede instalar la versión de depuración de Flash Player que le permitirá ver cualquier excepción. A menudo puede ver una solicitud de función en la pila de llamadas. – mpdonadio

12

El SDK de Flex contiene una herramienta llamada swfdump que muestra todos los metadatos dentro de un archivo SWF. Aquí está el principio de la salida cuando corro "foo.swf swfdump":

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

¿Mayoría de todos? - De las respuestas hasta ahora son incorrectas, lo cual es desafortunado ya que esperaba encontrar una respuesta a esta pregunta :).

El byte 4 del SWF indica qué versión del formato de archivo SWF utiliza el archivo SWF. Eso es no igual que la versión del reproductor de destino.

La versión mínima del reproductor se establece en tiempo de compilación a través de la opción del compilador jugador de destino, mientras que la versión del formato de archivo SWF se establece a través de la opción swf-version.

Los valores predeterminados para estas opciones se pueden encontrar en FLEX_SDK/frameworks/flex-config.xml. Para la versión del SDK que estoy usando (4.5.1), los valores predeterminados son los siguientes:

<!-- 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> 

Esto significa swfversion.com muestra 11 para mi SWF, a pesar de que sólo se requiere que los usuarios tienen 10.2. Y de acuerdo con http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7a92.html, Flex 4.6 establece target-player en 11.1 y swf-version en 14. Así que no estoy seguro de cómo swfversion.com es útil.

+1

¿Puede hacer una referencia cruzada a una especificación publicada por Adobe para respaldar la afirmación de que otras respuestas son * incorrectas *? Entendí que el byte Todavía hay algo que se aplicó, pero la traducción ya no era la única entre la versión de SWF y la versión de Flash Player ahora que hay versiones menores. Sin embargo, sigue en pie que no se puede detectar la liberación de puntos. – mpdonadio

+1

suponiendo que tiene razón , ¿hay alguna forma de averiguar a qué versión del reproductor flash se dirige un archivo swf? –

+1

@MPD Brian tiene razón, mira mi respuesta para más detalles, y aquí está la referencia que querías fr om Adobe - http://blogs.adobe.com/airodynamics/2011/08/16/versioning-in-flash-runtime-swf-version/ – danishgoel

12

Esto agrega lo que dijo Brian Sharon.

Sí, la correlación de 1 a 1 de la versión swf y la versión de Flash Player ya no existe.

Lo que representa el El 4to byte es la versión -swf, y lo bueno de esto es que ahora hay una relación de uno a uno con las versiones de punto.

mirada a estos referencias:
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

A partir del segundo enlace:

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 

estoy usando esta información de archivos de juego de flash para advertir a los usuarios que su reproductor flash podría estar desactualizado en mi portal de juegos flash. Y esto funciona bien.

4

Se podría utilizar la herramienta Validador de Flash de DoubleClick:

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

Además, proporcionará información como el nombre SWF, versión, tamaño de archivo, las dimensiones, cuadros por segundo, compresión y cuadros en total.

Cuestiones relacionadas