« 何事? MSのブラウザでは音が出ない? | メイン | CD管理システム、システム障害 »

2016年4月21日 (木)

とりあえずの結論:MSのブラウザでは音が出ない?



とりあえずの結論:MSのブラウザでは音が出ない?
-------------------------------------------------------------------------------------------------------------
Microsoft のブラウザ Edge で音源が再生できない問題について調べてみました。
いくつかの事がわかりましたが、原因は特定できていません。
今の私の感じとしては、Microsoft Edge の問題ではないか・・・と思っています。
もちろん証明できるわけではありませんが、そんな気がします。

現状では、Mozilla Firefox、Google Chrome がおすすめ。問題なく動作しています。


以下のようなサーバー、クライアント、音源ファイルの位置の組み合わせでテストしてみました。

表の見方、略号の説明

表題行「Server    Client    Server    local    PC2」は、左から順に
Server.....Reclib システムが動作しているサーバー。
Client.....ブラウザを使って Server にアクセスしたPC

その右の3つは、音源ファイルが格納されたPCで
Server.....Reclib システムが動作しているサーバーに音源ファイルがある。
local......Client に音源ファイルがある。IISが動作している。
PC2........LAN上にある「PC2」というマシンに音源ファイルがある。IISが動作している。

「WWW」「PC1」「PC2」「PC1」「NotePC」はコンピュータの名前で
WWW.....Reclib システムの公開用サーバー。Linux
PC1.....開発用のPC。Webサーバー、サーブレットエンジン、データベースなどが動作している。
    開発作業に直接必要でないアプリ等はインストールしていない。Windows 10
PC2.....開発作業以外用のPC。Office、 Eメールなどがインストールされている。Windows 10
NotePC..LANに接続されていないノートPC。Office等はインストールしていない。Windows 10

○......音源が再生できた
☓......エラーとなり、再生できなかった

Server Client 音源の位置と結果
Server local PC1 PC2
WWW NotePC *1 *1
WWW PC2 ☓*2
WWW PC1 ☓*2 ○*5

Server Client 音源の位置と結果
Server local PC PC2
PC1 PC2 ○*3 ☓*2
PC1 PC1 ○*3 ○*3 ☓*4

*1 NotePC はLANに接続されていないので、LAN上にある「PC1」「PC2」にはアクセスできない。
*2 localhost と同じ条件である。
*3 Server に音源があるのと同じ条件である。
*4 後述

このテスト結果から
・音源ファイルがWebサーバー(ページを返したのと同じサーバー)にあれば再生できる。
・音源がWebサーバー以外のマシンにある場合の再生可否についての規則性は良くわからない。
ローカルリソースは全く再生できないのであれば分かりやすいのだが、サーバーとクライアントの組み合わせによって再生できたり、できなかったりする。
NotePC で local 音源が再生可能なのに PC1、PC2 ではエラーになる理由が分からない。
逆に、NotePC では再生できる理由も分からない。

・Webサーバーとは異なるマシンに音源があるという事は、CORS(Cross-Origin Resource Sharing)になるわけで、いくつか弄ってみたけど手応えなし。現象は変わらなかった。
FireFox などを用いると、音源(IIS を用いたローカルなWebサーバー)は正しいデータを返すので、IISの問題ではなく Edge の問題のように思える。

・エラーとなるまでの時間が場合によって大きく異なる。
localhost をアクセスしようとすると失敗までに2~3分かかるが、(*4)の場合はほぼ瞬時にエラーが発生する。
localhost の場合はタイムアウト、(*4)の場合はサーバーに拒否されたかに見えるが、ブラウザの「開発者ツール」で見る限り、両方共ネットワークをアクセスしていない。IISのログには失敗は記録されていないので、これ以上は分からない。

ネットワークをアクセスしない理由、(*4)が失敗し(*5)が成功する理由も分からない。

・IISのログを見ていたら、IPアドレスが「::1」などというのがある。ipv6 は禁止しているはずだが・・。
確認したが、ipv6 は禁止されている。なのに、localhost へのアクセスには「::1」が使われている。

・ping localhost とすると、IPアドレスは「::1」となる。

・となると、ipv6 を許可してみるか。で、許可してみたが現象は変わらず。ipv6 は禁止に戻す。

・PC2 で ping PC2 とすると、ipv6 のアドレスが表示された。IP Helper サービスが動いていた。これを止めると ::1 になった。

・ping localhost は「::1」のまま。こういう仕様らしい。

・アクセスする音源のURLをホスト名ではなくIPアドレスとしてみたが現象は変わらず。
「//localhost/」でも「//127.0.0.1/」でも動かない。「//PC1」「//192.168..../」も同様。

というわけで原因はつかめていませんが、これ以上やっても泥沼なので、このあたりで止めにします。

コメント

コメントを投稿