概要
エラーメッセージプラグインを使用すると、プレーヤーはエラーが発生したときにユーザーフレンドリーなメッセージを表示することができます。デフォルトのスタイルシートでは、ビデオ要素自体の上に半透明のオーバーレイとしてメッセージが表示されます。既存のメッセージテキストを変更したり、独自のスタイルを追加したりできます。必要なときにトリガーされるカスタムメッセージを作成することもできます。
上の画像に示されているエラーメッセージは、無効なものでプレーヤーを更新することによって作成されましたsrc
の値sources
プロパティ。
エラーメッセージプラグインはデフォルトのプラグインで、Brightcove Player で自動的にロードされます。ただし、ロードしないことを選択できます。このプラグインがなければ、エラーメッセージの限られたセットが表示され、一部のエラーはブラウザコンソールにのみ表示されます。プレーヤーの作成時にデフォルトのプラグインをロードしない方法の詳細については、プレーヤープラグインの概要資料。
はじめに
プレーヤーのすべてのインスタンスを更新するには、Studio の Brightcove Players モジュールを使用してカスタムプラグインを実装できます。このアプローチは、プレイヤーのエラーメッセージプラグインを更新するために、以下のセクションで使用されます。コードページからこのプラグインを更新することを選択した場合、それはあなたのプレーヤーのそのインスタンスにのみ影響します。
ページコードからプラグインを更新するには、まず Brightcove Player への参照を取得します。この例では、JavaScriptで次の名前の変数を作成していますmyPlayer
プレーヤーへの参照を割り当てます。
<video-js id="myPlayerID"
data-video-id="4443311217001"
data-account="1507807800001"
data-player="default"
data-embed="default"
class="video-js" controls></video-js>
<script src="https://players.brightcove.net/1507807800001/default_default/index.min.js"></script>
<script type="text/javascript">
videojs.getPlayer('myPlayerID').ready(function(){
var myPlayer = this;
標準エラー
このプラグインには、ランタイムエラーコード値に基づいて、標準の HTML5 ビデオエラーに対するデフォルトのエラーメッセージのセットがあります。
- エラーコード:1
- タイプ :MEDIA_ERR_ABORTED
- 見出し :動画のダウンロードはキャンセルされました
- メッセージ :メディアの再生を中止した
- エラーコード:2
- タイプ :MEDIA_ERR_NETWORK
- 見出し :ビデオ接続が切断されました。インターネットに接続していることを確認してください
- メッセージ :ネットワークエラーにより、メディアのダウンロードが途中で失敗しました。現在、MP4 および/またはプログレッシブダウンロードのビデオフォーマットに最も役立ちます。詳細については、このドキュメントの「既知の問題」セクションを参照してください。
- エラーコード:3
- タイプ :MEDIA_ERR_DECODE
- 見出し :動画が悪いか、ブラウザで再生できないフォーマットです
- メッセージ :メディア再生は、破損の問題のため、または使用しているメディアの使用機能がブラウザでサポートされていないため、中断されました。
- エラーコード:4
- タイプ :MEDIA_ERR_SRC_NOT_SUPPORTED
- 見出し :このビデオは、このブラウザでは利用できないか、サポートされていません。
- メッセージ :サーバまたはネットワークに障害が発生したか、フォーマットがサポートされていないため、メディアを読み込めませんでした。
- エラーコード:5
- タイプ :MEDIA_ERRLYPTED
- 見出し :視聴しようとしている動画は暗号化されており、復号化する方法がわかりません
- メッセージ :メディアは暗号化されており、それを復号化する鍵がありません。
エラーに関連付けられたエラーコードがない場合は、一般的なメッセージが表示されます。
- エラーコード:不明
- メッセージ:MEDIA_ERR_UNNOWN
- 説明:予期しない問題が発生しました。すぐに確認し、もう一度試してください
テキストのオーバーライド
変更できるエラーメッセージには、次の 3 つの部分があります。
headline
:これは、上部にあるメッセージテキストです。type
:これはエラーコード:テキストです。message
:これは技術的な詳細:テキスト。
以下の例は、標準エラーのメッセージテキストをエラーコード値で上書きする方法を示しています。4
。プロパティは次のように定義されます。
plugins
:このプロパティには、プロパティと値の配列が含まれます。このプラグインでは、name
errors
プロパティにの値を指定するだけで済みます。options
:このプロパティは、プラグインにデータを渡すために使用されます。errors
:このプロパティでは、更新するエラーコードを定義します。ここでは、のメッセージテキストを上書きしていますheadline
、type
、およびmessage
。
ページコードでの使用
コードにエラースクリプトを含めると、次のようにメッセージテキストを上書きできます。
myPlayer.errors({
"errors": {
"4": {
"headline": "This is a custom error message",
"type": "custom type",
"message": "these are details"
}
}
});
カスタムプラグインの使用
プレーヤーのすべてのインスタンスを更新する場合は、カスタムプラグインを作成し、Video Cloud Studio の Players モジュールでプレーヤーに追加します。プラグインの詳細については、「Player プラグインの設定」ドキュメントを参照してください。
標準メッセージテキストをオーバーライドするプラグインを作成するには、次の手順を実行します。
-
Brightcove Player プラグインコードを使用して、インターネットにアクセスできる場所に保存された JavaScript ファイルを作成します。それはこれに似ているはずですが、あなた自身の価値を持ちます:
videojs.registerPlugin('errorText', function() { var myPlayer = this; myPlayer.errors({ "errors": { "4": { "headline": "The Live Stream will begin soon", "type": "CUSTOM_TYPE", "message": "Please come back, once the live event has begun!" } } }); });
-
の中にプレイヤーモジュール、選択プラグイン左のナビゲーションから。
-
を展開しますプラグインを追加するボタンをクリックし、カスタムプラグイン。
-
プラグインの詳細ページで、次の値を追加します。
- プラグイン名 -プラグイン名
- JavaScriptのURL -最初のステップからのプレーヤープラグインの場所
- [ 保存] ボタンを選択します。
-
プレイヤーを公開します。
Brightcoveが定義したカスタムエラー
カスタムエラーも定義できます。ブライトコーブでは、このセクションで説明する多数のカスタムエラーを定義し、カスタムエラーを作成することもできます。詳細については、次のセクションを参照してください。
- ブライトコーブでは、カスタムエラーコードの値は文字列にすることをお勧めします。提供されたエラーのうちの 2 つは過去の理由から負の数を使用しますが、英数字/記述文字列は衝突の問題の原因となる可能性が低くなります。
- カスタムエラーメッセージには、任意の名前を付けることができます。Brightcoveは、タイプがで始まることをお勧めします
PLAYER_ERR
対標準化MEDIA_ERR
混乱を避けるために。 - このセクションの後半で詳述するように、カスタムエラーは許可しないかどうかを指定できます。
5 つのカスタムエラーメッセージがリファレンスとして追加されました。
- エラーコード ፦1
- メッセージ:PLAYER_ERR_NO_SRC
- 説明:ビデオが読み込まれていません
- エラーコード ፦2
- メッセージ:ERR_TIMEOUT
- 説明:ビデオをダウンロードできませんでした。
- エラーコード: 設定されていない
- メッセージ:PLAYER_ERR_DOMAIN_RESTRICTED
- 説明:この動画は現在のドメインでの再生が制限されています
- エラーコード: 設定されていない
- メッセージ:PLAYER_ERR_IP_RESTRICTED
- 説明:この動画はお客様の現在の IP アドレスで制限されています
- エラーコード: 設定されていない
- メッセージ:PLAYER_ERR_GEO_RESTRICTED
- 説明:この動画は、現在の地域での再生が制限されています
ユーザー定義のカスタムエラー
独自のカスタムエラーを定義する場合は、コードを使用しないことをお勧めします。(上記のセクションでは、ブライトコーブが定義している新しいカスタムエラーでこれが現在実行されていることがわかります)。PLAYER_ERR_
一貫性のためにカスタムエラーにプレフィックスを使用することも検討する必要がありますが、もちろん好きな名前を付けることもできます。
コードにエラースクリプトを含めると、次のようにカスタムメッセージを追加できます。
videojs.getPlayer('myPlayerID').ready(function() {
var myPlayer = this;
//custom error
myPlayer.errors({
"errors": {
"PLAYER_ERR_AGE_GATE": {
"headline": "You must be at least 18 years of age.",
"message": "Content may be considered inappropriate for some users."
}
}
});
カスタムエラーを表示する
カスタムエラーを定義する場合は、いつ表示するかを Brightcove Player に知らせる必要があります。これを行うには、メッセージを表示するタイミングを決定する独自のコードを作成します。次に、error()
関数を使用してメッセージを次のように表示します。
//display custom message
var age_appropriate = false;
myPlayer.on("loadstart", function () {
if(!age_appropriate) {
myPlayer.error({code:'PLAYER_ERR_AGE_GATE'});
}
});
ここでは、age_appropriate
変数はに設定されていますがfalse
、カスタムエラーメッセージを表示するタイミングを決定するために、独自のコードを追加します。
エラーは次のようにユーザーに表示されます。
カスタムエラーを却下できないようにする
デフォルトでは、カスタム・エラー・メッセージはビデオ・ビューアによって拒否されます。次のスクリーンショットが示すように、 OKボタンをクリックしてウィンドウを閉じるだけでなく、バツ右上隅にあります。
ビデオビューアがエラーメッセージを閉じることを許可したくない場合は、それを行うことができます。error()
メソッドを呼び出すと、dismiss
プロパティをfalse
。
myPlayer.error({code:'age-gate-error', dismiss: false});
これを行うと、エラーメッセージが次のように表示され、エラーを閉じる方法はありません。
getAll()メソッド
getAll()
メソッドを使用して、特定のプレーヤーに登録されたすべてのエラーを確認できます。あなたは呼び出すことができますgetAll()
後いつでもメソッドエラープラグインは、たとえば後に初期化されましたplayer.errors()
と呼ばれています。メソッドを呼び出す例は次のとおりです。
console.log('myPlayer.errors.getAll()',myPlayer.errors.getAll());
詳細についていくつかのエラーが展開されたコンソール表示の例は次のとおりです。
ディスパッチエラー
開発では、構成の変更が成功したかどうかをテストするためにエラーをディスパッチすることができます。これは、次のコードスニペットに示すようなコードを使用して行うことができます。この場合、ボタンはコードに追加されるため、選択した時間にエラーをディスパッチできます。
<video-js id="myPlayerID"
data-video-id="4443311217001"
data-account="1507807800001"
data-player="default"
data-embed="default"
class="video-js" controls></video-js>
<script src="https://players.brightcove.net/1507807800001/default_default/index.min.js"></script>
<p><button onclick="changeVideo()">change video</button></p>
<script type="text/javascript">
var changeVideo;
videojs.getPlayer('myPlayerID').ready(function() {
var myPlayer = this;
changeVideo = function(){
myPlayer.error({code:'2'});
}
});
</script>
ローカライズエラー
エラープラグインは複数の言語をサポートしています。言語サポートを追加するには、プラグインがロードされた後、使用したい特定の言語ファイルをロードします。
<script src="lang/es.js"></script>
その後、Brightcove Player のプログラムによるローカライズのドキュメントに示されている手法を使用して、エラーメッセージをローカライズできます。
bc-catalog-エラー
ready()
スクリプトブロックの通常のセクションでエラーを処理すると、問題が発生する可能性があります。たとえば、プレーヤーの準備ができている前に BC-catalog-error イベントが送出され、ready()
セクション内のエラーを聞くと、エラーを処理できなくなります。この問題は、ジオフィルタリングを使用する場合、ビデオが非アクティブの場合、ビデオがスケジュール範囲外の場合、または別のアカウントにある場合に発生する可能性があります。コードに問題はないかもしれませんが、問題はブラウザに依存する可能性があるため、注意してください。
例えば、ビデオが非アクティブのときにメッセージを表示するプラグインコードは次のとおりです。
videojs.registerPlugin('inactiveErrorCheck', function() {
var myPlayer = this;
myPlayer.one('bc-catalog-error', function(){
var specificError;
myPlayer.errors({
'errors': {
'inactive-video-error': {
'headline': 'The video you are trying to watch is inactive.',
'dismiss': false
}
}
});
if (typeof(myPlayer.catalog.error) !== 'undefined') {
specificError = myPlayer.catalog.error.data[0];
if (specificError !== 'undefined' & specificError.error_code == "VIDEO_NOT_PLAYABLE") {
myPlayer.error({code:'inactive-video-error'});
};
};
});
});
誇張されたエラー率
報告されたエラーの数が不合理だと思われる場合は、同じセッションで重複したエラーイベントを受け取り、この誇張されたエラーレートを生成できることを知っておくことが重要です。Brightcove Player は、プレーヤーに報告されたときと同じ数量で分析にエラーを送信します。例えば、プレーヤーにメディアがなく、play()
何らかの形でコードが1000回連続して呼び出された場合、 PLAYER_ERR_NO_SRCエラーが分析に報告されます。
分析を歪ませる大量のエラーを含むセッションがいくつかある場合は、実際の問題をよりよく理解するために、次のロジックを使用することを検討する必要があります。
number_of_sessions_with_errors / total_number_of_sessions
よりむしろ
count of errors/number of views
既知の問題
- HLS ソースを再生する場合、ネットワーク接続が失われた後の動作は、予想されるものではない可能性があります。詳細は次のとおりです。
- バージョン 6.x のBrightcove Playerでは、HLS セグメントが無限に要求され、 MEDIA_ERR_NETWORK は表示されません。
- バージョン 5.x の Brightcove Player では、一定期間(30 秒以上)後にPLAYER_ERR_TIMEOUT エラーが表示されます。
- Windows 10 の Edge(スタジオ内とパブリックURLの両方)でビデオを読み込むと、 MEDIA_ERR_SRC_NOT_SUPPORTEDエラーが表示され、ビデオを再生できません。
-
Android デバイスと iPhone では、エラーメッセージのタップイベントは、親ビデオ要素までバブルされません。これは、エラーメッセージが表示されたら閉じることができないことを意味します。ユーザーがフルスクリーンモードの場合、この状態を離れる方法がないため、この動作は問題になる可能性があります。
この問題は現在取り組んでいるため、今後のプレーヤーリリースで修正する必要があります。今のところ、あなたはこのような回避策を試すことができます:
player.on("touchstart", function(e) { if (player.error_) { player.error(null); e.preventDefault(); } })