« 2012年6月 | トップページ | 2012年9月 »

2012年8月

2012年8月 3日 (金)

Google Chrome 21 でのFlashPlayerトラブルの原因と解決方法

■2012/10/23追記
 ●追記が遅くなりましたが、Chrome22からは内蔵のgcswf32.dllが削除され、
   内蔵のFlashPlayerはPPAPI方式のpepflashplayer.dllだけになったようです。
   Chrome22での挙動はあまり検証できていませんが、この記事はChrome21について
   書いたものですので、それを踏まえてご覧下さい。

■2012/9/3追記
 ●2012/8/31にGoogle Chromeが21.0.1180.89にアップデートされ、
   それにともない内蔵FlashPlayerのバージョンも
      pepflashplayer.dll 11.3.31.232
      gcswf32.dll 11.4.402.265
   にアップデートされました。
   このpepflashplayer.dllであれば、本記事に書いた
     ・ZeroWatchで動画を読み込むことができない
     ・原宿バージョンだとローカル記憶領域の警告が出る
   という問題は起きなくなったようです。
   ただ、うちで発生している
      「設定ダイアログでマイクのタブを選ぶとフリーズする」
   という問題は治ってません。
 ●新たに
      「pepflashplayerだとニコニコ動画のコメントアートが正しく表示されない」
   という問題を教えていただきましたので、問題4として追記しました。
 ●手動で内蔵FlashPlayerを無効にした場合、Chromeがアップデートされると
   勝手にpepflashplayer.dllが有効にされてしまうので、
   解決方法その2として起動オプションで無効にする方法を追記しました。


---記事ここから---

7/31に「Google Chrome 21 (21.0.1180.60m)」が公開されました。
で、そのタイミングかその直後に、Chrome内蔵のFlashPlayerの扱いが変わったようです。

既にニコニコインフォでも
   「GoogleChromeでの動画再生について
という記事になっていますが、Chromeでニコニコ動画を見る場合、色々問題が起きているようです。
この記事を見ると、ニコニコ動画ではChromeは推奨ブラウザにはなっていないようですね。

これにより、Chrome21では、

  1.ニコニコ動画で動画を読み込むことができない
    (うちの場合、ZeroWatchで動画視聴しようとするとこうなります。
     なんの警告もなくテレビちゃんが延々と点滅している状態。)

     →2012/9/3追記:8/31のChromeの更新により解決したようです。

  2.ニコニコ動画で、動画は読み込めるが
      「ローカル記憶領域の書き込みが出来ません」
      「プレーヤーの一部機能がご利用いただけない状態です」
    という警告が出て動画にコメントをつけることができない
    (うちの場合、原宿バージョンで動画視聴しようとするとこうなります。)

     →2012/9/3追記:8/31のChromeの更新により解決したようです。

Harajukuwarning

  3.FlashPlayer上で右クリック→設定→マイクのタブを押すと
    ChromeのCPU使用率が100%近くになり、PCがフリーズ状態になる。
    (フリーズ状態になるのは、うちがシングルコアCeleronのXP SP3環境だからかもですが)

  (2012/9/3追記)
  4.ニコニコ動画のコメントアート(CA)・スクリプトアート(SA)が正しく表示できない。

      参考ブログ: 513号室

      参考動画:
        

 といった問題が起きているようです。
上の3つは自分の環境で確認したものですが、ZeroWatchだと問題は起きず、
原宿だとまったく動画を読み込まないという環境もあるようなので、人によって症状は変わるようです。
ChromeスレなどではGPU再生支援が効いてないんじゃないかという話も出ているようです。

この記事ではこの問題の原因と解決方法を書いてみたいと思います。

■ChromeのFlashPlayerの仕組みと、今回の問題の原因

Google Chromeには、FlashPlayerが内蔵プラグインとして含まれています。
内蔵のFlashPlayerには、
  1.gcswf32.dll (NPAPI版)
  2.pepflashplayer.dll (PPAPI版)

の2種類があります。
また、これらとは別にシステムにインストールしたFlashPlayer(Adobeのプラグイン版)である、
  3.NPSWF32.dll (NPAPI版)
を利用することもできます。

今回の問題は、この3つのFlashPlayerの優先度が変わったことが原因のようです。

どういうことかというと、Google Chrome 20の時点では、上記3つのFlashPlayerの
優先度は、以下のようになっていました。                                                                                                                                                     

FlashPlayerプラグインの優先順位(Chrome20まで)
優先順位DLL名内蔵
      or
      システム
使用API
gcswf32.dll 内蔵 NPAPI
pepflashplayer.dll 内蔵 PPAPI
NPSWF32.dll システム NPAPI

 
つまり、特に設定していなければ、優先度が最も高いgcswf32.dllが使われていました。

これに対し、Google Chrome 21(21.0.1180.60m)では、優先度が以下のように変わっています。                                                                                                                                                                                 

