Unity には多くの形式のビデオファイルをインポートできます。Unity はインポートしたビデオファイルを VideoClip アセットとして保存します。
Unity でビデオファイルをプレビューするためには、そのファイルが Unity エディターを実行するプラットフォームと互換性がある必要があります。また、ファイルはターゲットとなるビルドプラットフォームと互換性がある必要もあります。Unity はファイルを一般的にサポートされている形式にトランスコードするオプションを提供しますが、互換性を自身で管理することもできます。詳しくは、後述の ターゲットプラットフォームとの互換性 を参照してください。
ビデオソースファイルは、エディタープラットフォームがサポートする形式を使用する必要があります。各プラットフォームは、異なるビデオファイル形式をサポートします。
| 拡張子 | Windows | macOS | Linux |
|---|---|---|---|
| .asf | ✓ | ||
| .avi | ✓ | ||
| .dv | ✓ | ✓ | |
| .m4v | ✓ | ✓ | |
| .mov | ✓ | ✓ | |
| .mp4 | ✓ | ✓ | |
| .mpg | ✓ | ✓ | |
| .mpeg | ✓ | ✓ | |
| .ogv | ✓ | ✓ | ✓ |
| .vp8 | ✓ | ✓ | ✓ |
| .webm | ✓ | ✓ | ✓ |
| .wmv | ✓ |
ビデオファイルトラックのエンコードには、サポートされているコーデックを使用する必要があります。各プラットフォームは、そのプラットフォームのバージョンごとに変更される可能性がある特定のコーデックをサポートします。
サポートされていないコーデックを使用するビデオファイルからは、エディターでエラーメッセージが表示されます。この場合、互換性のあるコーデックに変換しないと使用できません。
H.264 は、ほとんどのプラットフォームでサポートされている最適なビデオコーデックです。クロスプラットフォームの互換性が最も高いのですが、Linux エディターはこのコーデックをサポートしていません。
Linux の場合、最適なエンコーディングは、以下のコーデックを使用した .webm コンテナです。
コーデックのサポートについては、エディターのプラットフォームの公式ドキュメントを参照してください。Windows と macOS のコーデックの互換性については、以下のリンクを参照してください。
ビデオクリップインポーター は、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
}
Video Player コンポーネントは、エディタープラットフォームのネイティブのオーディオおよびビデオデコーディングライブラリを使用して、エディターでビデオファイルを再生します。また、ファイルがターゲットプラットフォームの要件を満たしていることを確認する必要があります。
ハードウェアアクセラレーションにネイティブでサポートされている最高のビデオコーデックは H.264 です。
VP8 は、クロスプラットフォームサポートを優先する場合に適しています。幅広くサポートされており、包括的な機能セットを備えていますが、H.264 などのハードウェアアクセラレーションコーデックよりも多くのリソースを消費します。
H.265 は、H.265 をサポートするデバイスで使用できます。詳細は、後述の H.265互換性 を参照してください。
Android はネイティブライブラリを使用して VP8 をサポートします。そのため、一部の Android デバイスでは VP8 もハードウェア支援される場合があります。
Unity エディターでは .ogv 形式をサポートしていますが、他のプラットフォームではあまりサポートされていません。ターゲットプラットフォームに応じて、.ogv ファイルを .mp4 (H.264) または .webm (VP8) にトランスコードします。
以下の表は、エンコードパラメーターで確認するキー値の一覧です。
| パラメーター | 説明 |
|---|---|
| Video Codec | H.264、H.265、または VP8。 |
| Resolution | ディスプレイの解像度。 |
| 例: 1280 × 720 | |
| Profile | プロファイルは機能と制約のセットで、多くの場合、Baseline や Main などのベンダーによって指定されます。H.264/H.265 に適用されます。H.264 または H.265 を参照してください。 |
| Profile | H.264/H.265 に適用されます。あるプロファイルの中では、Baseline 3.1 のように、レベルによって性能要件が指定されます。 |
| Audio Codec | AAC (H.264/H.265 を使用する mp4 ビデオの場合) または Vorbis (VP8 を使用する webm ビデオの場合)。 |
| オーディオチャンネル | プラットフォームに依存します。プラットフォームの開発者ガイドを参照してください。例えば、Android のサポートされているメディア形式 に関する記事などです。 |
ビデオクリップインポーター には、VideoClip アセットを以下のいずれかのビデオコーデックにトランスコードするオプションがあります。
トランスコードされた VideoClips は適切なオーディオコーデックを自動的に使用します。
ノート: ビデオクリップインポーター には、基本的なトランスコードオプションのみが用意されています。ソースファイルのエンコード方法によっては、インポーターオプションを使用してトランスコードしたクリップから最適なパフォーマンスが得られない場合があります。その場合は、外部のトランスコードプログラムを使用すると、より良い結果が得られる場合があります。
ターゲットシステムで確実にサポートされているビデオを使用する場合は、ビデオクリップインポーターの トランスコードオプションを無効にすることができます。無効にすると、Unity はファイルを変更しません。エンコードは外部プログラムで管理でき、より細かい制御が可能になります。
このセクションでは、ビデオの互換性に関する有用な情報と、外部リソースへのリンクを提供します。
コーデックのサポートについては、ベンダーの推奨事項に従ってください。古いモバイルプラットフォームで、コーデックの選択が制限されます。複数のデバイスで実行するゲームに加える予定のビデオに対しては注意深く検査し、変換/再エンコードする必要があるかもしれません。
以下の表は、H.265 コーデックのプラットフォーム固有の要件と情報を示しています。
| プラットフォーム | 要件 | エンコード/デコード | ノート | |
|---|---|---|---|---|
| macOS | SDK 10.13+ |
ハードウェアエンコード:第 6 世代 Intel Core プロセッサー ソフトウェアエンコード:すべての Mac ハードウェアデコード:第 6 世代 Intel Core プロセッサー ソフトウェアデコード:すべての Mac |
||
| Windows | Windows 10 + HEVC 拡張機能 |
エンコーダー デコーダー |
HEVC 拡張機能 (ハードウェアのみ) HEVC 拡張機能 (ハードウェア + ソフトウェアサポート) |
|
| iOS | SDK 11.0+ |
ハードウェアデコード:A9 チップ ソフトウェアデコード:すべての iOS デバイス |
||
| tvOS | SDK 11.0+ | |||
| UWP | Windows 10+ | |||
| あるデバイスのリストに H.265 をサポートしていると記載されていても、それがデバイスファミリー内のすべてのデバイスに適用されるとは限りません。 | ||||
| Android | 5.0+ | |||
2019–05–07
Unity 5.6 の新機能