- Chrome では、パフォーマンスを最適化するために、MSE 動画がバックグラウンドで再生されているときに動画トラックを無効にするようになりました。
- デバイスを回転すると動画が全画面表示になります。
バックグラウンド動画トラックの最適化(MSE のみ)
バッテリーを長持ちさせるため、動画がMedia Source Extensions(MSE)を使用している場合、動画がバックグラウンドで再生されている(表示されていないタブで再生されているなど)ときに、動画トラックが無効になるようになりました。
これらの変更を確認するには、chrome://media-internals
ページに移動し、「info」プロパティでフィルタします。再生中の動画があるタブが非アクティブになると、動画トラックが無効になったことを示す Selected video track: []
などのメッセージが表示されます。タブが再びアクティブになると、動画トラックが自動的に再び有効になります。
処理の流れを理解したい方のために、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 秒未満の動画にのみ適用されます。
- 動画に音声トラックが含まれていない場合、バックグラウンドで再生すると動画は一時停止します。
デバイスを回転させると動画を自動で全画面表示
ビューポートで動画を再生中にデバイスを横向きに回転すると、再生が自動的に全画面表示モードに切り替わります。デバイスを縦向きに戻すと、動画はウィンドウ モードに戻ります。
この動作は手動で実装できます。(モバイルウェブ動画の再生の記事をご覧ください)。
このマジックの動作は、次の場合にのみ発生します。
- デバイスが Android スマートフォン(タブレットではない)であること
- ユーザーの画面の向きが [自動回転] に設定されている
- 動画サイズが 200×200 ピクセル以上
- 動画でネイティブ コントロールが使用されている
- 動画を再生中
- 動画の 75% 以上が視認可能(画面上)である
- 向きが 90 度(180 度ではない)回転する
- 全画面要素がまだありません
- Screen Orientation API を使用して画面がロックされていない