メディアの更新(Chrome 61)

François Beaufort
François Beaufort

バックグラウンド動画トラックの最適化(MSE のみ)

バッテリーを長持ちさせるため、動画がMedia Source Extensions(MSE)を使用している場合、動画がバックグラウンドで再生されている(表示されていないタブで再生されているなど)ときに、動画トラックが無効になるようになりました。

これらの変更を確認するには、chrome://media-internals ページに移動し、「info」プロパティでフィルタします。再生中の動画があるタブが非アクティブになると、動画トラックが無効になったことを示す Selected video track: [] などのメッセージが表示されます。タブが再びアクティブになると、動画トラックが自動的に再び有効になります。

chrome://media-internals ページのログパネル
chrome://media-internals ページのログパネル

処理の流れを理解したい方のために、Chrome が裏で行っている処理を大まかに示す JavaScript コード スニペットを以下に示します。

var video = document.querySelector('video');
var selectedVideoTrackIndex;

document.addEventListener('visibilitychange', function() {
  if (document.hidden) {
    // Disable video track when page is hidden.
    selectedVideoTrackIndex = video.videoTracks.selectedIndex;
    video.videoTracks[selectedVideoTrackIndex].selected = false;
  } else {
    // Re-enable video track when page is not hidden anymore.
    video.videoTracks[selectedVideoTrackIndex].selected = true;
  }
});

動画トラックが無効になっている場合は、動画ストリームの画質を下げることをおすすめします。上記のように Page Visibility API を使用して、ページが非表示になったときに検出するだけです。

制限事項は次のとおりです。

  • この最適化は、キーフレーム距離が 5 秒未満の動画にのみ適用されます。
  • 動画に音声トラックが含まれていない場合、バックグラウンドで再生すると動画は一時停止します。

Chromium のバグ

デバイスを回転させると動画を自動で全画面表示

ビューポートで動画を再生中にデバイスを横向きに回転すると、再生が自動的に全画面表示モードに切り替わります。デバイスを縦向きに戻すと、動画はウィンドウ モードに戻ります。

この動作は手動で実装できます。(モバイルウェブ動画の再生の記事をご覧ください)。

デバイスを回転させると動画を自動で全画面表示

このマジックの動作は、次の場合にのみ発生します。

  • デバイスが Android スマートフォン(タブレットではない)であること
  • ユーザーの画面の向きが [自動回転] に設定されている
  • 動画サイズが 200×200 ピクセル以上
  • 動画でネイティブ コントロールが使用されている
  • 動画を再生中
  • 動画の 75% 以上が視認可能(画面上)である
  • 向きが 90 度(180 度ではない)回転する
  • 全画面要素がまだありません
  • Screen Orientation API を使用して画面がロックされていない

Chromium のバグ