mpeg_encode/mpeg_playのインストール

1999.7.8

1. ソースコードの入手

mpegエンコーダとデコーダ(プレイヤー)が別々になっているのでそれぞれを入手します。 入手先は です。 もちろん、どちらかだけでも構いません。 また、いくつかのOSに関してはバイナリファイルもおいてあります。

2. ソースコードの展開

新たなディレクトリを作って、上記のファイルを移動してから、
  gzip -dc mpeg_encode-1_5b-src_tar.gz | tar xvfp -
  gzip -dc mpeg_play-2.4-patched-src.tar.gz | tar xvfp -
としてソースコードを展開します。
  ANNOUNCE
  COPYRIGHT
というファイルと
  convert/
  mpeg_encode/
  mpeg_play/
というディレクトリができます。

3. mpeg_encodeのインストール

まず、エンコーダをインストールします(順番には意味はありません)。

3.1 準備

  cd mpeg_encode
をして、Makefile とソースファイルの編集を行います。

今回のターゲットマシンはDebian GNU/Linux (Intel版)です。 Makefile には特に変更する箇所はありませんが、 libpnmrw.c を書き換える必要があります。

libpnmrw.c の 129行目

  extern char* sys_errlist[];
  /* extern char* sys_errlist[]; */
とコメントアウトします。

3.2 make

ソースコードの変更が終ったら、
  make clean
  make all
として、コンパイルします。 多少、文句を言ってきますが致命症ではなさそうなので無視することにします。

3.3 テスト

うまくコンパイルできたかテストします。
  make test
とすると、
rm -f /tmp/ts.stat
./mpeg_encode -stat /tmp/ts.stat ./tst/ts.param
Appending statistics to file:  /tmp/ts.stat


MPEG ENCODER STATS (1.5b)
------------------------

・・・中略・・・

======FRAMES READ:  10
csh ./tst/diffscript /tmp/ts.stat ./tst/ts.stat /tmp/ts.mpg ./tst/ts.mpg
SUCCESS.
というメッセージが流れます。 最後に SUCCESS と書いてあるので成功したようです。

3.4 インストール

make install はないので、スーパーユーザになって自分で適当なディレクトリにコピーしてやります。
  su
  mkdir -p /usr/local/bin /usr/local/man/man1
  cp mpeg_encode /usr/local/bin
  cp docs/mpeg_encode.1 /usr/local/man/man1

4. mpeg_playのコンパイル

4.1 準備

mpeg_encodeのコンパイルから続けて行っている人は一度、一般ユーザ戻り、 mpeg_playディレクトリに移ります。
  exit
  cd ../mpeg_play
Makefileの雛型から自分の環境に合ったMakefileを作成します。
  cp Makefile.proto Makefile
  chmod +w Makefile
私の環境(Debian GNU/Linux)では、Makefileの50行目
  CFLAGS        =  -O3 -DNDEBUG -DNONANSI_INCLUDES -DSH_MEM $(INCLUDEDIR)
  # CFLAGS        =  -O3 -DNDEBUG -DNONANSI_INCLUDES -DSH_MEM $(INCLUDEDIR
とコメントアウトし、56行目のコメントをはずしました。
  #CFLAGS       =  -O3 -fomit-frame-pointer -ffast-math -finline-functions  -m486 -DNDEBUG -DNONANSI_INCLUDES -DSH_MEM -DSIG_ONE_PARAM $(INCLUDEDIR) -DDEFAULT_ORDERED_DITHER
  CFLAGS       =  -O3 -fomit-frame-pointer -ffast-math -finline-functions  -m486 -DNDEBUG -DNONANSI_INCLUDES -DSH_MEM -DSIG_ONE_PARAM $(INCLUDEDIR) -DDEFAULT_ORDERED_DITHER
としました。
さらに、 99行目
LIBS          = -L/usr/lib/X11 -lXext -lX11
# LIBS          = -L/usr/lib/X11 -lXext -lX11
とコメントアウトし、代わって、118行目
  #LIBS         =  -L/usr/X11/lib -L/usr/lib/X11 -lXext -lX11
  LIBS         =  -L/usr/X11/lib -L/usr/X11R6/lib -lXext -lX11
と変更しました。
124行目
  DEST          = ~/bin
  DEST          = /usr/local/bin
と変更しました。

4.2 make

  make clean
  make all
として、流れるメッセージを眺めながらしばらく待ちます。

4.3 インストール

スーパーユーザになって
  su
  cp mpeg_play /usr/local/bin
  cp mpeg_play.1 /usr/local/man/man1
とします。

5. 後始末

  mpeg_encode/
  mpeg_play/
というディレクトリの他に
  convert/
というディレクトリができているはずです。 このディレクトリはmpeg_encodeが利用できない画像ファイルを利用できる形式に 変換するためのツールを作成するためのものです。 私はImageMagickやnetpbmをインストール済みなので今回はこのディレクトリは使いませんでした。

コンパイルとインストールが終了したら、上記のディレクトリは不要です。 消して構いません。

  mpeg_encode/docs/users-guide.ps
にマニュアルが用意されています。 目を通しておくと良いでしょう。 しかし、それよりも
  mpeg_encode/docs/param-summary
の方が役に立つかもしれません。
岩瀬康行( iwase@sci.hiroshima-u.ac.jp)