Dla użytkowników Linuksa mających ten problem stworzyłem następujący skrypt jako obejście:
Przed kontynuacją, musisz się upewnić, że pepper-flash jest zainstalowany dla Chrome/Chromium, (flashplugin dla Firefoksa) jedynym sposobem sprawdzenia (bez użycia obejścia poniżej) jest odtworzenie pliku flash w Internecie. (lub w Firefoksie, przejdź do about:plugins i sprawdź, czy ma on “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"
(alternatywnie kompatybilny z kreską)
Aby użyć skryptu, zapisz go jako swftohtml.sh (może być dowolną nazwą, nie musi kończyć się na .sh) w dowolnym miejscu, a następnie przekonwertuj go na uruchomione polecenie albo stwórz dla niego alias w bashrc, albo skopiuj go do /usr/bin/. Pamiętaj, aby uruchomić chmod +x swftohtml.sh, aby uczynić go wykonywalnym.
Skrypt przy uruchomieniu bez argumentów będzie szukał w bieżącym folderze pliku swf i utworzy odpowiedni plik html, który można wykorzystać do uruchomienia tego pliku swf w przeglądarce. Jeśli w folderze znajduje się więcej niż 1 plik swf, to domyślnie będzie to ostatni (np. jeśli masz plik1.0.swf i plik2.0.swf, to domyślnie będzie to plik2.0.swf)
Alternatywnie do konkretnego pliku swf, możesz jako argument dla skryptu podać nazwę pliku (lub pełną ścieżkę do pliku) i zamiast tego użyje tego. (np. swftohtml.sh filename 1.0.swf )
Jeśli chcesz w pełni zautomatyzować skrypt:
Aby otworzyć pliki swf automatycznie w przeglądarce i zautomatyzować usuwanie wynikowego pliku html po jego użyciu, odkomentuj jedną z poniższych linii na dole skryptu (w zależności od Twojej przeglądarki):
#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"
Skrypt otworzy teraz plik html w Twojej przeglądarce, gdy tylko zostanie utworzony. Jeśli w Twojej przeglądarce jest uruchomiona instancja, usunie ona plik html w ciągu 20 sekund (dając Ci wystarczająco dużo czasu na poinformowanie przeglądarki, aby otworzyła plik z jego wtyczką flash). Jeśli nie ma istniejącej instancji Twojej przeglądarki, plik zostanie usunięty w 20 sekund po zamknięciu przeglądarki.
Z tym zestawem możesz skonfigurować pliki SWF do otwierania za pomocą skryptu, a proces jest teraz w pełni zautomatyzowany, dzięki czemu możesz otwierać pliki SWF bezpośrednio, nie martwiąc się nigdy o ręczne tworzenie (lub usuwanie) plików html, czyli będzie zachowywał się tak, jak powinien teraz. (Należy pamiętać, że może być kilka przypadków narożnych, w których plik html nie zostanie usunięty, ale kiedy to nastąpi, można go bezpiecznie zignorować)
Dla użytkowników Firefoksa:
Wersja programu Firefox była nieco bardziej skomplikowana, wymaga zainstalowania wmctrl i xdotool. Powodem tego jest fakt, że aby Firefox mógł odtwarzać lokalne pliki swf w ten sposób należy wyłączyć plugins.http_https__tylko w about:config, skrypt automatycznie wyłącza go, otwiera plik flash, a następnie włącza go ponownie, ponieważ jest to ustawienie, które większość ludzi będzie chciała zachować włączoną opcję. Przeglądarka musi być otwarta przed uruchomieniem polecenia. Jeśli uważasz, że jest prawdopodobne, że przeglądarka Firefoxa zostanie zamknięta po uruchomieniu komendy, zamień wiersz na następujący:
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"
Teraz daję przeglądarce 1 sekundę na uruchomienie przed uruchomieniem pozostałej części skryptu. (Może wymagać dostosowania do wolniejszych komputerów).
Skrypt w wersji Firefox zawsze usunie plik po 20 sekundach.
Performance testing:
Wykonałem kilka podstawowych testów wydajności i są to moje wyniki:
- Chrome/Chromium Pepper Flash (PPAPI): Fastest
- Adobe Flash Projector (NPAPI)(Wine): Fast
- Firefox Flashplugin (NPAPI): Najwolniejszy
Jeśli chodzi o stabilność, istnieją przypadki narożne, gdzie PPAPI będzie działać na błędy/błędy, że NPAPI nie, ale są one rzadkie.
Wydajność między Pepper Flash i Flash Projector był raczej mały (To zauważalne, ale ledwo), podczas gdy wydajność wtyczki Firefox Flash był zauważalnie wolniejszy niż reszta z jakiegoś powodu.
Tak więc, jeśli grasz w gry flash jest celem, polecam użycie chromu z pieprzu flash zainstalowany nad resztą, w ogóle. Dla innych zadań jest mało prawdopodobne, że to będzie miało znaczenie.