2010年9月20日月曜日

Air VideoのLinux鯖を立ててみた。

iPhoneとかiPod touchでどこでも動画が見たい!けど変換面倒!
とかいう人はAir Videoおすすめらしいです。友達に進められて友達の鯖で試させてもらったところ、かなりきれいに視聴することができた。Live Convertionってのにも対応してて、対応してない方式の動画をリアルタイムでエンコードしてくれます。
まぁiPod touchの場合はWiFiしかないのでどこでもってわけにはいかないけどね。
あーPocketWiFiとかほしいな

しかーし
サーバーソフトはWindowsとMacにしか対応してなくて、Linuxでホームサーバー立ててる人とかは使えないんですよね。

でも少々大変ではあるけどLinux版あった!

というわけで友人のAtomのNASに組み込んでみた。
このNASについてはここら辺の下のほう参照

OSにはDebian Lenny 5を使ってるのでDebian用に話を進めたいと思います。
Linuxはそんなに詳しくないのであってるかわかりませんが、一応これで動いたということでw

必要なもの
・FFMPEG これはパッチを当てないといけないから自分でコンパイル
・openjdk-6-jdk
・mpeg4ip-server この中に含まれるmp4creatorに必要
・faac


とりあえずapt-getで手に入るのはすごく簡単。
mpeg4ip-serverを探すのが大変だったぜ…

まずはx264のアップデートから。
もしインストールしてる人は
apt-get remove x264 libx264-dev
で消しておく。

インストール
git clone git://git.videolan.org/x264.git
cd x264
./configure
make
checkinstall --fstrans=no --install=yes --pkgname=x264 --pkgversion "1:0.svn`date +%Y%m%d`-0.0ubuntu1" --backup=no --default

次にDebian Multimedia Packagesを追加
wget http://www.debian-multimedia.org/pool/main/d/debian-multimedia-keyring/debian-multimedia-keyring_2008.10.16_all.deb
sudo dpkg -i debian-multimedia-keyring_2008.10.16_all.deb
rm debian-multimedia-keyring_2008.10.16_all.deb

次はFFMPEGのインストール
apt-get install libmp3lame-dev install libfaad-dev git-core pkg-config

ここでlibmp3lame-devが見つからなかったので手動でインストールしたw
そういえばレポジトリ追加すればよかったのかな?

気を取り直してFFMEPGのソースをゲット

wget http://www.inmethod.com/air-video/download/ffmpeg-for-2.2.5.tar.bz2
tar xvfj ffmpeg-for-2.2.5.tar.bz2
cd ffmpeg-for-2.2.5
./configure --enable-pthreads --disable-shared --enable-static --enable-gpl --enable-libx264 --enable-libmp3lame --enable-libfaad --disable-decoder=aac
make

次にJAVAをインストール
apt-get install openjdk-6-jdk

そして最後にmpeg4ip-serverをインストール。
これが探すの大変だったわー
apt-get install mpeg4ip-serverで見つからなかったので
レポジトリを追加してみた。
/etc/apt/sources.listを開いて
deb http://www.debian-multimedia.org lenny main non-free
という行を追加。

apt-get update
apt-get install mpeg4ip-server
でインストールきた!

あとはfaacをインストール
apt-get install faac

これで全部そろった。

Linux版Air Video用のディレクトリを適当なところに作って
Air Video Server Linux版をダウンロードしてきて入れる。
次に設定ファイルの作成


path.ffmpeg = /usr/local/bin/ffmpeg
path.mp4creator = /usr/bin/mp4creator
path.faac = /usr/bin/faac
password = ここにパスワード
subtitles.encoding = windows-1250"
subtitles.font = Verdana
folders = Movies:/動画のディレクトリへのフルパス

これを自分の環境に合わせて書き換えてtest.propertiesっていうファイルで同じディレクトリに保存。



そういえばより細かく設定したいときのフォルダ設定のパラメーターはこんな感じ。

