無料で試す
← ブログに戻る

動画は再生中なのにメディア一覧が空のまま。検出はリクエストを聞いている

ツールを入れて、動画は明らかに再生されているのに、右側の「動画メディアライブラリ」には一件も出てこない。ページを変えても、アプリを再起動しても、別のパソコンでも同じ。この一覧はリクエストを聞いて作られるもので、ファイルを探して作られるものではない——プレイヤーが実際にストリームを取りに行っていなければ、ツール側がどれだけ正常でも聞こえるものがない。ここからは「聞こえない」パターンを分けて見ていく。

ツールが動画を検出できないのは、ファイルではなくリクエストを聞いているから

ツールが動画を見つける方法は、ページのネットワーク出口に張り付いて、プレイヤーがデータを取りに行くたびにそのリクエストを記録すること。一覧はその記録をまとめたものにすぎない。 ページ全体を走査して動画ファイルを探しているわけではない。ストリーミングのページに、そんなファイルはそもそも置かれていない。一覧が空なのは、物音が聞こえなかったという意味で、見つからなかったという意味ではない。

一覧に項目が出るには、次の二つが同時に成り立っている必要がある。

  • プレイヤーが実際にストリームを取りに行き始める:サムネイルで止まっている、カーソルを重ねたときに少し動く、自動再生がブロックされた、いずれも該当しない。
  • リクエストがツールに聞こえる位置から出る:プレイヤーが別のフレームに入れ子になっていると、聞こえない。

どちらかが欠ければ一覧は空のままだ。ストリーミングのページにそのまま使える動画ファイルがない理由はストリーミング動画がダウンロードできない理由で分解しているので、ここでは聞く側の話を続ける。

プレイヤーがまだ本当に取りに行っていないと、一覧は空のまま

いちばん多い空のパターンは、実は何も壊れていない。映像は動いているが、プレイヤーはデータを取りに行っていない。 サムネイルの切り替え、カーソルを重ねたときのプレビュー、ミュートで勝手に始まる小窓は、どれも再生中という錯覚を生む。

  • カーソルを重ねたときのプレビューとサムネイルの切り替え:カーソルが通ったときに動く数秒は、たいてい画像の入れ替えか、ごく短いプレビュー映像だ。
  • 自動再生がブラウザにブロックされる:ページをクリックする前は、音のある自動再生はたいてい拒否される。MDNの自動再生ガイドに詳しい。拒否された後、多くのサイトは再試行せず、映像はクリックを待って止まったままになる。
  • プレイヤーがまだ作られていない:フィード型のページは、スクロールしてその位置に来て初めてプレイヤーを作る。それまでは取りに行く対象がない。
  • 手前に扉がある:ログインや年齢確認が済んでいないと、リクエストは出ない。

四つとも同じ行動に行き着く:動画を本当に再生させて、5秒以上しっかり走らせてから一覧を見る。再読み込みを繰り返すより効く。再読み込みはストリームのリクエストを生まないからだ。

プレイヤーの描き方が変わると、ツールは追いつけなくなる

映像は再生され、ストリームも実際に取られているのに、一覧は空のままということがある。ツールが聞いているものの形が、ツールの知っている形ではなくなっているのだ。 今のウェブプレイヤーは、そのまま使えるファイルをページに置くことはほとんどない。スクリプトがブラウザのメモリ上でセグメントをつなぎ合わせて画面に渡している。ブラウザがこの用途のために専用のインターフェースを定義しているのはそのためで、W3CのMedia Source Extensions仕様の冒頭に目的が書かれている。

  • プレイヤーが別のフレームに入れ子になっている:再生エリア全体が別のアドレスから配信され、ストリームのリクエストはその層から出ていく。
  • セグメントのアドレスに一般的な拡張子がない:アドレスの末尾にいつものメディアの印がないため、拡張子で判断するルールは素通りしてしまう。
  • リクエストが先にページ自身のキャッシュ層に取られる:ページがオフラインの仕組みでデータを抱え、自分でプレイヤーに渡すので、ネットワーク層は静かになる。

これらは不具合ではなく、リクエストを聞くというやり方の限界だ。同じツールが他のサイトでは普通に動くからといって、このサイトに問題があることにはならない。

二分法で自己点検:再生中にメディアのリクエストは出ているか

