Version: 2020.2
言語: 日本語
ビデオソース
ビデオファイルについて

ビデオファイルの互換性

Unity にはさまざまな形式のビデオファイルをインポートできます。Unity はインポートしたビデオファイルを ビデオクリップ アセットとして保存します。

Unity がビデオファイルを適切にプレビューするには、エディタープラットフォーム (Unity を実行するプラットフォーム) と互換性がある必要があります。また、プロジェクトをビルドするときに、ファイルがプロジェクトを実行するターゲットプラットフォームと互換性があることを確認する必要があります。Unity はファイルを一般的にサポートされている形式にトランスコードするオプションを提供しますが、互換性を自身で管理することもできます。詳細は、後述の ターゲットプラットフォームとの互換性 を参照してください。

エディタープラットフォームとの互換性

ビデオソースファイルは、エディタープラットフォームがサポートする形式を使用する必要があります。各プラットフォームは、ビデオファイル形式の異なるサブセットをサポートします。

拡張子 Windows OSX Linux
.asf
.avi
.dv
.m4v
.mov
.mp4
.mpg
.mpeg
.ogv
.vp8
.webm
.wmv

ビデオファイルのトラックも、サポートされているコーデックを使用してエンコードする必要があります。各プラットフォームはコーデックの特定のサブセットをサポートします。コーデックのサブセットは、プラットフォームのバージョンによって異なる場合があります。

サポートされていないコーデックを使用してエンコードされたトラックは、エディターでエラーメッセージをトリガーします。それらのトラックは、使用する前に互換性のあるコーデックを使用して変換/再エンコードする必要があります。

ほとんどのプラットフォームでは、H.264 (一般的には .mp4、.m4v、.mov 形式) は、プラットフォーム全般にわたり最高の互換性を提供するため、サポートされている中で最適なビデオコーデックです。Linux は良く知られている例外です。

Linux の場合、最適なエンコードは通常、VP8 コーデックを使用してエンコードされたビデオトラックと、Vorbis コーデックを使用してエンコードされたオーディオを含む .webm コンテナです。

コーデックのサポートについては、エディタープラットフォームの公式ドキュメントを参照してください。 例えば、Windows と macOS はどちらもコーデックの互換性に関するドキュメントを提供しています。

Video Clip Importer は Unity にインポートしたビデオファイルをトランスコードできます。これは、ビデオソースがエディタープラットフォームがサポートするコーデックを使用しているが、ターゲットプラットフォームがサポートしていない場合に便利です (後述の ターゲットプラットフォームとの互換性 を参照)。

エディターでサポートされていないビデオファイルの使用

ターゲットプラットフォームと互換性があるが、エディタープラットフォームと互換性のないビデオファイルを使用するには、それらを ストリーミングアセット として設定します。例えば、エディターが VP8 しかサポートしていない場合でも、Android ビルドに VP9 コーデックを使用したいなどの場合に役立ちます。

ビデオファイルをストリーミングアセットとして設定するには、それらをプロジェクトの StreamingAssets フォルダーに保存します。Video Player コンポーネントがストリーミングアセットを指すようにするには、URL プロパティを使用します。また、Application.streamingAssetsPath を使用して、スクリプトをとおしてストリーミングアセットへのプラットフォーム固有のパスにアクセスすることもできます。

この方法でビデオファイルを使用すると、エディターでプレビューできません。ただし、エディター互換バージョンを作成してプレースホルダーとして使用し、互換性のあるバージョンと互換性のないバージョンの両方をプロジェクトに含めて、ランタイムにどちらを使用するかを決定できます。

以下の例は、異なるプラットフォームで異なるビデオ URL を使用する方法を示しています。詳細については、プラットフォーム依存のコンパイル を参照してください。

void SetupMovieFile(VideoPlayer vp)
{
# if UNITY_EDITOR || UNITY_LINUX
vp.url = pathToMyVp8File;
# elif UNITY_ANDROID
vp.url = pathToMyVp9File;
# elif UNITY_STANDALONE_WIN
vp.url = pathToMyWmvFile;
# else
vp.url = pathToMyMp4File;
# endif
}

ターゲットプラットフォームとの互換性

VideoPlayer コンポーネントは、エディタープラットフォームのネイティブオーディオおよびビデオデコードライブラリ (前述の エディタープラットフォームの互換性 を参照) を使用して、ビデオファイルをエディターで再生します。これらのファイルがターゲットプラットフォームの要件を満たしていることを確認してください。

エンコードに関する推奨事項

  • ハードウェアアクセラレーションにネイティブでサポートされている最高のビデオコーデックは H.264 です。

  • VP8 は、クロスプラットフォームサポートを優先する場合に適しています。幅広くサポートされており、包括的な機能セットを備えていますが、H.264 などのハードウェアアクセラレーションコーデックよりも多くのリソースを消費します。

  • H.265 は、H.265 をサポートするデバイスで使用できます。詳細は、後述の H.265互換性 を参照してください。

  • Android はネイティブライブラリを使用して VP8 をサポートします。そのため、一部の Android デバイスでは VP8 もハードウェア支援される場合があります。

  • Unity エディターではサポートされていますが、.ogv 形式は他のプラットフォームではあまりサポートされていません。ターゲットプラットフォームに応じて、.ogv ファイルを .mp4 (H.264) または .webm (VP8) にトランスコードします。