FlashPlayerプラグインの優先順位(Chrome21)
優先順位DLL名内蔵
      or
      システム
使用APIバージョン
pepflashplayer.dll 内蔵 PPAPI 11.3.31.222
gcswf32.dll 内蔵 NPAPI 11.3.300.268
NPSWF32.dll システム NPAPI ユーザーがインストールしたバージョン

 
要するに、以前はgcswf32.dllを使っていたから問題なく見れたのに、
今回の更新で、pepflashplayer.dllが使われるようになったため、問題が起きているようです。
pepflashplayer.dllは、つい最近までは
  「Pepper API を使用した試験バージョンです。」
とされていたので、まだ不完全なものなのかもしれません。

なお、プラグインの優先度は,Chromeのアドレスバーに
  chrome://plugins
と打ち込むことで確認することができます。

Chrome21plugin


■解決方法その1「手動でpepflashplayerを無効にする」

pepflashplayer.dll(PPAPI版の内蔵FlashPlayer)を使っているのが原因ですので、それを無効にして
gcswf32.dll(NPAPI版の内蔵FlashPlayer)が使われるように設定すれば解決です。以下手順。

  1.Chromeのアドレスバーに
      chrome://plugins
    と打ち込み、プラグインの一覧を表示します。

  2.pepflashplayer.dllのところで「無効にする」をクリックし、pepflashplayer.dllをグレーアウトさせます。

  3.gcswf32.dllの部分が有効になっていることを確認します。

  4.上にあるFlash(3 files)の部分の右側のバージョンが、gcswf32.dllのバージョンになっていることを確認します。

これで、あとは動画視聴ページ等を再読み込みしてやれば、
gcswf32.dllが使用され、問題なく動画が見れるようになると思います。

ただし、この方法だと、Chromeがアップデートされた場合に、
また勝手にpepflashplayer.dllが有効になってしまうため、
アップデートされるたびに必要に応じてpepflashplayer.dllを無効にする作業が必要です。
それが面倒な人は、下の「解決方法その2」を試してみてください。

Chrome21ppapioff

 
■解決方法その2「Chromeの起動オプションを指定して内蔵FlashPlayerを無効にする」

解決方法その1では、Chromeのアップデートのたびにpepflashplayer.dllが
勝手に有効にされてしまうという問題があります。
これが面倒な場合は、Chromeの起動オプションで強制的に
内蔵のFlashPlayerを無効にするという方法を使うとよいでしょう。

  1.Chromeの起動に使っているショートカットアイコンを、デスクトップなど好きな場所にコピーします。
    名前は「Chrome(PPAPI無効)」など、わかりやすくしておくとよいでしょう。

  2.1でコピーしたショートカットアイコンを右クリックし「プロパティ」を開き、
    「ショートカット」タブを開きます。

  3.「リンク先」が
       "C:\(中略)\chrome.exe"
    となっているはずなので、その後ろに起動オプションを書き加え、
    内蔵FlashPlayerを無効にします。
    関連する起動オプションは、以下の2つです。

起動オプション効果
--disable-bundled-ppapi-flash pepflashplayer.dllを無効にする
--disable-internal-flash gcswf32.dllを無効にする

 
    例えば、内蔵のpepflashplayer.dllだけを無効にしたいなら「リンク先」のchrome.exeの後ろに
       "C:\(中略)\chrome.exe" --disable-bundled-ppapi-flash
    といった感じでオプションを書き加えます。
    pepflashplayer.dllだけでなくgcswf32.dllも無効にしたい場合は、
       "C:\(中略)\chrome.exe" --disable-bundled-ppapi-flash --disable-internal-flash
    としますが、とりあえずpepflashplayer.dllだけを無効にしておくのがよいと思います。

Chromeshortcut

  4.このショートカットアイコンを使ってChromeを起動するようにすれば、
    指定した内蔵FlashPlayerは強制的に無効になります。
    Chromeのアップデートがあっても、無効にした内蔵FlashPlayerが
    勝手に有効にされることはありません。(起動オプションが変更されれば別ですが)
    なお、この方法で無効にされたFlashPlayerは、chrome://plugins にも表示されなくなります。

とりあえず、しばらくはpepflashplayer.dllを無効にしておいたほうがトラブルは少ないものと思われます。

 
なお、この件については、ニコニコ動画研究所様でも記事を公開しておられますのでそちらも参照してみて下さい。

    【ニコ動】 最新版の Chrome で動画が再生できない : ニコニコ動画研究所

 
なお、うちの場合は低スペック環境なので、内蔵のFlashPlayerを両方とも無効にして
システムにインストールしたやや古いFlashPlayer10.3.183.23を使っています。
そのあたりの詳細を知りたい方は以前の記事をご覧ください。

   FlashPlayer11系をアンインストールして10.3系をインストールする方法: さまよう金の髭

| | コメント (2) | トラックバック (0)

« 2012年6月 | トップページ | 2012年9月 »