責任がページ側にあるのかツール側にあるのかは、一つで切り分けられる。再生している数秒の間に、メディアのリクエストが出ているかどうかだ。 F12 で開発者ツールを開き、ネットワークのパネルに切り替え、フィルタでメディアを選び、再生中に新しく出てくる項目を見張る。再生を一度クリックして、5秒しっかり走らせる。

  • 一件も出ない:プレイヤーがストリームを取りに行っていないので、問題はページ側。前の二つのセクションに戻って、本当に再生されていないのか、ブロックされているのかを確認する。
  • リクエストは出ているのに一覧が空のまま:ストリームは取られているのにツールが聞けていないので、問題はツール側。ここで初めてやり方を変える価値が出る。

一つはっきりさせておきたい。これらのアドレスは使えないし、そのまま使うべきでもない。セグメント形式の内容は、一件取っても再生できるファイルにはならない。それに、対象を取り違えないように。ここで調べているのは、そもそも始まっていないケースだ。プログレスバーが動き出した後の遅さや引っかかりは別の問題で、順番はダウンロードが遅いときの高速化にある。

一覧が空のときは、残したいものをパソコンに保存する

検出はリクエストを待つが、録画はリクエストを見ていない。画面そのものを見ているので、画面が本当に動いていれば、上のどの聞こえないにも邪魔されない。 VidBrowserで内容をパソコンに残す手順は四つ。

ステップ 1:VidBrowser をダウンロードしてインストールする

VidBrowser は Windows と Mac に対応したデスクトップの動画ブラウザで、ダウンロードと録画の両方が組み込まれている。代わりにリクエストを聞いてくれる拡張機能を入れる必要はなく、インストールは数分で終わる。

ステップ 2:VidBrowser で目的のページを開き、動画を本当に再生させる

自分のアカウントでログインし、普通に閲覧してから、再生を一度クリックして数秒走らせる。上の二分法はこの手順で再現できる。

ステップ 3:まず右側の「動画メディアライブラリ」に項目があるか見る

あれば、解像度を選んでからオレンジのダウンロードボタンを押し、MP4 として保存する。

ステップ 4:一件もなければ録画に切り替える

画面にカーソルを重ねると録画のコントロールが重なって出る。速度を選び(1x はリアルタイム、2x や 4x なら速く録り終わる)、「全録画」で最後まで録る。左側の録画ボタンでいつでも開始と一時停止ができる。保護された内容、リアルタイム配信、そして上のストリームが聞こえないケースは、すべてこのステップの担当だ。録り終えたファイルは左側のダウンロード履歴から探せて、アカウントの状態には左右されない。

これらはそもそもダウンロードできる元がない。項目を待たない

すべての手順を試しても一覧が空なら、もう不具合ではないことが多い。そもそもダウンロードできる元が存在しないのだ。 空の一覧が正しい結果になる。

  • セグメント自体が暗号化されている:リクエストは聞こえるが、組み立てたファイルは再生できない。こうした内容は録画で残す。
  • リアルタイム配信:最初の一秒から生成しながら送っているので、一つの完全なファイルは存在しない。聞こえてくるのは連続したデータの流れだ。
  • 映像をスクリプトが描いている:全体がスクリプトで一フレームずつキャンバスに描かれ、ページ上にメディアのデータが存在しない。取りに行くものすらない。

ファイルがあるかどうかに依存しない方法が録画だ。一覧が空でもできないわけではなく、入り口が変わっただけだ。

よくある質問

動画は普通に再生されているのに、ツールには一件も出ないのはなぜ?

検出が聞いているのはストリームのリクエストで、画面が動いているかどうかではないからです。カーソルを重ねたときのプレビュー、ブロックされた自動再生、別のフレームに入れ子になったプレイヤーは、いずれも画面は動くのにリクエストは聞こえない状態を作ります。まず再生を一度クリックして数秒走らせてください。

同じサイトが昨日は検出できて、今日は空だった。途中で何が変わった?

たいていはページがプレイヤーの作り方を変えています。サイトがプレイヤーを更新したり、配信アドレスの書き方を変えたりすると、古いルールがその日のうちに効かなくなることがあります。ツールが壊れたかどうかとは別の話です。進め方はダウンローダーが動かないときの対処にあります。

開発者ツールで見えたあのアドレスは、そのままダウンロードに使える?

ほとんどの場合使えませんし、使うのもおすすめしません。セグメント形式の内容は数十から数百の小さな断片をつないだもので、一件だけでは一本になりません。手元に残したいなら、録画のほうが近道です。

その他のブログ