SWF не открывается с JPEXS, потому что он сжат !!.
Первое, что вы должны сделать, когда файл (, например: swf, jpeg, mp3, mp4 ) не открывается ни в одной программе, это проверить, являются ли байты формата исправить с помощью шестнадцатеричный редактор .
Проверка байтов вашего файла:
Обычно SWF-файл начинается с байтов 43 57 53
(, например: "CWS"
) или даже байтов 46 57 53
(, например: "FWS"
).
Ваш файл начинается с 78 DA 00 43 40 BC BF 43 57 53
(последние три байта - это ожидаемое 43 57 53
нормального SWF-файла).
Эти первые два байта 78 DA
означают, что он имеет некоторое сжатие ZLib ( например: как
.zip
файл).
Решение
Два варианта декомпрессии ZLib. Один - с помощью кода AS3, а другой - с помощью внешнего (Windows) инструмента.
Опция 1 ) Используйте AS3 для распаковки.
Получите библиотеку AS3ZLib и скопируйте ее папку as3zlib
в то же место, где находятся файлы .as
вашего проекта Flash. (Найти папку по адресу: src/com/wirelust/as3zlib/
).
Загрузка (или чтение) байтов SWF-файла в байтовый массив AS3 с именем fileBytes
.
Попробуйте эту логику кода:
import Zlib; //do import of API
....
public var zlibdecomp :Zlib; //create instance variable
....
public var fileBytes :ByteArray = new ByteArray;
public var swfBytes :ByteArray = new ByteArray;
//# SWF original file bytes load
fileBytes = ... ; //your loading code here
//# Decompress loaded into new SWF bytes
zlibdecomp = new Zlib; //create new ZLIB instance in variable
swfBytes = zlibdecomp.uncompress( fileBytes ); //update with decompress version
trace("swfBytes length (DEFLATED) : " + swfBytes.length); //is 8,617,377 bytes??
Байты в swfBytes
теперь могут быть сохранены в виде файла new.swf
, и он будет правильно открыт в JPEXS. Используйте API FileReference для сохранения байтов AS3 на диск.
Вариант 2 ) Используйте внешний инструмент ZLib.
Используя OffZip (для Windows OS) вы можете распаковать SWF.
Это прямой файл OffZip . Скопируйте Offzip.exe
в папку типа c:\offzip\
.
Теперь откройте командную строку, запустив cmd.exe
. Введите cd\offzip\
(нажмите enter
). В качестве альтернативы просто удерживайте shift
и щелкните правой кнопкой мыши папку Offzip, затем выберите «открыть окно командной строки здесь» .
Тип offzip -a vpt.swf
(нажмите enter
).
Вы должны увидеть вывод как это ...
C:\offzip>offzip -a vpt.swf
Offzip 0.4
by Luigi Auriemma
e-mail: aluigi@autistici.org
web: aluigi.org
- open input file: vpt.swf
- zip data to check: 32 bytes
- zip windowBits: 15
- seek offset: 0x00000000 (0)
+------------+-----+----------------------------+----------------------+
| hex_offset | ... | zip -> unzip size / offset | spaces before | info |
+------------+-----+----------------------------+----------------------+
0x00000000 .
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
.................................................................... 8496131 ->
8617377 / 0x0081a403 _ 0 8:7:26:0:1:2657f334
- 1 valid compressed streams found
- 0x0081a403 -> 0x00837da1 bytes covering the 100% of the file
Теперь выходной файл 00000000.cws
можно открыть в JPEXS. Вы можете переименовать это в 00000000.swf
.