Video.js完全マニュアル part7 〜公式FAQ集〜

# はじめに
Video.js完全マニュアルとしてVideo.jsの解説をしていくシリーズのpart7です。
Video.jsの公式のガイドである[Video.js Guides](https://videojs.com/guides)を翻訳ツールを使いながら解説していきます。

前回はPlayer作成時に渡すオプションでVideo.js特有のオプション一覧を紹介しました。今回はVideo.jsの公式で発表しているFAQ一覧を紹介します。

前回
[Video.js完全マニュアル part6 〜Video.js特有のオプション〜
](https://qiita.com/manzoku_bukuro/items/045bff6207c591ba0c2c)

part1から読む人は[こちら](https://qiita.com/manzoku_bukuro/items/10137f64810f0dc40543)

# この記事の対象者
- Video.jsを利用する人
- 動画プレイヤーのUI操作をしたい人
- 動画再生関連のサービスを作りたい人

# この記事の解説する章
[FAQs](https://videojs.com/guides/faqs/)

# 公式FAQ集
## Q：Video.jsとは何ですか？
### Answer
Video.js は、ネイティブの video 要素を中心とした拡張可能なフレームワーク/ライブラリです。
以下のような機能を持っています。

- プラグインAPIを提供し、異なるタイプのビデオをネイティブのビデオ要素に渡すことができます（例：HLS、HTML5ビデオ、その他）
- ブラウザ間でネイティブビデオAPIを統一（必要に応じて機能をポリフィリングでサポート）
- 拡張性、テーマ性のあるUIを提供
- キーボードやスクリーンリーダーを使用するユーザーのためのアクセシビリティを確保します
- 追加のビデオフォーマットに対応するコアプラグインのセットを備えています
    - HLSとDASHはネイティブでサポートされています。
    - [videojs-contrib-dash](https://github.com/videojs/videojs-contrib-dash)は、より完全な DASH サポートのために使用することができます
- コアプラグインでDRMビデオに対応
    - [videojs-contrib-eme](https://github.com/videojs/videojs-contrib-eme)
- 多くのプラグインがあらゆる機能をサポートするため、拡張性があります。videojs.comの[プラグインリスト](https://videojs.com/plugins/)を参照してください。

## Q: Video.jsをインストールするにはどうすればよいですか？
### Answer
現在、Video.jsはnpm、GitHubタグからのリリースファイル、またはCDNでホストされたバージョンを使用してインストールすることができます。これらの方法については、[セットアップガイド](https://videojs.com/getting-started/)を参照してください。

## Q: Video.jsはbowerにありますか？
### Answer
Video.js 6 以前のバージョンでは bower をサポートしていましたが、Video.js 6 以降は bower の公式サポートは終了しています。詳しくは [issue #4012](https://github.com/videojs/video.js/issues/4012) を参照してください。

## Q: Video.jsのバージョン番号の意味は何ですか？
### Answer
Video.jsは[semver](https://semver.org/)に従っており、大きなバージョンアップがない限り、ユーザーの下からAPIが変わることはないはずです。

## Q：再生に関するトラブルシューティングはどうすればよいのでしょうか？
### Answer
[トラブルシューティングガイド](https://videojs.com/guides/troubleshooting/)をご覧ください。トラブルシューティングで解決しない場合は、[Slack](https://videojs.slack.com/)で質問するか、[issue](https://videojs.com/guides/faqs/#q-i-think-i-found-a-bug-with-videojs-or-i-want-to-add-a-feature-what-should-i-do)を送信してください。

再生に関する問題について助けを求める場合、問題は多くの場合、使用されているビデオファイル、ビデオのホスト方法、またはブラウザに固有であるため、それらのすべての情報と縮小したテストケースを含めるようにしてください。

## Q: 特定のブラウザでビデオが再生されません。なぜですか？
### Answer
[トラブルシューティングガイド](https://videojs.com/guides/troubleshooting/)をご覧ください。トラブルシューティングで解決しない場合は、[Slack](https://videojs.slack.com/)で質問するか、[issue](https://videojs.com/guides/faqs/#q-i-think-i-found-a-bug-with-videojs-or-i-want-to-add-a-feature-what-should-i-do)を送信してください。

## Q: なぜ再生前にビデオ全体がダウンロードされるのですか？なぜビデオの読み込みに時間がかかるのですか？
### Answer
[トラブルシューティングガイド](https://videojs.com/guides/troubleshooting/)をご覧ください。トラブルシューティングで解決しない場合は、[Slack](https://videojs.slack.com/)で質問するか、[issue](https://videojs.com/guides/faqs/#q-i-think-i-found-a-bug-with-videojs-or-i-want-to-add-a-feature-what-should-i-do)を送信してください。

## Q: `vdata12345`に言及したエラーがスローされるのを見ました。これは何ですか？
### Answer
[トラブルシューティングガイド](https://videojs.com/guides/troubleshooting/)をご覧ください。トラブルシューティングで解決しない場合は、[Slack](https://videojs.slack.com/)で質問するか、[issue](https://videojs.com/guides/faqs/#q-i-think-i-found-a-bug-with-videojs-or-i-want-to-add-a-feature-what-should-i-do)を送信してください。

## Q: Video.jsのバグを見つけました、または機能を追加したいです。どうしたらよいでしょうか？
### Answer
#### 自身で問題を解決できる、あるいは機能を追加できる場合
Video.js リポジトリへの[プルリクエスト](https://github.com/videojs/video.js/pulls)は非常に歓迎されるでしょう。[コントリビューションガイド](https://github.com/videojs/video.js/blob/main/CONTRIBUTING.md#contributing-code)と[プルリクエストテンプレート](https://github.com/videojs/video.js/blob/main/.github/PULL_REQUEST_TEMPLATE.md)に必ず従ってください。

#### 自身で問題の解決や機能の追加ができない場合
Video.js リポジトリに[issue](https://github.com/videojs/video.js/issues)を作成します。あなたのissueをより良くサポートできるよう、[issueのテンプレート](https://github.com/videojs/video.js/blob/main/.github/ISSUE_TEMPLATE.md)と[issueガイド](https://github.com/videojs/video.js/blob/main/CONTRIBUTING.md#filing-issues)に従っていることを確認してください。


## Q：縮小テストケースとは何ですか？
### Answer
縮小テストケースとは、直面している問題を単独で再現した例です。可能な限り少ないコードで問題を再現するサンプルページとお考えください。

縮小されたケースを追加することは重要です。問題が明白に思える場合でも、他の人にとってはそうではないかもしれません。参照できる例があることで、誰かが見てすぐに何が問題なのか分かる場合と、あなたが説明していると思われることを再現するのに時間がかかる場合の違いが出てくるのです。

私たちは、テストケースの削減のための[スターター例](https://codepen.io/gkatsev/pen/GwZegv?editors=1000#0)を用意しています。縮小テストケースについてもっと知りたい方は、[css-tricks](https://css-tricks.com/reduced-test-cases/)をご覧ください。

## Q: Video.jsはどのようなメディアフォーマットに対応していますか？
### Answer
これは、ブラウザの HTML5 video 要素がサポートする形式と、Video.js が利用できる再生技術/プラグインに依存します。メディア形式の詳細については、[トラブルシューティングガイド](https://videojs.com/guides/troubleshooting/)を参照してください。

## Q: Video.jsはどのように使用するソースを選択するのですか？
### Answer
ソースの配列が利用可能な場合、Video.jsは与えられた順序で各ソースをテストします。各ソースについて、techOrderの各技術が、直接かソースハンドラ（videojs-http-streamingなど）経由で再生可能かどうかをチェックします。最初にマッチしたものが選ばれます。

## Q: ビデオを自動再生するにはどうしたらいいですか？
### Answer
近の自動再生の動作の変化に伴い、video 要素に autoplay 属性を使用することは推奨されなくなりました。Video.js ではまだサポートされていますが、Chrome を含む多くのブラウザで、autoplay 属性の動作が変更されつつあります。

代わりに、autoplay 属性ではなく [autoplay オプション](https://videojs.com/guides/options/#autoplay)の使用を推奨します。使用に関する詳細は、Video.js オプション ガイドの autoplay オプションをご覧ください。

autoplay の変更に関する詳細については、当社の[ブログ記事](https://videojs.com/blog/autoplay-best-practices-with-video-js/)を参照してください。

## Q: モバイル端末でビデオを自動再生するにはどうすればよいですか？
### Answer
ほとんどのモバイル端末では、最近まで動画の自動再生がブロックされていました。自動再生に対応していないモバイル機器では、Video.js で自動再生がサポートされていません。iOS10 や Chrome for Android 53+ など、自動再生をサポートしているデバイスでは、動画をミュートするか、オーディオ トラックのない動画でなければ再生できません。

video 要素の属性を使用して手動でこれを行うことはお勧めしません。代わりに、自動再生オプションに 'any' または 'muted' という値を渡す必要があります。このオプションの使用に関する詳細は、[autoplay オプション](https://videojs.com/guides/options/#autoplay)を参照してください。

> 注意: 現時点では、autoplay 属性とオプションは、動画の自動再生を保証するものではありません。

## Q: Video.js で RTMP ビデオを再生するにはどうすればよいですか？
### Answer
RTMPの再生にはFlashが必要であり、[Flashの寿命が尽きた](https://www.adobe.com/products/flashplayer/end-of-life.html)ため、再生できなくなりました。対応しているブラウザはありません。

## Q: ビデオ/字幕/オーディオ/トラックへのリンクを隠すにはどうすればよいですか？
### Answer
ブラウザが行うネットワーク リクエストを隠すことは不可能であり、ソース内の URL を十分に難読化することも困難です。トークン認証のような技術は役に立つかもしれませんが、Video.js の範囲外です。

高度に安全でなければならないコンテンツのために、[videojs-contrib-eme](https://github.com/videojs/videojs-contrib-eme) は DRM サポートを追加します。

## Q: Video.jsのロギングをオフにすることはできますか？
### Answer
出来ます。Video.js読み込んだ後、プレーヤーを作成する前に、以下のコードを追加することで実現可能です。
```js
videojs.log.level('off');
```

どのレベルのロギングが可能かなどの詳細については、[デバッグガイド](https://videojs.com/guides/debugging/)を参照してください。

## Q：プラグインとは何ですか？
### Answer
プラグインとは、他の人が再利用できる機能をまとめたものです。
例えば、Video.jsにボタンを追加して、動画を10回連続で再生した後に再生を停止させるようなプラグインがあります。
このようなプラグインが存在し、公開されていれば、ユーザーは自分のページにそのプラグインを入れて、機能を共有することができます。

## Q：Video.jsのプラグインを作るにはどうしたらいいですか？
### Answer
Video.jsのプラグイン作成については、[プラグインガイド](https://videojs.com/guides/plugins/)をご覧ください。

## Q: Video.jsにボタンを追加するにはどうすればよいですか？
### Answer
Video.jsにボタンを追加する例については、[コンポーネントガイド](https://videojs.com/guides/components/)を参照してください。

## Q: Video.jsのプラグイン一覧はどこで見ることができますか？
### Answer
videojs-pluginキーワードでnpmに公開されているプラグインの一覧は、[videojs.com](https://videojs.com/plugins/)で管理されています。

## Q: ウェブサイトにプラグインを掲載するにはどうすればよいですか？
### Answer
[package.json の配列](https://docs.npmjs.com/cli/v9/configuring-npm/package-json)に 'videojs-plugin' キーワードを追加し、npm にパッケージを公開します。
[プラグインジェネレータ](https://github.com/videojs/generator-videojs-plugin)を使用する場合、これは自動的に行われます。詳しくは、[プラグインガイド](https://videojs.com/guides/plugins/)をご覧ください。

## Q: Video.jsのスキンの一覧はどこで見ることができますか？
### Answer
Video.js の [GitHub wiki](https://github.com/videojs/video.js/wiki/Skins) を参照してください。

## Q：Video.jsは音声のみのプレーヤーとして動作しますか？
### Answer
はい。`<video>`タグや`<audio>`タグ内の音声のみのファイルを再生するのに使用できます。

## Q: Video.jsはオーディオトラックに対応していますか？
### Answer
はい。[オーディオトラック](https://videojs.com/guides/audio-tracks/)の使用方法については、オーディオトラックのガイドを参照してください。

## Q: Video.jsはビデオトラックに対応していますか？
### Answer
代替のビデオトラックのサポートは現在開発中です。ビデオトラックの使用に関する詳細については、[ビデオトラックガイド](https://videojs.com/guides/video-tracks/)を参照してください。

## Q: Video.jsは、テキストトラック（キャプション、字幕など）に対応していますか？
### Answer
はい、そうです。テキストトラックの使用方法については、[テキストトラックガイド](https://videojs.com/guides/text-tracks/)をご覧ください。

## Q: Video.jsは、HLS（HTTP Live streaming）ビデオに対応していますか？
### Answer
Video.jsはHLSに対応しています。HTML5 要素が HLS をサポートしている場合、ネイティブ サポートを使用して再生されます（例：Safari、iOS、レガシー Edge、Android 向け Chrome）。その他のブラウザでは、当社の再生エンジンである [videojs-http-streaming](https://github.com/videojs/http-streaming) を使用して再生されます。

HLS の非ネイティブ再生では、動画をホストするサーバーが [CORS ヘッダー](https://enable-cors.org/)を設定することが不可欠であることに留意してください。

## Q: Video.jsはMPEG DASHビデオに対応していますか？
### Answer
Video.js は、再生エンジンである [videojs-http-streaming](https://github.com/videojs/http-streaming) で一部の DASH ストリームをサポートしています。

また、[videojs-contrib-dash](https://github.com/videojs/videojs-contrib-dash) パッケージを使用することもできます。

HLS と同様に、DASH ストリームには [CORS ヘッダー](https://enable-cors.org/)が必要です。

## Q：Video.jsはライブビデオに対応していますか？
### Answer
しています。ライブ用の一般的なフォーマットは、HLSまたはDASHです。
以前はRTMPがライブによく使われていましたが、どのブラウザでも再生できるわけではなくなりました。

## Q: Video.jsでYouTubeの動画を再生することはできますか？
### Answer
サポートを追加する公式プラグイン、[videojs-youtube](https://github.com/videojs/videojs-youtube)があります。

## Q: Video.jsはVimeoのビデオを再生できますか？
### Answer
サポートを追加する公式プラグインとして、[videojs-vimeo](https://github.com/videojs/videojs-vimeo)があります。

## Q: Video.jsはDRMビデオに対応していますか？
### Answer
サポートを追加する公式プラグイン、[videojs-contrib-eme](https://github.com/videojs/videojs-contrib-eme)があります。

## Q: Video.jsは、広告の統合に対応していますか？
### Answer
コア広告のサポート、[videojs-contrib-ads](https://github.com/videojs/videojs-contrib-ads)を追加する公式プラグインがあります。広告サーバーとの通信と広告の表示を処理するこれ以上のプラグインは、例えば、Googleの[IMAプラグイン](https://github.com/googleads/videojs-ima)を構築するなど.

## Q：Video.jsはnode.jsは必要ですか？
### Answer
必要です。Video.jsは[NPM](https://www.npmjs.com/package/video.js)で公開されています。

## Q: Video.jsはwebpackで動きますか？
### Answer
動きます。[Webpack と Video.js の設定ガイド](https://videojs.com/guides/webpack/)を参照してください。

## Q: Video.jsはReactで動きますか？
### Answer
動きます。[React と Video.js の設定ガイド](https://videojs.com/guides/react/)を参照してください。

## Q：再生ボタンを中央に配置することは可能ですか？
### Answer
デフォルトのスキンは、ポスター画像が見えなくならないようにボタンをオフセットしますが、`vjs-big-play-centered`クラスをプレーヤーに追加するだけで、中央に配置されるようになります。

## Q：一時停止中に大きな再生ボタンを表示させることはできますか？
### Answer
一時停止時にボタンを表示するために、プレーヤーに`vjs-show-big-play-button-on-pause`クラスを追加します。

## Q: Firefoxでピクチャーインピクチャーボタンが表示されないのはなぜですか？
### Answer
Firefox は HTML video Picture-in-Picture (PIP) API をサポートしていないため、Video.jsの動作ででカスタムボタンを持つことはできません。
Firefox には、独自のオーバーレイ PIP ボタンと、それを表示するかどうかの[独自のロジック](https://firefox-source-docs.mozilla.org/toolkit/components/pictureinpicture/pictureinpicture/index.html#the-picture-in-picture-toggle)があります。


# 最後に
今回は公式で紹介している[FAQ集](https://videojs.com/guides/faqs/)を紹介しました。
今回はほとんどDeepLで翻訳したものをそのまま載せています。

---
[Twitter](https://twitter.com/manzoku_bukuro)もやってます