Video Player コンポーネント を使って ビデオファイル を ゲームオブジェクト にアタッチし、ビデオファイルをランタイムにゲームオブジェクトの テクスチャ で再生できます。
下の図は、球状のゲームオブジェクトにアタッチされた Video Player コンポーネントを表示しています。
デフォルトでは、Video Player コンポーネントの Material Property はゲームオブジェクトのメインテクスチャに設定されています。つまり、レンダラーを持つゲームオブジェクトに Video Player コンポーネントをアタッチすると、自動的にそのレンダラーのテクスチャに割り当てられます (なぜなら、これはゲームオブジェクトのメインテクスチャであるため)。ここでは、ゲームオブジェクトに Mesh Renderer コンポーネントが設定されているので、ビデオプレイヤーは自動的にそれを Renderer フィールドに割り当てます。つまり、ビデオクリップは Mesh Renderer のテクスチャで再生されます。
ビデオを再生する特定の対象 (以下を含む) を設定することもできます。
| プロパティ | 説明 | ||
|---|---|---|---|
| Source | ビデオのソースタイプを選択します。 | ||
| Video Clip | Video Player コンポーネントに割り当てる ビデオクリップ を選択します。ウェブプラットフォームではサポートされていません。 | ||
| URL | ビデオプレイヤーに割り当てたいビデオの URL (例: http://、file://) を入力します。 | ||
| Update Mode | Video Player コンポーネントがタイミングの更新に使用するクロックソースを設定します。 | ||
| DSP Time | オーディオ処理と同じクロックソースを使用します。 | ||
| Game Time | ゲームクロックと同じクロックソースを使用します。このクロックソースは、タイムスケーリングとキャプチャフレームレートの設定 の影響を受けます。 | ||
| Unscaled Game Time | ゲームクロックと同じクロックソースを使用しますが、タイムスケーリングとキャプチャフレームレート の影響は受けません。 | ||
| Play On Awake | シーンの起動時にビデオを再生します。ランタイムのほかのタイミングでビデオ再生をトリガーしたい場合には、チェックを外します。スクリプトで Play() コマンドを使用してトリガーします。 |
||
| Wait For First Frame | ゲーム開始前にソースビデオの最初のフレームが表示できる状態になるのを待機します。チェックを外すと、ビデオの時間がゲームの残存量に同期するため、はじめの数フレームが破棄される場合があります。 | ||
| Loop | 終了に到達すると、ソースビデオをループします。チェックを外すと、終了に到達したときにビデオの再生を停止します。 | ||
| Skip On Drop | このオプションを有効にすると、Video Player コンポーネントが再生位置とゲームクロック間にドリフトを検出したときに、ビデオプレイヤーは先にスキップします。このオプションを無効にすると、ビデオプレイヤーはドリフトを補正せず、すべてのフレームを整然と再生します。 | ||
| Playback Speed | 再生スピードの乗数を 0 - 10 の値で設定します。デフォルトでは 1 (通常スピード) に設定されています。このフィールドが 2 に設定されている場合は、ビデオは通常のスピードの 2 倍の速さで再生します。 | ||
| Render Mode | ビデオをレンダリングする方法を選択します。 | ||
| Camera Far Plane | ビデオをカメラの ファークリップ面 にレンダリングします。 | ||
| Camera Near Plane | ビデオをカメラの ニアクリップ面 にレンダリングします。 | ||
| レンダーテクスチャ | ビデオを レンダーテクスチャ にレンダリングします。 | ||
| Material Override | ビデオを、レンダラーの Material を通して選択されたゲームオブジェクトの Texture プロパティにレンダリングします。 | ||
| API Only | ビデオを VideoPlayer.texture スクリプティング API プロパティにレンダリングします。テクスチャを意図する対象に割り当てるには、スクリプトを使用する必要があります。 | ||
| Camera | ビデオを取得する カメラ を選択します。 | ||
| Alpha | ソースビデオに加えられるグローバルな透明度レベルを設定します。これにより、面を透かして面の背後にある要素を表示できます。アルファチャンネルの詳細については、ビデオの透明度のサポート を参照してください。 | ||
| 3D Layout | ソースビデオの 3D コンテンツのレイアウトを選択します。 | ||
| なし | ビデオに 3D コンテンツがありません。 | ||
| Side by Side | ビデオに 3D コンテンツがあり、左目がビデオフレームの左半分、右目が右半分を占めます。 | ||
| Over Under | ビデオに 3D コンテンツがあり、左目がビデオフレームの上半分、右目が下半分を占めます。 | ||
| Target Texture | Video Player コンポーネントが画像をレンダリングするレンダーテクスチャを選択します。 | ||
| Aspect Ratio | 該当する Render Mode が使用されているときに、Camera Near Plane、Camera Far Plane、Render Texture に適用する画像のアスペクト比を設定します。 | ||
| No Scaling | スケーリングを使用しません。ビデオは対象の矩形の中央に配置されます。 | ||
| Fit Vertically | 対象の矩形の縦に一致するようにソースをスケールします。左右はクロップしたり、必要な場合は黒い部分として残します。ソースのアスペクト比は維持されます。 | ||
| Fit Horizontally | 対象の矩形の横に一致するようにソースをスケールします。上下はクロップしたり、必要な場合は黒い部分として残します。ソースのアスペクト比は維持されます。 | ||
| Fit Inside | クロップせずに対象の矩形に一致するようソースをスケールします。左右、または上下は、必要に応じて黒い部分として残します。ソースのアスペクト比は維持されます。 | ||
| Fit Outside | 黒い部分を残さずに対象の矩形に一致するようソースをスケールします。左右、または上下は、必要に応じてクロップします。ソースのアスペクト比は維持されます。 | ||
| Stretch | 対象の矩形に一致するように、ソースを水平/垂直にスケールします。ソースのアスペクト比は維持されません。 | ||
| Renderer | Video Player コンポーネントが画像をレンダリングする レンダラー を選択します。None に設定すると、Video Player コンポーネントと同じゲームオブジェクトの Renderer が使用されます。 | ||
| Auto-Select Property | このオプションを有効にすると、Video Player コンポーネントが レンダラー のメインテクスチャを自動的に選択します。このオプションを無効にすると、Material Property オプションを手動で設定できます。 | ||
| Material Property | Video Player コンポーネントの画像を受け取る Material Texture プロパティ の名。 | ||
| Audio Output Mode | ソースのオーディオトラックを出力する方法を選択します。 | ||
| なし | オーディオは再生されません。 | ||
| オーディオソース | オーディオサンプルが選択した オーディオソース に送信され、Unity のオーディオ処理が適用できるようになります。 | ||
| Direct | オーディオサンプルは Unity のオーディオ処理を経由せず、直接オーディオ出力ハードウェアに送信されます。 | ||
| API Only(Experimental) | オーディオサンプルは、関連する AudioSampleProvider に送信されます。 | ||
| Controlled Tracks | ビデオのオーディオトラック数。 Source が URL の場合にのみ表示されます。Source が Video Clip の場合、トラック数はビデオファイルを調べて決定されます。 |
||
| Track Number | 関連するオーディオトラックを有効にして再生に使用します。再生前に設定する必要があります。 チェックボックスの左側のテキストに、オーディオトラックに関する情報、特にトラック番号、言語、チャンネル数が表示されます。 ソースが URL の場合、この情報は再生中にのみ使用できます。 このプロパティは、ソースがオーディオトラックを持つビデオクリップか、URL (再生中に URL から予想されるトラック数を示すことができる) の場合にのみ表示されます。 |
||
| オーディオソース | オーディオトラックを再生する オーディオソース。ターゲットオーディオソースはオーディオクリップも再生できます。 オーディオソースの再生コントロール (スクリプティング API の Play On Awake と Play()) は、ビデオソースのオーディオトラックには適用されません。このプロパティは、Audio Output Mode が Audio Source に設定されている場合にのみ表示されます。 |
||
| Mute | 関連するオーディオトラックをミュートします。Audio Source モードでは、オーディオソースのコントロールが使用されます。 このプロパティは、Audio Output Mode が Direct に設定されている場合にのみ表示されます。 |
||
| Volume | 関連するオーディオトラックの音量。Audio Source モードでは、オーディオソースの音量が使用されます。 このプロパティは、Audio Output Mode が Direct に設定されている場合にのみ表示されます。 |
||
以下のスクリプトは、Video Player コンポーネントの機能の一部を示しています。
// Examples of Video Player function
using UnityEngine;
public class Example : MonoBehaviour
{
void Start()
{
// Will attach a Video Player to the main camera.
GameObject camera = GameObject.Find("Main Camera");
// VideoPlayer automatically targets the camera backplane when it is added
// to a camera object, no need to change videoPlayer.targetCamera.
var videoPlayer = camera.AddComponent<UnityEngine.Video.VideoPlayer>();
// Play on awake defaults to true. Set it to false to avoid the url set
// below to auto-start playback since we're in Start().
videoPlayer.playOnAwake = false;
// By default, Video Players added to a camera will use the far plane.
// Let's target the near plane instead.
videoPlayer.renderMode = UnityEngine.Video.VideoRenderMode.CameraNearPlane;
// This will cause our Scene to be visible through the video being played.
videoPlayer.targetCameraAlpha = 0.5F;
// Set the video to play. URL supports local absolute or relative paths.
// Here, using absolute.
videoPlayer.url = "/Users/graham/movie.mov";
// Skip the first 100 frames.
videoPlayer.frame = 100;
// Restart from beginning when done.
videoPlayer.isLooping = true;
// Each time we reach the end, we slow down the playback by a factor of 10.
videoPlayer.loopPointReached += EndReached;
// Start playback. This means the Video Player may have to prepare (reserve
// resources, pre-load a few frames, etc.). To better control the delays
// associated with this preparation one can use videoPlayer.Prepare() along with
// its prepareCompleted event.
videoPlayer.Play();
}
void EndReached(UnityEngine.Video.VideoPlayer vp)
{
vp.playbackSpeed = vp.playbackSpeed / 10.0F;
}
}
VideoPlayer