Для пользователей Linux, имеющих эту проблему, я создал следующий сценарий в качестве обходного пути:
Прежде чем продолжить, вы должны убедиться, что Pepper-Flash установлена для Chrome/Chromium (flashplugin для Firefox). Единственный способ проверить (без использования нижеприведенного обходного решения) - воспроизвести флэш-файл в Интернете. (или в Firefox, зайдите в плагин about: и посмотрите, есть ли у него "Shockwave Flash")
#!/bin/bash
if [ -z $1 ]; then
swf=$(ls *.swf | tail -1)
else
swf=$@
fi
html=$(echo $swf | sed 's:swf:html:g')
echo '<embed src='$swf 'width="100%" height="100%"></embed>' | sed 's:src=:src=":g' | sed 's:swf:swf":g' > "$html"
#chromium "$html" && sleep 20 && rm "$html"
#google-chrome "$html" && sleep 20 && rm "$html"
#firefox about:config & wmctrl -xa firefox && sleep 0.2 && xdotool type plugins.http && sleep 1 && xdotool key Tab && xdotool key Down && xdotool key Return && xdotool key Control+w && firefox "$html" && firefox about:config && wmctrl -xa firefox && sleep 0.2 && xdotool type plugins.http && sleep 1 && xdotool key Tab && xdotool key Down && xdotool key Return && xdotool key Control+w && sleep 20 && rm "$html"
(альтернативно совместимо с тире)
Чтобы использовать сценарий, сохраните его как swftohtml.sh(может быть любым именем, не должно заканчиваться на .sh) в любом месте, которое вы пожелаете, затем преобразовать его в исполняемую команду или создать для него псевдоним в bashrc, или скопируйте его в /usr /bin /. Не забудьте запустить chmod +x swftohtml.sh, чтобы сделать его исполняемым.
При запуске сценария без аргументов в текущей папке будет найден SWF-файл и создан соответствующий HTML-файл, который можно использовать для запуска этого SWF-файла в браузере. Если в папке более 1 swf-файла, по умолчанию будет использоваться последний (например, если у вас есть filename1.0.swf и filename2.0.swf, по умолчанию будет filename2.0.swf)
В качестве альтернативы для указания конкретного SWF-файла, вы можете ввести имя файла (или полный путь к файлу) в качестве аргумента сценария, и он будет использовать его вместо этого. (например, swftohtml.sh filename 1.0.swf)
Если вы хотите полностью автоматизировать скрипт:
Чтобы автоматически открывать SWF-файлы в вашем браузере и автоматизировать удаление полученного HTML-файла после его использования, раскомментируйте одну из следующих строк в нижней части скрипта (в зависимости от вашего браузера):
#chromium "$html" && sleep 20 && rm "$html"
#google-chrome "$html" && sleep 20 && rm "$html"
#firefox about:config & wmctrl -xa firefox && sleep 0.2 && xdotool key Return && xdotool type plugins.http && sleep 1 && xdotool key Tab && xdotool key Down && xdotool key Return && xdotool key Control+w && firefox "$html" && firefox about:config && wmctrl -xa firefox && sleep 0.2 && xdotool key Return && xdotool type plugins.http && sleep 1 && xdotool key Tab && xdotool key Down && xdotool key Return && xdotool key Control+w && sleep 20 && rm "$html"
Теперь скрипт откроет HTML-файл в вашем браузере, как только он будет создан. Если запущен существующий экземпляр вашего браузера, он удалит html-файл через 20 секунд (давая вам достаточно времени, чтобы сообщить браузеру открыть файл с помощью его flash-плагина). Если экземпляр вашего браузера отсутствует, файл будет удален через 20 секунд после закрытия браузера.
С помощью этого набора вы можете настроить SWF-файлы для открытия с помощью сценария, и теперь процесс полностью автоматизирован, так что вы можете открывать SWF-файлы напрямую, не беспокоясь о создании (или удалении) html-файлов вручную, другими словами, он будет вести себя так, как должен сейчас. (Имейте в виду, что может быть несколько угловых случаев, когда HTML-файл не удаляется, хотя, когда это происходит, вы можете спокойно проигнорировать его.)
Для пользователей Firefox:
Версия Firefox была немного хитрее, она требует установки wmctrl и xdotool. Причина этого заключается в том, что для того, чтобы firefox воспроизводил локальные swf-файлы таким образом, вам нужно отключить plugins.http_https_only в about:config, скрипт автоматически отключает его, открывает флэш-файл, а затем снова включает его, потому что этот параметр наиболее люди, как правило, хотят, чтобы их включили. Браузер должен быть открыт перед запуском команды. Если вы считаете, что ваш браузер Firefox может быть закрыт при запуске команды, замените строку на следующую:
firefox about:config & sleep 1 && wmctrl -xa firefox && sleep 0.2 && xdotool key Return && xdotool type plugins.http && sleep 1 && xdotool key Tab && xdotool key Down && xdotool key Return && xdotool key Control+w && firefox "$html" && firefox about:config && wmctrl -xa firefox && sleep 0.2 && xdotool key Return && xdotool type plugins.http && sleep 1 && xdotool key Tab && xdotool key Down && xdotool key Return && xdotool key Control+w && sleep 20 && rm "$html"
Теперь браузер будет запускаться за 1 секунду до запуска остальной части скрипта. (Может потребоваться настройка для более медленных компьютеров).
Версия скрипта Firefox всегда удаляет файл через 20 секунд.
Тестирование производительности:
Я сделал несколько элементарных тестов производительности, и вот мои результаты:
- Chrome/Chromium Pepper Flash (PPAPI): самый быстрый
- Adobe Flash Projector (NPAPI)(Wine): быстрый
- Firefox Flashplugin (NPAPI): самый медленный
Что касается стабильности, в некоторых случаях PPAPI сталкивается с ошибками / ошибками, которых нет у NPAPI, но они встречаются редко.
Производительность между Pepper Flash и Flash Projector была довольно небольшой (это заметно, но незначительно), тогда как производительность плагина firefox flash была заметно ниже, чем у остальных по некоторым причинам.
Таким образом, если целью является игра во флеш-игры, я бы рекомендовал использовать хром с перцовой вспышкой, установленной поверх остальных. Для других задач вряд ли это будет иметь значение.