ガイド:contrib-ads 移行
概要
Video.js の最大の特長の 1 つは、それを取り巻くプラグインとカスタマイズのコミュニティが充実していることです。広告サポートはこのエコシステムの重要な部分ですが、すべてのプラグイン作者が広告対応を念頭に置いているわけではありません。Brightcove は、広告が Video.js 全体とより高い互換性を持てるようにするため、videojs-contrib-ads に大幅な変更を加えています。
バージョン 2.0 では、広告の再生中かどうかに応じてイベントを異なるプレフィックス付きで再ディスパッチする仕組みが導入されています。広告再生中はイベントに ad、広告後にコンテンツが再開される際は content が付与されます。たとえば、広告中の pause イベントは adpause イベントになります。
これにより、広告の有無にかかわらず、(広告に非対応の)プラグイン作者から見ると Video.js の動作は同じに見えます。また、広告に対応したプラグインを作りたい開発者のために、元のイベントにも引き続きフックできます。
移行手順
もし videojs-contrib-ads の上に独自の広告統合を実装している場合、アップグレードに備えて以下の点を対応する必要があります:
- イベント ハンドラーに適切なプレフィックスを適用してください。広告再生中に
timeupdateを監視していた場合、今後はadtimeupdateを監視する必要があります。コンテンツ再生中の動画イベントは影響を受けません。 - ポストロールをトリガーする際は、
endedの代わりにcontentendedを監視してください。コンテンツ再生中、endedイベントはキャプチャされcontentendedとして再ディスパッチされるため、他のプラグインが同一動画に対して複数のendedを受け取らないようになっています。コンテンツとポストロールの再生がすべて終了した後、contrib-ads が最終的なendedを発火します。 - ユーザーには、他のプラグインより前に、あなたのプラグインを読み込み・初期化するよう案内してください。contrib-ads プラグインはイベントの再ディスパッチを行いますが、リスナー登録順が早いプラグインに対してはイベントを隠すことができません。
- ポストロール対応拡張により、プリロールと同様の
postrollTimeoutオプションが追加されています。特定の動画でポストロールを再生したくない場合は、adtimeoutを発火させることで即座に次の動画へ進むことができます。