情報科学屋さんを目指す人のメモ

方法・手順・解説を書き残すブログ。私と同じことを繰り返さずに済むように。

FRESH!の動画が突然止まって再読み込みしても再生できない場合の原因調査メモ

Chrome (239) FRESH! (2) Windows (498)

アメーバFRESH!で再生していた動画(生配信)が突然止まり、再読み込みしても再生できない状態になってしまいました。このとき、障害が発生しているわけではなく、再生が止まってしまったのは自分だけのようでした。

そこで、何が起こっているのかについて調べた際の調査メモを書いておきます。

結局の所、FRESH!の配信に利用されているライブ動画配信用のプロトコル「HTTP Live Streaming(HLS)」について調べるきっかけとなりました。HLSの仕組みが分かり、.m3u8ファイルや.tsファイル、そして定期的なリクエストの挙動について理解できて、だいぶ問題の挙動が飲み込みやすくなりました。

HLSについては、「ライブ動画配信プロトコル(HTTP Live Streaming, HLS)の概要図解メモ(AbemaTV/FRESH!)」に書いたので、そちらを先に読むと、説明が分かりやすいかもしれません(このページに、そこまで大した説明は書いていませんが、DevToolsで通信を読むとき、HLSが分かるとすごくスッキリ読めます)。

Windows 10 + Chrome。

症状:再生が止まってしまって、再読み込みしても直らない

生配信を視聴中、しばらくの間は問題なく再生できていたものの、突然再生が止まり、ページを再読み込みしても、再生できなくなってしまいました。

※画像は仮面女子のライブの配信。別番組にしても、挙動は同様。自分だけが止まってしまい、障害発生中というわけではない模様(コメントは普通に続いていた)

.m3u8ファイルの取得が「(pending)→(canceled)」で失敗している

ChromeのDeveloper ToolsのNetworkタブで、通信に問題がないか確認したところ、分割された動画ファイル(.ts)のリストが記載されているPlaylistファイル(.m3u8)の取得リクエストについて、一度Statusが「(pending)」と表示されてから「(canceled)」エラーになってしまっていました。

5秒間pendingが続いた後、canceledされている様子から、5秒タイムアウト→再送を繰り返してしまっていたようです。

statusがpendingになる原因について調べる

すると、リクエストのstatusがpendingになる原因を取り除きたいわけなのですが、もちろん症状の通り、タブの再読み込みでは効果がありません。

pendingになる原因としてAdBlockがあるようでしたが、movie.freshlive.tvを手動で除外しても効果はありませんでした。

In my case, I found (after much hair-pulling) that the "pending" status was caused by the AdBlock extension. The image that I couldn't get to load had the word "ad" in the URL, so AdBlock kept it from loading.

Disabling AdBlock fixes this issue.

Renaming the file so that it doesn't contain "ad" in the URL also fixes it, and is obviously a better solution. Unless it's an advertisement, in which case you should leave it like that. :) 引用元

ウイルス対策ソフトを一度オフにしてみる

そこで、一度ウイルス対策ソフト(カスペルスキー2017)をオフにしてみました。

すると、pending問題が解消され、動画の再生が復活しました

しかし、そのままというわけには行かず、復活させてしばらくすると、pending→canceledの繰り返しが再発しました。

というわけで困ってしまうので、その場はEdgeを使ってみることに。Edgeを使っている間は再発せず。

.tsのcanceledについて

実は、視聴が失敗する以前のタイミングから、ちらほら「.ts」へのリクエストも、pending→canceledになってしました。

しかしこれはどうやら、次の.m3u8へのリクエストが先行したため、.tsをjs側がキャンセルしているようです。結局同じ.tsへのリクエストが直後に再送され、取得に成功し、再生は継続していきます。つまり、こちらのたまに発生する.tsの取得失敗は問題になりません。

AbemaTVは途切れず

つい最近までFRESH!もその中で配信されていたりもして、密接な関係にあるAbemaTVですが、こちらはいくら連続再生しても、問題は発生せず、再生し続けることができました。

関連

コメント(0)

新しいコメントを投稿