CRIWARE Unity Plugin Manual  Last Updated: 2024-04-24
[CriMana]マルチリンガル再生

サンプル内容

概要

cri4u_samples_crimana_basic08_screenshot.png

ムービのマルチリンガル再生を行うサンプルです。
複数のサブオーディオトラックと字幕チャンネルを持ったデータを利用することでマルチリンガル再生を行っています。
画面右のボタンでサブオーディオトラックと字幕チャンネルの切り替えが可能です。
画面下部には字幕チャンネルに応じた字幕が表示されます。

シーン情報


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


プログラムの解説

CriManaMovieController.player プロパティから取得した CriMana.Player に対して、
サブオーディオトラックと字幕チャンネルの設定を行います。


サブオーディオトラックについて

CriMana.Player.SetSubAudioTrack によってサブオーディオトラックを指定可能です。
ただし、サブオーディオトラックの指定はムービが停止状態のタイミングでのみ可能です。
サンプルコードではムービの再生を停止してからサブオーディオトラックを指定して再度再生しています。
/* call Stop and wait until the player stops */
/* subaudio track can be changed when player-state is "Stop" */
player.Stop();
while (true)
{
if (player.status == CriMana.Player.Status.Stop) break;
yield return null;
}
/* set subaudio track and restart */
player.SetSubAudioTrack(track);
player.Start();

字幕の取得について

字幕情報は CriMana.Player.OnSubtitleChange コールバックを利用することで取得できます。
字幕の内容が切り替わったタイミングでコールバックイベントが呼び出されます。
/* add a listener to observe subtitle changes */
player.OnSubtitleChanged += UpdateSubtitle;
/* method called from player.OnSubtitleChange event */
void UpdateSubtitle(System.IntPtr ptr)
{
text.text = System.Runtime.InteropServices.Marshal.PtrToStringAnsi(ptr);
}
文字列の取得時にはコールバック引数として渡されるポインタ内の字幕情報を文字列へ変換する必要があります。
サンプルコードではデータが持つ字幕情報を UTF-8 であるとして変換を行っていますが、
実際のアプリケーションではデータの持つ文字コードに合わせて適切に文字列への変換を行ってください。
詳しくは サブタイトルムービー をご参照ください。

字幕チャンネルについて

字幕チャンネルは CriMana.Player.SetSubtitleChannel によって指定可能です。
ただし、指定したチャンネルの字幕が得られるのは次回の字幕切替時となります。