mplayerでDVD-Videoを扱うためのTIPS

Linuxで使える動画アプリmplayerに関するメモです。
Windowsバージョンもあります。詳細はリンクを参照してください。

DVD-Videoを再生する基本コマンド

単にDVD-Videoの再生したい場合

$ mplayer dvd://1

チャプター2から4のみ再生したい場合

$ mplayer dvd://1 -chapter 2-4

タイトル2を再生したい場合

$ mplayer dvd://2

メニューを使用したい場合

$ mplayer dvdnav://1 -mouse-movements                                                           

-mouse-movementsオプションを外した場合はキーボードのみの操作になります。

HDDにバックアップしたDVD-Videoの取り扱い

コピーガードのかかっていないDVD-Videoの場合

$ cp -r /mnt/dvd /path/to/directory
$ ls /path/to/directory
AUDIO_TS/  VIDEO_TS/

のような感じで普通のファイルと同様の手順でHDDにバックアップすることができます。

このバックアップしたファイルをDVD-Videoとして再生したい場合は-dvd-deviceオプションを使って次のようなコマンドを入力します。

$ mplayer dvd://1 -dvd-device /path/to/directory

DVD-Videoの内容をvobに変換

DVD-Videoの内容をvobファイルとしてdumpしたい場合は-dumpstream-dumpfileオプションを使って次のようなコマンドで出力できます。

$ mplayer dvd://1 -dumpstream -dumpfile dump.vob

-dumpstream-chapterオプションと併用できますので、例えばチャプターごとに分割したvobファイルを作成したい場合は

$ mplayer dvd://1 -chapter 1-1 -dumpstream -dumpfile chapter-1.vob
$ mplayer dvd://1 -chapter 2-2 -dumpstream -dumpfile chapter-2.vob

のような感じで出力できます。

ちなみに、収録されているチャプター数とかタイトル数などが不明な場合は-identifyオプションで調べることができます。

$ mplayer dvd://1 -identify

MPlayer homepage
http://www.mplayerhq.hu/

MPlayer & MEncoder Builds for Windows
https://mplayerwin.sourceforge.net/downloads.html

Unityで継承元のStartやUpdateを呼び出す方法

Unityでクラスの継承を利用する場合、単にvoid Start()void Update()と書くと継承元の実装は呼び出されない形になります。

サンプル1

public class Example1 : MonoBehaviour
{
  void Start()
  {
    Debug.Log("Start1");
  }
  void Update()
  {
    Debug.Log("Update1");
  }
}

public class Example2 : Example1
{
  void Start()
  {
    Debug.Log("Start2");
  }
  void Update()
  {
    Debug.Log("Update2");
  }
}

Example2の実行結果

Start2
Update2
Update2
Update2
...

このExample2から継承元Example1StartUpdateを呼び出したい場合はvirtual protectedoverride protectedを使って次のような感じで実装できるみたいです。

サンプル2

public class Example1 : MonoBehaviour
{
  virtual protected void Start()
  {
    Debug.Log("Start1");
  }
  virtual protected void Update()
  {
    Debug.Log("Update1");
  }
}

public class Example2 : Example1
{
  override protected void Start()
  {
    base.Start();
    Debug.Log("Start2");
  }
  override protected void Update()
  {
    base.Update();
    Debug.Log("Update2");
  }
}

Example2の実行結果

Start1
Start2
Update1
Update2
Update1
Update2
Update1
Update2
...

base.を使った継承元メソッドの呼び出しはStartUpdate以外でも使えます。必要な場所で試してみてください。

UnityのWebGLでテキストが表示されない場合の対処方法

Unity Editorのデバッグ画面ではテキストが表示されているのにWebGLでビルドするとテキストが表示されないという場合、Assetにフォントを追加して、そのファイルを使うようにしてみると表示されることがあるみたいです。

困っているという人は試してみてください。

※日本語テキストを表示したい場合は日本語対応のファイルを準備する必要があります。フォント関係はライセンスが複雑な場合もありますので注意してください。

リンク

Unity – Scripting API: Text
https://docs.unity3d.com/2018.4/Documentation/ScriptReference/UI.Text.html