概要
Brightcove プレーヤーを使用してページ読み込み時に動画を自動再生することは、単純な問題ではありません。これは、ブラウザ ベンダーがユーザーの「勝手に動画を再生してほしくない」という要望に応える形で仕様を変更してきたためです。本ドキュメントでは、各ブラウザでの自動再生の現状や、自動再生に影響する Brightcove プレーヤーの設定について詳しく説明します。
要点
詳細は不要で、最適な設定だけ知りたい場合:
-
クライアントサイド広告なしでの自動再生
-
クライアントサイド広告がない、または SSAI を使用しているプレーヤーで自動再生を成功させるための最適な手順:
autoplayを"any"に設定する- iPhone 用に
playsinlineをtrueに設定する
-
クライアントサイド広告ありでの自動再生
-
自動再生設定は、使用している IMA プラグインのバージョン、または FreeWheel を使用しているかどうかによって異なります。
-
IMA3(最新)
-
クライアントサイド広告を使用するプレーヤー(IMA3 プラグイン v4)で自動再生を成功させるための推奨手順:
autoplayを"any"に設定- iPhone 用に
playsinlineをtrueに設定 - 広告プラグインは、サイドロードや独自ビルドではなく、プレーヤーの JSON 設定で構成する
-
IMA3 v3 または FreeWheel
-
クライアントサイド広告を利用するプレーヤー(IMA3 v3 または FreeWheel)で自動再生を成功させるための推奨手順:
autoplayをtrueに設定- iPhone 用に
playsinlineをtrueに設定 - 広告プラグインは、サイドロードや独自ビルドではなく、プレーヤーの JSON 設定で構成する
自動再生の設定
Brightcove プレーヤーでは、自動再生に 4 つの値を設定できます。HTML5 仕様では、自動再生は boolean 属性であり、true(オン)または false(オフ)です。Brightcove プレーヤーでは、次の特殊な値も利用できます。
Do Not Auto-Play: 視聴者が再生ボタンをクリックするまでplay()を呼び出しません。Auto-Play: ソース設定時にplay()を呼び出します。Auto-Play Muted: プレーヤーをミュートにし、play()を呼び出します。Auto-Play, muted if blocked: まずplay()を呼び出し、失敗した場合はミュートにして再度play()を呼び出します。
これら 3 つの値はタグ属性では使用できません!
優先順位
Brightcove プレーヤー初期化時に、自動再生設定がどのように評価されるかを以下に示します。
-
video 要素の属性
HTML5 標準に従い、属性が存在する場合は
true、存在しない場合はfalseとなります。他の多くのケースではクエリパラメーターが優先されますが、自動再生については Video.js の仕様に従い属性が最優先されます。
<video-js autoplay controls></video-js> - URL ハッシュまたはクエリ文字列
他の多くのケースと異なり、自動再生クエリ パラメーターまたは URL ハッシュは、すべての種類の埋め込みで後方互換性のために尊重されます。
将来のメジャーリリースでは、Videoタグ埋め込みからは削除される予定です。
パラメーターが存在すれば
trueとみなされます(例:?autoplay&foo=bar)。値を文字列で指定することもできます(例:?autoplay=muted&foo=bar)。クエリ/ハッシュで
autoplay=falseを設定することはできません! -
videojs()/bc()のオプションbc()関数に自動再生設定を渡すことができます。 -
JSON 設定
オプションに自動再生設定がない場合は、プレーヤーの JSON 設定が使用されます。
-
デフォルト
上記いずれも該当しない場合、
falseが使用されます。
ブラウザの設定とポリシー
近年ブラウザ間の動作は統一されつつありますが、主要ブラウザごとの設定とポリシーを以下にまとめます。
Safari(macOS)
Safari(macOS)には次の設定があります:
- すべての自動再生を許可
- 音声付きメディアを停止 (デフォルト)
- 自動再生しない
さらに、サイトごとに設定を変更できます。
Safari(iOS / iPadOS)
iOS と iPadOS の Safari にはユーザー向けの自動再生設定はありませんが、以下のポリシーがあります:
- ミュートされた自動再生は常に許可される
- 音声付き自動再生はユーザー操作が必要
- iPhone では
playsinline属性が必須
詳細は WebKit のブログ記事 を参照してください。
Chrome
Chrome にはユーザー向けの自動再生設定はありませんが、次のポリシーを実装しています:
- ミュート自動再生は通常動作するが、最終的にはブラウザ次第であり例外的に動作しない場合もある
- 音声付き自動再生はユーザー操作、または十分に高い MEI(デスクトップ)が必要
詳細は Chrome のブログ記事 を参照。
Firefox
Firefox にはグローバル設定とサイト別設定があります:
- 音声・動画を許可
- 音声をブロック (デフォルト)
- 音声・動画をブロック
Edge
Edge のデフォルト設定:
- 許可 (デフォルト)
- 制限
ただし、edge://flags/#edge-autoplay-user-setting-block-option にアクセスすれば、旧 Edge(Legacy)にあった「ブロック」設定を復活させることができます。
Edge(Legacy)
旧 Edge の設定:
- 許可
- 制限
- ブロック
「制限」は、他ブラウザ同様、ミュート再生またはユーザー操作が必要です。
既知の問題
インページソースとプログラムによる自動再生
<source> 要素などのインページソース使用時に play() を呼び出すと問題が発生することが知られています。
Firefox で確認されていますが、他のブラウザにも影響する可能性があります。
Video Cloud のソースはプレーヤー作成後に読み込まれるため、この問題は Brightcove の一般的な利用では発生しません。
代わりに、canplay イベントが発火するまで待ってから play() を呼び出す必要があります。また、autoplay: true を設定することで、ユーザー設定に応じて期待通りに動作する場合もあります。
IMA3 / FreeWheel
プリロール広告が再生されない、または不具合がある
これらのプラグイン使用時、play() を呼び出すと自動再生が失敗し、再生ボタンをクリックしてもプリロールが再生されないケースがあります。
FreeWheel では、プリロールが大きな再生ボタンの「後ろ」で再生されるという報告もあります。
推奨事項
これらのプラグイン使用時の自動再生の推奨設定:
- プラグインをプレーヤーにバンドルする(例:Studio を使用)。サイドロード(インページ読み込み)は推奨されません。
- 特殊な自動再生設定は使用しない。
autoplayをtrueに設定し、広告プラグインに任せる。