« CentOS 5.5 へ kvm を導入-その4 | ホーム | iCloud を利用して自宅の Mac へ SSH する »

2011年5月16日

CentOS で Air Video Server (alpha6) をつくる

iPhone / iPad アプリの Air Video がかなり便利です。いつでもどこでも自宅のビデオをみれるのが最高。どんなアプリなのかは Google で検索してもらうとして、Linux 向けの Air Vide Server がリリースされていたのでインストールしてみました。

Air Vide には新しめの x264 が必要なので、Cenr OS 5系列 なら最新版を持ってきて make します。Cent OS 6 なら rpmforge の x264 が割と新しいんでそのままでいいと思います。

他にも Air Video 向けのパッチのあたった ffmpeg をインストールするので、ffmpeg x264 使っているソフトを利用しているなら、レポジトリでインストールした ffmpeg と x264 は残して、AirVideo Server 用に入れる ffmpeg と x264 は configure --prefix/foobar して make & make install するのがおすすめです。

以下の例では、/opt/airvide/ 配下にインストールしています。かなり変態的な入れ方です(chroot なイメージ)が /usr/ や /usr/local を汚さずに済みます。

必要なライブラリや java を yum (rpmforge)で入れます。

# yum install yasm faac lame lame-devel faad2 faad2-devel SDL SDL-devel java-1.6.0-openjdk

x264 の最新版を git で持ってきて make & make install (CentOS 5.6 の場合)。

# git clone git://git.videolan.org/x264.git
# cd x264
# ./configure  --prefix/opt/airvideo
# make
# make install

次に mpeg4ip を入れます。Air Video Server は mpeg4ip でサーバー上でムービーのエンコードをします。AirVideo クライアントから convert を使ってムービーのエンコードが必要ないなら入れなくてもいいです。Live Conversion は ffmpeg が担当しますのでなくても大丈夫(CentOS 6 だと make 出来ないしね)。

sourceforge からソースをとってきて make & make install。

# tar zxvf mpeg4ip-1.5.0.1.tar.gz
# cd mpeg4ip-1.5.0.1
# export PKG_CONFIG_PATH=/opt/airvideo/lib/pkgconfig
# ./bootstrap
# ./configure  --prefix/opt/airvideo
# make
# make install

AirVideo のサイトから Air Video 向けパッチ済みの ffmpeg をダウンロードして、make & make install。

# wget http://www.inmethod.com/air-video/download/ffmpeg-for-2.4.5-beta6.tar.bz2
# tar jxvf ffmpeg-for-2.4.5-beta6.tar.bz2
# cd ffmpeg
# export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
# ./configure --enable-pthreads --disable-shared --enable-static \
 --enable-gpl --enable-libx264 --enable-libmp3lame \
 --enable-libfaad --disable-decoder=aac \
  --prefix/opt/airvideo
# make
# make install

Air Video Sever 本体と設定ファイルをダウンロード。

mkdir -p /opt/airvideo/server/AirVideo
cd  /opt/airvideo/server/
wget http://inmethod.com/air-video/download/linux/alpha6/AirVideoServerLinux.jar
wget http://inmethod.com/air-video/download/linux/alpha1/test.properties

Air Video の設定ファイルを編集します。

# vi test.properties

Air Video の使うコマンドのパスの指定や、パスワードの設定をします。

server.port = 45631
path.ffmpeg = /opt/airvideo/bin/ffmpeg
#path.mp4creator = /opt/airvideo/bin/mp4creator
path.faac = /usr/bin/faac
password = XXXXX

続いて Air Video で公開するディレクトリも指定。

folders = 公開名:ディレクトリ,公開名:ディレクトリ,

カンマで区切れば複数のディレクトリを公開できます。公開名には2バイト文字は使えません。

Air Vide の起動テスト。

# cd /opt/airvideo/server/
# java -jar ./AirVideoServerLinux.jar test.properties

この状態で AirVide クライントから接続できれば OK。 動いたことが確認できたら、CTRL+C で AirvVideo Server を止めます。

これだと、毎回コマンドプロンプトから AirVideo Server を起動しなければならなくて不便なので daemon 化(厳密には違う)する、rc スクリプトをでっち上げました。

