サポートに連絡する| システムステータス
ページコンテンツ
    --- title: '既知の問題点:スタジオ、ブライトコーブプレーヤー、API ' parent: General Information —
    このトピックでは、スタジオ、Brightcoveプレーヤー、および API に関する既知の問題について説明します。

    特定された既知の問題は次のとおりです。

    スタジオ

    Chrome の翻訳機能を使用すると、Studio の一部の機能が壊れる
    Chrome の翻訳機能を使用して Studio モジュールを翻訳すると、一部の機能が壊れます。

    Mediaモジュール

    プレーヤーのプレビュー
    ライブの HLS のみのリモートアセットビデオは、プレビュープレーヤーでは再生できません。
    2 バイト文字を含むソースファイル名
    2 バイト文字を含むソースファイル名は、メディアモジュールで再トランスコーディングした後に文字化けする。
    メディア共有

    大量の動画を共有する場合、Brightcove では一度に最大で 2 ページの動画を共有することをお勧めします。一度に多数の動画を共有すると、タイムアウトエラーが発生することがあります。

    既にキャプションが含まれている共有されている動画へのキャプションの追加はサポートされていません。

    ライブストリームをクリップして作成したビデオでは、メディア共有が失敗します。

    予定された動画
    再生 API とカタログキャッシュ動画は最大 10 ~ 15 分間であるため、数分間(最大 20 分)に利用可能になるようスケジュールされている動画を要求しているプレーヤーは、キャッシュが更新されるまで再生可能なビデオを取得できない場合があります。

    プレイヤーモジュール

    プリロード設定
    Internet Explorer のバグにより、IE を使用するときにプリロード設定が無視されることがあります。

    ライブ動画

    完成したライブイベントの動画視聴回数をカウントする Brightcove Player
    ブライトコーブプレーヤーは、リモートアセットがロードされるたびに video_view を占めます。これは、終了したライブイベントであっても、空だったり、取得可能な HLS プレイリストではなくなります。回避策:ビデオを非アクティブ化、スケジュール解除、または削除します。
     

    分析

    広告ブロッカーが原因で、アナリティクスのデータが正確でない可能性があります
    クライアントマシンでの分析データの送信をブロックする uBlock などの広告ブロッカーが原因で、分析データ (UI と API の両方で取得) が不正確になる可能性があります。
    一部の動画で 0 bytes_delveder を表示するカスタムレポート
    動的配信インジェストプロファイルを使用して取り込んだ動画には、カスタムレポートに 0 bytes_delivered と表示されます。
    複数のフィルタを使用したカスタムレポート
    複数のフィルタを使用する場合は、AND演算が使用されます。たとえば、ビデオタグとプレーヤーという 2 つのフィルターを追加すると指定したタグが設定され、指定したプレーヤーで表示される動画のみが表示されます。返された。
    ビデオタグによるフィルター機能を使用したカスタムレポート
    カスタムレポートを作成する場合、ビデオタグによるフィルター機能の使用には制限があります。ライブラリには、その特定のタグが付いた動画が最大 2,000 個まで考慮されます。特定のタグを持つ動画の数がそれよりも多い場合は、タグを含むフィルタリングされていないレポートを取得し、スプレッドシートソフトウェアを使用してローカルにフィルタリングを実行することをお勧めします。
    パフォーマンスレポートに「その他/サードパーティ」が表示される
    VideoCloudライブラリではないビデオがVideoCloudプレーヤー(リモートアセットなど)で再生される場合、その他/サードパーティ動画IDが関連付けられていない状態で表示されます。
    更新された動画名がアナリティクスに反映されない
    アナリティクスが動画のタイトルについて学習するのは、プレーヤーが再生ビーコンの一部としてアナリティクスに動画を送信したときだけです。動画タイトルを変更した場合、動画が再生されるまで、アナリティクスは新しい動画タイトルになりません。これにより、動画名が更新され、再生が録画されていない場合、古い動画の名前が Analytics レポートに反映されます。2013 年 3 月より前の期間のデータはこの問題に頻繁に悩まされ、メタデータは数字のみで表示されます。たとえば、ビデオタイトルが 1230123012 と表示される場合があります。これは、この期間のデータが古い分析システムでキャプチャされたためです。
    動画名とプレイヤー名表示??????アナリティクス UI で
    2013年10月の月のメタデータ(ビデオ名とプレイヤー名)は?????s。この問題は、2013 年 10 月にメタデータが 2 バイト文字で、ビデオビューを持つパブリッシャーに影響します。この問題は、Analytics UI で表示するためにメタデータをキャプチャする方法に関連していました。2013 年 11 月以降、Analytics システムには、イベント指標とともに送信されるメタデータが破損するのを防ぐための追加の保護対策が施されています。
    レポートタイムゾーン
    レポートタイムゾーンは、レポートデータの日の境界を計算するために使用されます。レポートのタイムゾーン設定の変更は、今後のデータにのみ影響し、変更は遡及的には適用されません。この設定を変更すると、変更が適用された日の境界を調べるときに、データのフラットスポットまたはスパイクが表示されることがあります。この設定への更新はすぐには反映されない場合があり、システムが変更を処理するまで、分析データは古い設定を参照し続けます。
    エンゲージメントデータは毎日の粒度で保存
    エンゲージメントデータは、UTC 時間を使用して毎日の粒度で保存され、エンゲージメントレポートの「X% のオーディエンス」の表に 2 日分のデータが含まれる場合があります。
    インターネットエクスプローラーのサポート
    分析モジュールには、Internet Explorer 11 以降が必要です。
    デバイスメーカーの「その他」の結果が多数ある
    場合によっては、デバイス製造元の「その他」の結果が多数表示されることがあります。これは、user_agentデータコレクタが分析データで配信されたことを認識しない場合に発生します。私たちがこれのために特定した最も一般的な原因は、Instagramによって作成されたカスタムuser_agent文字列ですが、おそらく他にもあります。
    水平プレイリスト IPX で使用すると Chatroll ログインが失敗する
    チャットロールは、iframeからのクッキーの設定に問題があります。Safari では、元のサイト (この場合は chatroll.com) から既にクッキーを持っているユーザーのみが iFrame から保存できます。ユーザーがアクセスしたことがない場合、IPX 内の埋め込みチャットロールは Cookie を設定できません。これはブライトコーブの問題ではなく、Safari と Chatroll の問題です。

    聴衆

    オーディエンスのアクティビティは、視聴率:0 と視聴時間:0 と表示されます。
    ビデオを再生せずに、またはビデオが最初のビーコンを送信する前に、インタラクティブイベントがトリガされることがあります。これにより、インタラクティブ機能があるがビデオアクティビティがないビューイベントが記録されます(0% の閲覧、0 秒の視聴)。
    インターネットエクスプローラーのサポート
    オーディエンスのリードフォームには、Internet Explorer 11 以降が必要です。

    ソーシャル

    Ghostery ブラウザプラグインが Social モジュールと干渉する可能性があります

    Ghostery ブラウザプラグインは、Social モジュールを妨害し、正しくロードできないことがあります。

    回避策:Ghostery のホワイトリストにスタジオを追加します。

    アップロードモジュール/動的取り込み

    デバイスの時計が実際の時刻と一致しない場合、アップロードモジュールを介したアップロードが失敗する
    アップロードは一定時間認証されます。時計の時刻が実際の時刻から 15 分以上異なる場合、アップロード時にエラーが発生します。
    動的取り込みによる再変換は、動画のアクティベーション日を更新
    動的取り込みを使用して動画を再トランスコードすると、動画の有効化日が現在の日付に更新されます。アクティベーション日順に並べたスマートプレイリストを使用する場合、これはプレイリストの動画の順序に影響します。
    ファイル名
    ビデオファイル名(拡張子を含む)は、120 シングルバイト(60 全バイト)文字を超えないようにしてください。その場合は、ビデオは正常に取り込まれますが、後で再変換することはできません。

    ブライトコーブプレーヤー

    Brightcove Playerリリースノートを参照して、過去既知の問題が最近のリリースによって修正されているかどうかを確認します。

    ウェブプレーヤーアクセシビリティ:ビデオの位置を調整できません
    Brightcove Playerの進行状況コントロールと音量スライダーは、のネイティブジェスチャーでは調整できません。 iOSのVoiceOver かつ AndroidでのTalkBack。これはプラットフォームの制限によるものです。代わりに、ユーザーは要素と直接対話する必要があります。
    • iOSでは、ユーザーはダブルタップしてプログレスバーまたは音量スライダーを選択し、ダブルタップして長押しすると、時間や音量を調整できます。
    • Android では、2 本の指でダブルタップすると、進行状況や音量を二本指のダブルタップの位置に調整できます。
    idをに設定したエレメントdefault
    Brightcove Player は、id="default"ページにとの要素がある場合、動作が悪いことが知られています。ブログ記事 DOM: 要素 ID はグローバル変数であり、これが問題である理由を説明しています。
    コンソールの警告

    Brightcove Player は、ブラウザのコンソールに表示される警告を生成することがあります。警告は、エラーメッセージではなく、無害であり、再生には影響しません。警告の例がここに表示されます。

    console warning
    ポスターやサムネイル画像のない動画
    サムネイル/ポスター画像のない動画は、ロード時にプレーヤーにエラーが表示されることがあります。これは、プレーヤーをクラッシュさせる可能性のある方法で、モバイル SDK プレーヤーに影響します。
    Internet Explorer では、再生が一時停止されるたびに、常に再生レートが 1.0 にリセットされます。
    これは、Safari 14 (ビッグサーバージョン) ではもはや問題になりません。
    Safariの自動アドバンスプレイリスト
    Safari の場合、プレイリストが表示されていてpre-load プレイヤーの設定がに設定されている場合none 、次のビデオのの自動再生はサイレントモードで失敗します。
    Safari ではキャプションを自動的にオンにできない
    視聴者は引き続きキャプションを手動でオンにできます。
    コンテキストメニュー
    プレーヤーの右端または下端に近いビデオを右クリックすると、プレーヤーのコンテキストメニューが画面外に表示されます。
    ページ上で同じplayer_idを持つ異なるサイズの複数のプレーヤーを使用する

    複数のプレイヤーが 1 つのページに同じ ID を持ち、<video>タグ内で異なるサイズを指定する場合は、widthおよびを使用します。height属性を使用すると、最後のプレーヤーのプレイヤー CSS がすべてのプレイヤーに適用されます。

    回避策

    • 異なるサイズやスタイルを設定したい場合は、異なるプレーヤー ID を持つプレーヤーを使用してください。
    • CSS を使用してプレーヤーのサイジングを提供するプレーヤーのクラスを定義し、そのクラスを異なるプレーヤーのビデオタグに追加します
    FastClick.js でイベント処理が正しくない
    FastClick.js を使用すると、カスタムコントロールバー内で誤ったイベント処理が発生します。これにより、モバイルデバイス上でコントロールバーを使用できなくなる可能性があります。
    ChromeとFirefoxで動画が灰色っぽく表示される

    Chrome と Firefox を使用している場合、ブライトコーブプレーヤーの動画が灰色がかった色で表示されることがあります。これは、ハードウェアアクセラレーションおよび/またはNVIDIAドライバの設定が原因である可能性があります。

    回避策:NVIDIAコントロールパネルを開きます。[ ビデオ ] で、[ ビデオの色設定を調整] を選択します。[ 色調整の仕方 ] で [NVIDIA 設定を使用] を選択します。下高度確実にダイナミックレンジフル(0-255)いいえ限定(16-235)ダイナミックコントラスト強調はオフにする必要があります。この問題は Google Chrome ヘルプフォーラムで報告されています

    エミュレーターの使用

    動画の再生をテストするために Chrome デバイスモードまたは他のエミュレーターを使用している場合でも、エミュレーターは実際のデバイスの動作を正確に表していないことに注意してください。開発中の初期テストにはエミュレーターを使用できますが、正確な結果を得るために実際のデバイスを使用することがベストプラクティスです。

    Chrome デバイスモードで再生をテストすると、次のメッセージが表示されることがあります。「Chromeをデバイスモードで使用すると、そのデバイスのビューポートとユーザーエージェント文字列がChromeでレンダリングされます。これは、実際のデバイスの動作を正確に表すものではありません。「

    使うdata-setup
    data-setup ブライトコーブプレーヤーと一緒に使用しないでください。API data-setup ドキュメントではの使用法が見られますが、これはドキュメントが Video.js プレーヤーのソースコードから直接生成され、その属性をvideo 純粋な Video.js でタグを付けます。属性はプレイヤーに設定情報を送信しますが、Brightcove Player はこのタスクを実行するために別の方法を使用するため、data-setup 信頼性が低くなります。
    プロトコル対応のソース選択と DASH
    DASH コンテンツを使用する場合、プロトコル対応のソース選択は使用できません。HLS および MP4 コンテンツでのみ使用できます。
    Safari で iframe プレーヤーの実装を使用するときにコンソールエラーがスローされました
    Safari で Brightcove Player の iframe 実装を使用すると、コンソールに次のエラーメッセージが表示されます。原点 "http://players.brightcove.net" のフレームが、原点 "#DOMAIN NAME#」のフレームにアクセスすることをブロックしました。プロトコル、ドメイン、およびポートが一致している必要があります。報告されたエラーは再生には影響しません。
    Safari のキャプションメニューに「不明」と表示されます。
    これはサファリ/アップルの制限です。新しいバージョンの Brightcove Player では、Safari に組み込まれたネイティブキャプション機能が使用されています。これが標準的な動作です。これはアップルによって文書化されています: https://developer.apple.com/library/ios/qa/qa1801/_index.html
    フラッシュ以外の環境でのフルスクリーン

    Flash が無効になっている、または Flash ベースの HLS がプレーヤーに対して無効になっており、style プレーヤーの属性を使用して明示的にサイズ設定されている環境ではvideo タグ、一部のブラウザでは全画面表示が機能しない場合があります。

    回避策:style video タグから属性を削除し、代わりにページスタイルシートに次のようにルールを作成します。

      .video-js{
      width:640px;
      height:360px;
      }
      
      
    ソーシャル・シェアリング
    デスクトップでは、広告中にソーシャル共有ボタンは表示されません。
    HTTPS

    ほとんどのデスクトップブラウザでは、マニフェストと動画セグメントの両方が HTTPS 接続経由で配信されている場合にのみ、ブライトコーブ Player は HTTPS Web サイトで HLS を再生します。これは、SSL 以外のコンテンツをより厳しく制限するいくつかのブラウザの最近の変更によるものです。これは、デスクトップコンピュータ上のChrome、Firefox、インターネットエクスプローラーのユーザーに影響します。Safari ユーザーやモバイルブラウザーには影響しません。また、MP4 レンディションの再生には影響しません。

    Video Cloud で管理されるアセットについては、この制限に対処中です。独自の CDN とトランスコーディング(リモートアセット)を管理する場合は、マニフェストコンテンツと動画コンテンツの両方の HTTPS 配信をサポートするように CDN を設定する必要があります。

    全画面表示

    フルスクリーン API をサポートする新しいブラウザーでは、ページ内 CSS ルールを適用して、フルスクリーンに切り替えるときにプレーヤーを 100% に拡大/縮小する必要があります。そうしないと、プレーヤーはフルスクリーンディスプレイ内に元のサイズで表示されます。詳細については、フルスクリーンディスプレイのトピックプレーヤーのサイズを設定する資料。

    IE10 以前の場合、フルスクリーンの API サポートがない場合、新しいウィンドウが開きますが、プレーヤーはウィンドウいっぱいにサイズ設定されません。これは、プレーヤーのサイズを変更するためのスタイルが適用されていないためです。ウィンドウはスクロールできないため、ウェブサイト内のセクションのみが表示され、プレーヤーがまったくありません。

    Hapyakのチャプターで1つのページに複数の動画が公開されている

    HapyaK チャプターを含む単一ページに複数のビデオを公開すると、誤ったチャプタが表示されることがあります。

    回避策

    このスクリプトを使用します: https://github.com/brightcove/gallery-in-page-snippets/blob/master/snippets/hapyakFix.js .

    Akamai HDとHDS
    ブライトコーブプレーヤーは、Akamai HD または HDS 配信方法による動画配信をサポートしていません。
    エラー: d.off は関数ではありません

    既知のバグによって引き起こされるこのエラーは、プレーヤーでMP4とHLSなどの異なるフォーマットを切り替えるときに発生する可能性があります。バグが修正されるまで、問題の原因となっているコードを再試行するだけです。次のコードは、アプリのエラーを修正した例です。

      try {
      myPlayer.catalog.load(video);
      } catch (e) {
      myPlayer.catalog.load(video);
      }
      myPlayer.play();
      
      
    HLS ビデオデュレーション
    コントロールバーに表示されるデュレーションは、初期表示から変更される可能性があります。すべての HLS セグメントがロードされると、デュレーションが更新されます。
    RequireJS
    RequireJS を使用している場合は、bc() メソッドを使用してプレーヤーをインスタンス化する必要があるかもしれません。メソッドを使用する必要性は、プレイヤーのアセットがロードされる方法/タイミングによって決まります。詳細については、 RequireJS および Brightcove Playerのドキュメントを参照してください。
    referrer_url と記述_URL
    iOS デバイスと Android デバイスでは、値が異なる場合があります。referrer_url このため、description_url 代わりに値を使用することをお勧めします。この値は、すべてのプラットフォームおよびデバイスで一貫しています。
    Safari のループ属性
    ループ属性は Safari で正しく動作しません。 ブライトコーブプレーヤーサンプルに詳述されているソリューションを使用できます。ビデオループドキュメントを作成する。
    サファリのキャプション
    Safariはキャプションのスタイル設定にネイティブ機能を使用しているため、キャプション設定メニューオプションはで利用できませんCC Safariブラウザ(iOSとmacOSの両方)のメニュー。
    グローバルという名前のHTML要素IDを使用して
    高度な(ページ内埋め込み)プレーヤー実装コードを、<div> id 値が割り当てられた親タグにネストしないでください。global 。これにより、Brightcove Player で問題が発生します。
    プレーヤーバージョン 5 アイコンの問題
    Brightcove Player バージョン 5 では、チャプターと字幕の両方で同じアイコンが使用されます。バージョン 5 はメンテナンスモードであり、これは表面的な問題であるため、問題は解決される可能性は疑わしい。

    ブライトコーブプレーヤープラグイン

    特定のプラグインドキュメントにリンクされるので、プラグインの既知の問題を参照してください。バージョン 5 はメンテナンスモードであり、これは外観上の問題であるため、修正されません。

    アンドロイド

    • Android の TalkBack のネイティブジェスチャでは、Brightcove Player の進行状況コントロールとボリュームスライダーを調整できません。これはプラットフォームの制限によるものです。代わりに、ユーザーは要素と直接対話する必要があります。Android では、2 本の指でダブルタップすると、進行状況や音量を二本指のダブルタップの位置に調整できます。
    • デバイスでは、HLSはAndroidではあまりうまく動作しないため、HLSビデオではプログレスバーが同期されないことがあります。動画の合計再生時間が 0:01 と誤って表示される場合があります。
    • には複数のアクセシビリティの問題があります ネイティブ Androidのすべてのバージョンのスマートフォンとタブレットの両方でブラウザを閲覧できます。プレーヤーコントロールのいずれに対しても、Talkbackが音声や振動のフィードバックを行いません。(この問題は not Android デバイスのアドオン Chrome ブラウザに適用し、ネイティブブラウザにのみ適用します。
    • Androidデバイスで、エラーメッセージに対するタップイベントが親動画要素まで到達しません。これは、エラーメッセージが表示されたら閉じることができないことを意味します。
    • Android デバイスでは、キャプションや品質の選択など、コントロールバーのプレーヤーメニューをナビゲートすると、メニュー内の項目を長押しすると、メニューが開いた状態で「立ち往生」することがあります。これは Chrome :hover が疑似クラスを追加するためです。プレーヤーの他の場所で別の長押しすると、通常、メニューが閉じます。

    Android 用 Brightcove Player SDK を使用する Android アプリを作成する方法について説明します

    iOS

    • iOS の VoiceOver のネイティブジェスチャーでは、ブライトコーブプレーヤーの進行状況コントロールと音量スライダーを調整することはできません。これはプラットフォームの制限によるものです。代わりに、ユーザーは要素と直接対話する必要があります。iOSでは、ユーザーはダブルタップしてプログレスバーまたは音量スライダーを選択し、ダブルタップして長押しすると、時間や音量を調整できます。
    • iOSのSafariは決してプリロードしません。詳細については、 Safari HTML5 オーディオとビデオガイドを参照してください
    • 別のアプリに切り替えると、iOSでプレーヤーエラーが発生します。Safari/Chrome の iOS デバイスで Brightcove Player の動画を再生すると、別のアプリに切り替えた後、1 分以上経過すると Safari/Chrome に切り替えるとエラーが発生します。

    iPhone

    • ソーシャルシェアはiPhoneでは機能しません。iOS 電話はフルスクリーンネイティブに切り替わるため、iPhone から動画を共有することはできません。
    • iPhoneでは、エラーメッセージのタップイベントは親ビデオ要素にバブルアップしません。これは、エラーメッセージが表示されたら閉じることができないことを意味します。

    iOS 版 Brightcove Player SDK を使用する iOS アプリを作成する方法について説明します

    ウィンドウズ8

    • コンパニオン広告はサポートされていません。
    • Windows 8 タブレットでは、標準の HTML/MP4 再生ではシーク機能しません。HLS技術では正しく動作します。
    • Windows 8タブレットでは、広告は機能しますが、コンパニオンによってブラウザがクラッシュします。
    • Windows 8タブレット、HLS、フラッシュ、ライブ、埋め込みタイプはすべてサポートされています。
    • Windows 8の携帯電話では、MP4を再生しますが、フラッシュまたはHLSはサポートされていません。
    • Windows 8 Phone では、埋め込みの種類が iframe かインラインかにかかわらず、再生ボタンを押すと、常にフルスクリーンで再生が行われます。つまり、再生が開始されると、オーバーレイは表示されません。
    • キャプションを有効にすることはできません。

    クロム

    • オーディオビットレートが低いレンディションに関する問題

      Chromeブラウザの実装上のMSEのバグのために、ここに文書化されています:

      https://bugs.chromium.org/p/chromium/issues/detail?id=534301

      BC プレーヤーのバージョン 5 以降のブラウザでの再生は、試行中のレンディションのオーディオプロファイルが AAC-LC と異なる場合、失敗します (MEDIA_ERR_DECODE と表示されます)。

      新しい取り込んだコンテンツでこのような事態を回避するには、お客様は、

      • 48kbps 以上のオーディオビットレートを使用する
      • DI プロファイルに次の設定を含めます。"max_aac_profile": "aac-lc"

      既存のコンテンツでこのような事態を回避するには、以下のオプションがあります。

      • 上記の推奨事項に従って再トランスコーディング
    • HTML5 動画のリクエストは保留中のままになり、ビデオは読み込まれません。問題に関するGoogleのドキュメントを参照してください。

    Firefoxの

    • Android用Firefoxブラウザ:公式にはサポートされていませんが、可能であればバグに対処しようとします。
    • Firefox バージョン 42 では、Brightcove Player で再生に問題がある可能性があることが報告されています。この問題は、Firefox ハードウェアアクセラレーションの使用設定に関連しているようです。これをチェックすると(有効)、ビデオプレーヤーはオーディオのみを再生し、静止画像のみを表示します。この問題の解決策は、次のようにこのオプションを無効にすることです。[オプション]-> [詳細設定]-> [一般]-> (チェックを外す) 使用可能な場合はハードウェアアクセラレーションを使用する
    • 動画コンテンツの最初のフレームの開始プレゼンテーションタイムスタンプ (pts) が 0 より大きい場合、Firefox で Brightcove Player がタイムアウトすることがあります。現在の推奨ソリューションは、コンテンツを再エンコードすることです。再エンコードは再トランスコードを意味しないことに注意してください。元のマスターを再アップロードする必要があります。それでも問題が解決しない場合は、カスタマーサポートに連絡してさらにサポートを受けてください。

    Internet Explorer

    • IMA3 Flash広告は、IEでよりうまく機能します。Google IMA3はIEでFlashとHTML広告をサポートしていませんが、テストでは、現時点ではFlash SDKがはるかに堅牢であることがわかりました。

    サファリ

    • 既知の問題はありません

    IMA3

    • Google IMA3 スキップ可能な広告を使用する場合、スキップ広告ボタンにはタブインデックスがないので、これらのボタンへのキーボードナビゲーションはできません。したがって、キーボードナビゲーションに依存している視聴者は、広告をスキップすることはできません。

    ブライトコーブ・ライブ

    • h264_profile がに設定されている場合、baseline h264_profile またはがジョブに追加されない場合リクエストすると、Firefox v57 を使用して Windows 10 で問題が発生します。
    • ライブストリームの終わりに達すると、PLAYER_ERR_TIMEOUT プレイヤーにエラーが表示されることがあります。

    ページの最終更新日05 Oct 2021