CRIWARE Unity Plugin Manual  Last Updated: 2024-12-05
[CriMana]シームレス連結再生

サンプル内容

概要

cri4u_samples_crimana_scene06_screenshot.png

複数のムービファイルを途切れ目無く連続して再生するサンプルです。この機能のことを「シームレス連結再生」と呼びます。
本サンプルでは、7つのムービファイルを任意の順番でシームレス連結再生します。
Unity Editor上で配置したCriManaMovieControllerコンポーネントに対し、ユーザ操作に応じてランタイムスクリプトからシームレス連結再生を 行っています。
次の手順で画面のボタンを操作してシームレス連結再生を行います。
  1. 連結する順番に数字ボタンを押すと、番号に対応するムービをシームレス連結再生のキューに追加します。
  2. 1つ以上のムービを登録すると[Play]ボタンが有効になります。[Play]ボタンを押して再生を開始します。
  3. 再生中にも、数字ボタンを押すとムービをシームレス連結再生のキューに追加できます。
  4. 登録したすべてのムービの連結再生が終わると、再生はPLAYEND状態になります。
  5. [Stop]ボタンを押すと再生を停止して、サンプル初期状態に戻ります。

シーン情報


ミドルウェア CRI Sofdec (CRI Mana)
サンプル Basicサンプル
格納場所 /cri/unity/samples/UnityProject/Assets/Scenes/crimana/basic/
シーンファイル Scene_06_SeamlessSequencePlayback.unity


プログラムの解説


ランタイムスクリプトを使って、 7ファイルに分割されたムービを任意の順番でシームレス連結再生を行うサンプルプログラムです。
シームレス連結再生のムービの追加は、ランタイムスクリプトからCriManaMovieControllerコンポーネントのAPIを利用して行います。
このサンプルでは、コンポーネントの追加自体はUnity Editor上で事前に行っています。

シームレス連結再生のムービの追加について

シームレス連結再生を行うには、 CriManaMovieController::SetFile 、 CriManaMovieController::SetContentId 、 CriManaMovieController::SetFileRange 関数で再生するムービを指定する際に、 CriManaMovieController.SetMode.Append を引数に渡します。

/* If the number of entries in the plug-in is insufficient, it returns false. */
bool set_result = movieController.player.SetFile(null, contentsList[i], CriMana.Player.SetMode.Append);

ムービ登録数の上限について

一度にCriManaMovieControllerに登録できるファイル数の上限は CRIWARE Library Initializer の Mana Config にある Number of Max Entries で指定できます。デフォルト値は4となっています。
なお「登録数の上限」は一度に登録して「読み込み待ち」にできるファイル数という意味です。 シームレス連結再生が始まると、読み込み終わったムービファイルは「登録ファイル」から自動的に除去されます。 例えば上限8個で、8ファイル登録して再生を開始した場合でも、再生が進んだ後であればファイルの追加登録が可能です。
CriManaMovieControllerに現在登録されているファイル数は CriManaMovieController::numberOfEntries で取得できます。

登録したファイルのクリアについて

一度登録したムービファイルを取り消すことは出来ません。 CriManaMovieController::Stop を呼び出すと、それまでに登録したファイルはクリアされます。

再生中のムービ追加について

再生中にもムービファイルの登録が可能です。 ただし登録を受け付けるのは、その再生がまだ「ムービファイルの読み込み中」の期間に限られます。 そのため、再生終了間際にファイルを登録しても失敗する場合があります。

ムービの切り替わりタイミングの取得方法

現在再生しているムービが登録したムービリストの何番目なのかは、CriManaMovieController::FrameInfo構造体のcnt_concatenated_movieメンバで把握できます。再生中のムービが切り替わったかどうかの判定はこの値を参照してください。

シームレス連結再生できるムービの条件について

シームレス連結再生のためには、連結再生するムービデータの仕様が一致しなければいけません。 具体的には次の仕様です。
  • ビデオの解像度、フレームレート、コーデックが全て同じ
  • アルファ情報の有無が一致
  • 音声トラックの構成(トラック番号および各チャンネル数)、コーデックが全て同じ
また、シーク再生についてはシームレス連結再生の1つめのムービ内についてのみ指定可能です。 2個目のムービにいきなりシークすることは出来ません。

Advanecdサンプル「複数プレーヤによる動的ムービ切替」との違いについて

本サンプルは複数のムービファイルを「シームレスに連続で」再生するものです。 再生途中で別のムービに切り替える場合は Advanecdサンプルの 「複数プレーヤによる動的ムービ切替」 を参照してください。