folders = クライアントに表示させたいフォルダ名:動画フォルダのフルパス

これをカンマで区切ってたくさん追加できるらしい


folders = Movies:/mnt/sda2/Movie,TV:/mnt/sda2/TV

この場合Air VideoクライアントのMovieをタップすると/mnt/sda2/Movieの中身が見れる。
日本語使えるのかは試してないw

Linux版サーバーの準備はOK。あとは起動するだけ。

java -jar AirVideoServerLinux.jar test.properties

でサーバーを起動することができるはず。
使用するポートはTCPの45631らしい



次はiPhoneやiPod touchに登録。

Air Videoを起動して(無料版だとリストに表示される動画の数に制限がある)
左上の+ボタンを押して
Specify Address Manuallyを選択。
Locationに自鯖のIPまたはDDNSのアドレスを入れる。DDNSとっておいたほうが便利。
ポートはそのまま。
Saveを押すと保存される。

あとは登録したサーバーを選択するとパスワード入力画面になるので設定ファイルで設定したパスワードを入力すると入れる。

あとは動画を選択するとこのような画面になって
Playだとそのまま再生される。Play with Live Conversionだとエンコードしながら再生される。
なぜかフルHDの動画もLive Conversionなしで再生できる不思議。ちなみにiPod touch 4G使用。

Live ConversionはAtom D410ではちょっと重い。途中で再生が止まるぞ…
普通のPlayなら全然問題ないw

というわけでエンコードのBitrateの設定を変えてみた
Play with Live Conversionの二つ下にあるConversion Settingsを開いて
右上のGlobal Convertion Settingsを開く。(設定画面が奥まりすぎだろこのアプリ…)
Allowed Bitratesのところを変更。今はRemote WiFiなのでそこの384kbit/sのチェックを外して
256kbit/sにチェックを入れてみた。
これでPlay witi Live Conversionからスムーズに再生できるようになった
これは通常回線速度などによって変更する項目なんだけどこの場合CPUがAtomだし…
おそらくLocal WiFiでも同じように設定しないととてもじゃないけどエンコードが追い付かないだろうw
地デジのTSファイルをLive Conversionで見るとワンセグ並みになります!

MP4ファイルをそのままPlayするとすごくきれいなのにねぇ
やっぱり高画質エンコードしながらストリーミングはきついようです。


Convertっていうのはサーバー側で変換して保存してくれる。キューにも追加できるので順序にエンコードさせることも可能。これでAtomでも夜通し動画を変換してくれるぞ!
時間がかかるけど低消費電力w
ここでの画質もさっきBitrateを指定した画面の上のほうでできます。
動画ファイルに音声が複数含まれてる場合(日本語と英語が切り替えられたりする動画ファイル)だとConversion Settingから言語を選ぶことも可能みたい。


このアプリ便利だわー。

3 件のコメント:

  1. > apt-get libmp3lame-dev install libfaad-dev git-core pkg-config

    こうじゃないですかね…?w
    apt-get install libmp3lame-dev libfaad-dev git-core pkg-config

    返信削除
  2. ご指摘ありがとうございます。
    修正しておきました

    返信削除
  3. 素晴しいです、大変参考になりました。
    Debian6 squeezeでも動きました。
    Squeezeでは、aptでmpeg4ip-serverがみつからなかったので、/etc/apt/sources.list に以下追加
    deb http://www.debian-multimedia.org squeeze main non-free
    apt-get update
    apt-get install mpeg4ip*
    としました。

    返信削除

Related Post

ESP-WROOM-32の簡易開発ボードを買ってみた

ちょっと前にESP-WROOM-32とピッチ変換基板を買っていたんだけど、 PCに繋いでプログラム書き込んだりなんだりするのが面倒なのでシリアル変換アダプタ付きのピッチ変換基板を買ってみた。 ebayでそこそこ安かったやつを選択。450円ぐらいだった。 シリアル...