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) にトランスコードします。
以下は、エンコードパラメーターで確認するキー値の一部です。
解像度: 例えば 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 を受け入れます。
Video Clip Importer には、VideoClip アセットを以下のいずれかのビデオコーデックにトランスコードするオプションがあります。
トランスコードされた VideoClips は適切なオーディオコーデックを自動的に使用します。
注意 |
---|
Video Clip Importer は基本的なトランスコードオプションのみを提供します。ソースファイルのエンコード方法によっては、インポーターオプションを使用してトランスコードしたクリップから最適なパフォーマンスが得られない場合があります。その場合は、外部のトランスコードプログラムを使用すると、より良い結果が得られる場合があります。 |
ターゲットシステムがサポートしているビデオを使用する場合は、ビデオクリップインポーター のトランスコーディングオプションを無効にしておくことができます。その場合、Unity はファイルをまったく変更せず、そのまま使用します。外部プログラムを使用してエンコードを管理できます。それによって、より細かいコントロールが可能 です。
このセクションでは、ビデオの互換性に関する有用な情報と、外部リソースへのリンクを提供します。
コーデックのサポートについては、ベンダーの推奨事項に従うことが重要です。コーデックの選択は、特に古いモバイルプラットフォームでは制限されます。複数のデバイスで実行するゲームに加える予定のビデオを注意深く検査し、変換/再エンコードする必要があるかもしれません。
このセクションでは、特定のプラットフォームの既知の問題について説明します。
すべてのデバイスが 640 x 360 を超える解像度をサポートしているわけではありません。ランタイムチェックがこれを検証するために実行され、失敗するとムービーが再生されません。
Android Lollipop (5.0 と 5.1.1) 以降では、ターゲットデバイスがそれらをサポートしていれば、任意の解像度または数のオーディオチャンネルを使用できます。
形式の互換性の問題は adb logcat
出力で報告され、常にプレフィックス AndroidVideoMedia
が示されます。
Unity のエラーメッセージの近くに表示されるデバイス特有のエラーメッセージに注意してください。それらはエンジンでは利用できませんが、しばしば互換性の問題が何であるかを説明します。
アセットバンドルからの再生は、圧縮されていないバンドルでのみサポートされ、ディスクから直接読み取られます。
ネイティブの webM/VP8 透明度はサポートされていません。透明度を Android で機能させるには、VP8 でエンコードされた webM クリップをトランスコードする必要があります。
以下の表は、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 の新機能
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.