Brightcove Video Connect
Brightcove Video Cloudと連携し、DrupalサイトでBrightcoveのビデオコンテンツを管理・表示するためのモジュールです。
brightcove
インストール
composer require 'drupal/brightcove:^3.3'
composer require 'drupal/brightcove:^3.2'
composer require 'drupal/brightcove:^3.1'
概要
Brightcove Video Connectは、業界をリードするオンラインビデオプラットフォームであるBrightcove Video CloudとDrupalを統合するモジュールです。このモジュールを使用することで、Brightcoveに保存されているビデオコンテンツをDrupalサイト内で直接管理・表示することができます。
主な機能として、Brightcove APIを使用したビデオの同期、プレイリストの作成と管理、テキストトラック(字幕・キャプション)のサポート、カスタムフィールドの同期などがあります。ビデオプレーヤーはレスポンシブ対応しており、様々なデバイスで最適な表示が可能です。
キューベースの同期システムにより、大量のビデオコンテンツでも効率的に処理でき、Cronを使用した自動同期やWebhookによるリアルタイム通知にも対応しています。また、Drupal標準のMediaモジュールとの統合も可能で、既存のメディア管理ワークフローに組み込むことができます。
Features
- Brightcove Video Cloud APIとの完全な統合によるビデオコンテンツの双方向同期
- ビデオエンティティの作成・編集・削除とBrightcoveへの自動アップロード
- マニュアルプレイリストとスマートプレイリスト(タグベース)の両方をサポート
- WebVTT形式のテキストトラック(字幕・キャプション・説明)のサポート
- Brightcoveで定義されたカスタムフィールドの自動同期と表示
- 複数のBrightcoveアカウント(APIクライアント)の管理
- レスポンシブおよび固定サイズのビデオプレーヤーテンプレート
- ビデオのスケジュール公開(開始日・終了日の設定)
- Webhookサブスクリプションによるビデオ変更のリアルタイム通知
- キューワーカーによる効率的なバックグラウンド同期処理
- Drupal Viewsとの統合によるビデオリストの柔軟な表示
- ビデオ検索プラグインによるサイト内検索への統合
- Drushコマンドによる同期処理のCLI実行
Use Cases
企業のビデオライブラリ管理
Brightcove Video Cloudで管理している企業のビデオコンテンツをDrupalサイトで公開する場合に使用します。APIクライアントを設定し、Cronで定期的に同期することで、Brightcoveに追加されたビデオが自動的にDrupalサイトに反映されます。ビデオは専用のビュー(Views)で一覧表示でき、カテゴリやタグでフィルタリングも可能です。
オンデマンドビデオ配信サイト
教育機関やメディア企業がオンデマンドでビデオコンテンツを配信するサイトを構築する場合に適しています。プレイリスト機能を使用してコースや番組シリーズを構成し、スマートプレイリストでタグに基づいた自動分類も可能です。テキストトラック(字幕・キャプション)のサポートによりアクセシビリティにも対応します。
マーケティングビデオの埋め込み
製品紹介やマーケティングビデオをDrupalのコンテンツに埋め込む場合、Media Brightcoveサブモジュールを使用してメディアライブラリに統合します。エディターはWYSIWYGエディタからビデオを選択・挿入でき、レスポンシブプレーヤーにより様々なデバイスで最適な表示が可能です。
大規模ビデオアーカイブの移行
既存のBrightcoveアカウントに大量のビデオがある場合、キューベースの同期システムにより効率的にDrupalに取り込めます。Status Overviewページから同期状況を監視し、必要に応じてキューを手動実行できます。
リアルタイム同期が必要なニュースサイト
ビデオニュースサイトなど、Brightcoveでの変更を即座にDrupalに反映する必要がある場合、Webhookサブスクリプションを設定します。video-changeイベントの通知を受け取り、ビデオの追加・更新・削除をリアルタイムで同期します。
プロキシ環境での運用
企業のファイアウォール環境でBrightcove APIへの直接アクセスが制限されている場合、Brightcove Proxyサブモジュールを使用してHTTPプロキシ経由で通信します。NTLM認証やSOCKSプロキシにも対応しています。
Tips
- 初回セットアップ後は必ずStatus Overviewからキューを実行し、プレーヤーとカスタムフィールドを同期してください
- 大量のビデオがある場合は、Cronによる自動同期よりもDrushコマンド(drush bcsa)の使用を推奨します
- ビデオのカスタムフィールドはBrightcove Studioで定義し、APIクライアント設定を保存することで同期されます
- レスポンシブプレーヤーを使用する場合、max_widthを100%に設定することで、コンテナに合わせた最適なサイズで表示されます
- 複数のBrightcoveアカウントを使用する場合は、各APIクライアントに分かりやすいラベルを設定してください
- Webhookサブスクリプションを使用する場合、エンドポイントURLがHTTPSで外部からアクセス可能である必要があります
- ビデオのReference IDは一意である必要があります。自動生成されるUUIDを使用するか、独自の命名規則を適用してください
- テキストトラックはビデオ編集フォームから直接追加でき、複数の言語の字幕を設定可能です
- プレイリストのタイプ(マニュアル/スマート)は作成後に変更できません。用途に応じて適切なタイプを選択してください
Technical Details
Admin Pages 10
/admin/config/media/brightcove_api_client
Brightcove Video Cloudへの接続に使用するAPIクライアント(認証情報)を管理します。複数のBrightcoveアカウントを設定可能です。
/admin/content/brightcove_video
Brightcoveと同期されたビデオの一覧を表示・管理します。ビデオの作成、編集、削除が可能です。
/brightcove_video/add
新しいビデオをBrightcoveにアップロードします。
/admin/content/brightcove_playlist
Brightcoveプレイリストの一覧を表示・管理します。
/brightcove_playlist/add
新しいプレイリストを作成します。マニュアル(手動)とスマート(タグベース自動)の2種類から選択できます。
/admin/reports/brightcove
Brightcoveエンティティとキューの状態を確認し、同期操作を実行できます。
/admin/config/system/brightcove_subscription
BrightcoveのWebhook通知(サブスクリプション)を管理します。ビデオ変更時にリアルタイムで通知を受け取れます。
/admin/config/system/brightcove_cron
Brightcoveの自動同期(Cron)設定を管理します。
/admin/structure/brightcove_video/settings
Brightcove Videoエンティティの表示設定を管理します。Field UIでフィールドの表示をカスタマイズできます。
/admin/structure/brightcove_playlist/settings
Brightcove Playlistエンティティの表示設定を管理します。
権限 22
Hooks 7
hook_cron
Cron実行時にBrightcoveとの同期を開始。disable_cron設定で無効化可能
hook_entity_extra_field_info
ビデオとプレイリストエンティティに追加フィールド(プレーヤー、カスタムフィールド)を定義
hook_theme
プレーヤー表示用のテーマフックを定義(固定サイズ、レスポンシブ)
hook_entity_access
brightcove_video_tagsタクソノミーの編集・削除を禁止
hook_ENTITY_TYPE_view (brightcove_video)
ビデオ表示時にプレーヤーとカスタムフィールドを追加
hook_ENTITY_TYPE_view (brightcove_playlist)
プレイリスト表示時にプレーヤーを追加
hook_file_delete
ファイル削除時にビデオエンティティのポスター/サムネイル参照を更新
Drush Commands 1
drush brightcove:sync-all
すべてのAPIクライアントからBrightcoveデータを同期します。キューにジョブを追加し、バッチ処理を実行します。
Troubleshooting 7
Client IDとSecret Keyが正しいか確認してください。Brightcove Studioで新しいAPIクレデンシャルを作成し、必要な権限(CMS API、Player API、Ingestion API)が付与されているか確認します。
Status Overviewページ(/admin/reports/brightcove)でキューの状態を確認してください。キューが溜まっている場合は「Run all queues」を実行します。Cronが正常に動作しているか、disable_cron設定が有効になっていないかも確認してください。
プレーヤーのバージョンが6.x以上か確認してください。5.x以下のプレーヤーはサポートされていません。Brightcove Studioでプレーヤーをアップグレードするか、別のプレーヤーを選択してください。
PHPのアップロードサイズ制限(upload_max_filesize、post_max_size)を確認してください。大きなファイルの場合はURLアップロードを使用するか、php.iniの設定を調整します。
WebVTT形式(.vtt)のファイルを使用しているか確認してください。ソース言語が正しく設定されているか、Brightcove Studioでテキストトラックが正しく処理されているかも確認します。
Brightcove Proxyの設定ページ(/admin/config/system/brightcove-proxy)で接続テストを実行してください。プロキシのホスト、ポート、認証情報が正しいか確認します。
大量のコンテンツがある場合、キューは段階的に処理されます。PHPの実行時間制限(max_execution_time)を増やすか、Drushコマンド(drush bcsa)をCLIから実行することで、より効率的に処理できます。
Security Notes 5
- APIクレデンシャル(Client ID、Secret Key)は機密情報です。設定エクスポート時に注意してください
- 本番環境ではbrightcove_proxy.configのパスワードフィールドに平文でパスワードが保存されることに注意してください
- administer brightcove configurationパーミッションは信頼できるユーザーのみに付与してください
- コールバックエンドポイント(/brightcove/notification-callback)は認証なしでアクセス可能です。Brightcoveからの正当なリクエストのみを処理するよう設計されています
- brightcove_video_tagsタクソノミーはシステム管理されており、手動での編集・削除は禁止されています