キーエンコード値

以下は、エンコードパラメーターで確認するキー値の一部です。

  • ビデオコーデック: H.264H.265VP8

  • 解像度: 例えば 1280 x 720。

  • プロファイル: H.264/H.265 に適用。プロファイルは機能と制約のセットで、多くの場合、Baseline や Main などのベンダーによって指定されます。H.264 または H.265 を参照してください。

  • プロファイルレベル: H.264/H.265 に適用されます。特定のプロファイル内で、レベルはパフォーマンス要件を指定します。例えば、Baseline 3.1。 H.264 または H.265 を参照してください。

  • オーディオコーデック: 通常、AAC (H.264/H.265 を使用する mp4 ビデオ向け)、または Vorbis (VP8 を使用する webm ビデオ向け)。

  • オーディオチャンネル: プラットフォームによって異なります。例えば、Android への推奨はステレオファイルですが、多くのデバイスは 5.1 を受け入れます。

VideoClips のトランスコード

Video Clip Importer には、VideoClip アセットを以下のいずれかのビデオコーデックにトランスコードするオプションがあります。

トランスコードされた VideoClips は適切なオーディオコーデックを自動的に使用します。

  • H.264 または H.265 を使用してエンコードされた AAC ビデオ
  • VP8 を使用してエンコードされたビデオの Vorbis
注意
Video Clip Importer は基本的なトランスコードオプションのみを提供します。ソースファイルのエンコード方法によっては、インポーターオプションを使用してトランスコードしたクリップから最適なパフォーマンスが得られない場合があります。その場合は、外部のトランスコードプログラムを使用すると、より良い結果が得られる場合があります。

外部プログラムを使用した VideoClip のエンコード

ターゲットシステムがサポートしているビデオを使用する場合は、ビデオクリップインポーター のトランスコーディングオプションを無効にしておくことができます。その場合、Unity はファイルをまったく変更せず、そのまま使用します。外部プログラムを使用してエンコードを管理できます。それによって、より細かいコントロールが可能 です。

互換性に関するノート

このセクションでは、ビデオの互換性に関する有用な情報と、外部リソースへのリンクを提供します。

メディアサポートに関するベンダーの推奨事項

コーデックのサポートについては、ベンダーの推奨事項に従うことが重要です。コーデックの選択は、特に古いモバイルプラットフォームでは制限されます。複数のデバイスで実行するゲームに加える予定のビデオを注意深く検査し、変換/再エンコードする必要があるかもしれません。

既知の問題

このセクションでは、特定のプラットフォームの既知の問題について説明します。

Android
  • すべてのデバイスが 640 x 360 を超える解像度をサポートしているわけではありません。ランタイムチェックがこれを検証するために実行され、失敗するとムービーが再生されません。

  • Android Lollipop (5.0 と 5.1.1) 以降では、ターゲットデバイスがそれらをサポートしていれば、任意の解像度または数のオーディオチャンネルを使用できます。

  • 形式の互換性の問題は adb logcat 出力で報告され、常にプレフィックス AndroidVideoMedia が示されます。

  • Unity のエラーメッセージの近くに表示されるデバイス特有のエラーメッセージに注意してください。それらはエンジンでは利用できませんが、しばしば互換性の問題が何であるかを説明します。

  • アセットバンドルからの再生は、圧縮されていないバンドルでのみサポートされ、ディスクから直接読み取られます。

  • ネイティブの webM/VP8 透明度はサポートされていません。透明度を Android で機能させるには、VP8 でエンコードされた webM クリップをトランスコードする必要があります。

WebGL
  • Video Clip Importer は WebGL ゲームビルドには使用されません。Video Player コンポーネントの URL オプションを使用する必要があります。
Windows
  • Windows 7 では、Windows 8 以降よりも解像度が低く制限されています。例えば、その H.264 コーデックは 1980x1088 の解像度に制限されています。詳細はベンダーのドキュメントを参照してください。

H.265 互換性

以下の表は、H.265 コーデックのプラットフォーム固有の要件とエンコード/デコード情報を示しています。

プラットフォーム 要件 エンコード/デコード ノート
OSX SDK 10.13 以降 ハードウェアエンコード: 第 6 世代インテル Core プロセッサー

ソフトウェアエンコード: すべての Mac

ハードウェアエンコード: 第 6 世代インテル Core プロセッサー

ソフトウェアエンコード: すべての Macs
Windows Windows 10 + HEVC 拡張 エンコーダー

デコーダー
HEVC 拡張子 (ハードウェアのみ)

HEVC 拡張子 (ハードウェア + ソフトウェアサポート)
iOS SDK 11.0 以降 ハードウェアデコード: A9 チップ

ソフトウェアのデコード: すべての iOS デバイス
tvOS SDK 11.0 以降
XBox こちら を参照してください
UWP Windows 10 + こちら を参照してください H.265 のサポートが示されている場合、デバイスファミリー内のすべてのデバイスでサポートされているとは限りません。
Android 5.0 以降

  • 2019–05–07 修正されたページ

  • 5.6 の新機能

ビデオソース
ビデオファイルについて