#!/bin/sh
#
# chkconfig: 345 77 01
# description: Air Video is stream videos to iOS. 
# processname: airvideo
# pidfile: /var/run/airvideo.pid
#

# Source function library.
. /etc/init.d/functions
. /etc/sysconfig/network

JAVA=/usr/bin/java
AIRVIDEO_DIR=/opt/airvideo/server
BIN=AirVideoServerLinux.jar
CONF=test.properties
LOG=/var/log/airvideo/airvideo.log
PID_FILE=/var/run/airvideo.pid
LOCKFILE=/var/lock/subsys/airvideo

RETVAL=1

start(){
  echo -n "Starting AirVideo server: "
  if [ -f $LOCKFILE ]; then
    echo $"airvideo service is already running."
    RETVAL=1
  else
    exec $JAVA -jar $AIRVIDEO_DIR/$BIN $AIRVIDEO_DIR/$CONF >> $LOG 2>&1 &
    RETVAL=$?
    touch $LOCKFILE
    ps -ef | grep $CONF | grep -v grep | awk '{print $2}' > $PID_FILE
  fi
  [ $RETVAL = 0 ] && success $"$base startup" || failure $"$base startup"
  echo
  return $RETVAL
}

stop(){
  echo -n "Shutting down AirVideo server: "
  exec ps -ef | grep $CONF | grep -v grep | awk '{print $2}' | xargs kill -9 >/dev/null 2>&1
  RETVAL=$?
  [ $RETVAL = 0 ] && success $"$base shutdown" || failure $"$base shutdown"
  rm -f $LOCKFILE
  rm -f $PID_FILE
  echo
  return $RETVAL
}

case $1 in
  start)
    start
      ;;
  stop)
     stop
      ;;
  restart)
      $0 stop
      $0 start
      ;;
  status)
      status airvideo
      if [ -f $lockfile ]; then
              RETVAL=0
      else
              RETVAL=3
      fi
      ;;
  *)
    echo "Usage: $0 {start|stop|restart|status}"
    RETVAL=1
    #exit 1
    ;;

esac

大変センスのないスクリプトですが、まぁよしとします。
スクリプトファイル冒頭の部分が環境依存の設定なので適時変更してください。

# JAVA 実行バイナリの指定
JAVA=/usr/bin/java
# AirVideo のインストールディレクトリの指定
AIRVIDEO_DIR=/opt/airvideo/server
# AirVideo の実行バイナリの指定
BIN=AirVideoServerLinux.jar
# AirVideo の設定ファイル名の指定
CONF=test.properties
# ログファイルの保存先の指定
LOG=/var/log/airvideo.log

このスクリプトを /etc/ini.d/ 以下に作成し、実行権限を与えて、ブート時に自動起動するように設定します。

# chmod +x /etc/ini.d/airvideo
# chmod airvideo start
Starting AirVideo server:                                  [  OK  ]
# chkconfig airvideo

なお、この rc スクリプトでは AirVideoServerLinux.jar の吐くコンソールメッセージを /var/log/airvide/airvide.log として保存しているので、logrotate でローテートするようにしておきます。

# mkdir /var/log/airvideo
# vi /etc/logrotate.d/airvideo

/var/log/airvideo.log/airvideo.log {
    daily
    missingok
    rotate 30
}

毎日ローテートして、30日分のログを保存します。

アンインストールする場合にはサービス停止して、以下のコマンドでごっそり消せば OK。

# /etc/init.d/airvideo stop
# rm -rf /opt/airvideo /etc/init.d/airvideo /etc/logrotate.d/airvideo /root/.airvideo /var/log/airvideo

トラックバック(0)

トラックバックURL: http://www.talkabout.jp/system/mt-tb.cgi/17

コメントする

このブログ記事について

このページは、Motoki Kusanoが2011年5月16日 17:10に書いたブログ記事です。

ひとつ前のブログ記事は「CentOS 5.5 へ kvm を導入-その4」です。

次のブログ記事は「iCloud を利用して自宅の Mac へ SSH する」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。