Ubuntu で録画用サーバの構築

興味本位の個人的な実験です。
内容の真偽等に関して問われても知りません。
環境は Ubuntu 10.10 Desktop Edition (日本語 Remix) on Atom (D525MW)。
カードリーダは SCR3310-NTTCom。

作業の前に

色々あって、マザーボードBIOS を 0.74 に更新しておきました。
色々あったんだよ、色々。。

PCI の確認

lspci | grep Multimedia

を実行。これで何も出ない場合は、デバイスを認識できていない可能性が高い。
私の環境では最初何も出なくて、確認してみたら上手く挿さっていなかった。。

以降、PCやサービスの再起動は明示しないが、ドライバインストール後など随所で再起動のこと。

ドライバのインストール

準備
sudo aptitude -y install build-essential linux-headers-`uname -r`
ドライバのダウンロード

ここからダウンロード。
リポジトリなので、たぶん最新のものがダウンロードできるはず。
執筆時点では pt1-7662d0ecd74b.tar.bz2。
以下、これを解凍したディレクトリを $TIP_DIR で表す。

コンパイルとインストール
cd ${TIP_DIR}/driver
make
sudo make install

カードリーダ

準備
sudo aptitude -y install libccid pcsc-tools
確認
pcsc_scan

録画用意

準備
sudo aptitude -y install autoconf libpcsclite-dev
DRV 無効化

Ubuntu 10.10 デフォルトの DRV が録画用プログラムと競合するそうなので、無効化。

/etc/modprobe.d/blacklist.conf

を編集して、末尾に

blacklist earth-pt1

と追記。

ARIB STD-B25 仕様確認テストプログラム

最新のリビジョンには付属していないので、
ここから古いファイルをもらってくる。

cd pt1-c44e16dbb0e2/arib25
make
sudo make install
録画テスト用プログラム
cd ${TIP_DIR}/recpt1
./autogen.sh
./configure --enable-b25
make
sudo make install

録画テスト

準備
sudo aptitude -y install vlc
録画
recpt1 --b25 --strip 27 5 test.ts
再生
vlc test.ts

録画サーバの構築

EPGrecというものを使うことにする。
ここを参考に。

apache のインストール
sudo aptitude -y install apache2
apache の設定
  • /etc/apache2/conf.d/security
    • ServerTokens Minimal (どうせ ServerSignature Off だから意味ないけど)
    • ServerSignature Off
  • /etc/apache2/sites-available/default
    • $DOCROOT
      • Options Indexes を -Indexes に
      • AllowOverride All
      • Order deny,allow
      • Deny from all
      • Allow from 127.0.0.0/255.0.0.0 ::1/128
    • /doc/
      • Indexes を -Indexes に
  • /etc/apache2/conf.d/epgrec.conf
<Directory ${DOCROOT}/epgrec>
  Order deny,allow
  Deny from all
  Allow from 127.0.0.0/255.0.0.0 ::1/128
  Allow from <録画を行うクライアント>
</Directory>
MySQL のインストール
sudo aptitude -y install mysql-client mysql-server
MySQL の設定
$ mysql -u root -p mysql
mysql> CREATE DATABASE epgrec DEFAULT CHARACTER SET utf8;
mysql> GRANT ALL PRIVILEGES ON epgrec.* TO epgrec@localhost IDENTIFIED BY '****';
epgdump

参考ページの「インストール前の準備」から、
epgdumpr2-utf8.tar.gz をもらってきてインストール。

make
sudo install -m 0755 epgdump /usr/local/bin
epgrec

SourceForgeからダウンロード。
執筆時点での最新版は epgrec-20100322.tar.gz。

今回は /home パーティションにほとんどすべての容量を割り当てているので、/home パーティション以下に解凍し、${DOCROOT}/epgrec に bind する。
epgrec の解凍先を $EPGREC_DIR と書くことにすると、

mount --bind $EPGREC_DIR ${DOCROOT}/epgrec

/etc/fstab に

$EPGREC_DIR  ${DOCROOT}/epgrec  none  bind  0  0

と書いておくと良い。

at の設定

/etc/at.deny から www-data を削除。

MediaTomb の設定

結論から先に述べると、結構面倒なので、当面は PMS を使います。

MediaTomb のインストール

普通は

sudo aptitude -y install mediatomb

でOK。
BRAVIA を使いたい場合は、
公式からソースをもらってきて解凍した後、
ここからパッチをもらってきて、

cd mediatomb-0.12.1
patch -p0 < mediatomb-0_12_1_bravia_support_0_1_patch.txt

あとは普通に make するだけだが、コンパイルのために

sudo aptitude -y install libmysqlclient-dev libexpat-dev

が最低限必要。
ここまでやってようやくコンパイルが可能に。
詳しいことはここを参照。

設定ファイルを作るのが面倒なので、後者の場合も先に一度 aptitude でインストールしておくと良いかも?

MySQL データベース作成
$ mysql -u root -p mysql
mysql> CREATE DATABASE mediatomb;
mysql> GRANT ALL PRIVILEGES ON mediatomb.* TO mediatomb@localhost IDENTIFIED BY '****';
/etc/mediatomb/config.xml
<sqlite3 enabled="no">
...
<mysql enabled="yes">
 ...
 <password>****</password>
...
<protocolInfo extend="yes"/> ## PS3 はないけど。。
...
<import hidden-files="no">
 <filesystem-charset>UTF-8</filesystem-charset>
 <metadata-charset>CP932</metadata-charset>
 ...
 <map from="avi" to="video/divx"/> ## やっぱり PS3 はないけど。。
 <map from="avi" to="video/divx"/>
 <map from="jpg" to="image/jpeg"/>
 <map from="jpeg" to="image/jpeg"/>
 <map from="gif" to="image/gif"/>
 <map from="png" to="image/png"/>
 <map from="m4v" to="video/mp4"/>
 <map from="mp4" to="video/mp4"/>
 <map from="mpg" to="video/mpeg"/>
 <map from="mpeg" to="video/mpeg"/>
 <map from="m2t" to="video/mpeg"/>
 <map from="m2ts" to="video/mpeg"/>
 ...
BRAVIA が認識しないぞ!ってとき

とりあえず UbuntuBRAVIA の両方を有線 LAN で繋いでみよう。
というのも、無線の設定次第でははまる可能性があるため。
私は無線の隔離機能を ON にしていることをすっかり忘れていて、Ubuntu を無線で BRAVIA を有線で繋いで難儀していたのです。
これのために4時間くらい無駄にした。。

PS3 Media Server (PMS) の設定

MediaTomb の代替。なかなか良さげ。

準備

sudo aptitude -y install ffmpeg mplayer

インストール

ここからプログラムをもらってきて、/usr/local/pms とかに解凍。
念のためhttp://2sen.dip.jp/dtv/から pms avcmod plus とかももらってきて、同ディレクトリに解凍しておいた。

使い方
cd $PMS_DIR
sudo ./PMS.sh
設定

GUI から設定を行う。
「表示/共有設定」の共有フォルダに ${DOCROOT}/epgrec/video を追記して、上の保存を選ぶ。

EPGrec の設定

準備
sudo aptitude -y install php5 php5-mysql

オプショナルで

sudo aptitude -y install ffmpeg

ついでに色々編集するのにシンタックスハイライトが使えると便利なので、vim をインストールしておいた。

sudo aptitude -y install vim
config.php

$EPGREC_DIR 内の config.php.sample を config.php という名前でコピー。
マスプロ電工の相談窓口を見ながらチャンネルマップ ($GR_CHANNEL_MAP) を適切に編集。

do-record.sh

$EPGREC_DIR 内の do-record.sh.pt1 を do-record.sh という名前でコピーして、

OUTPUT=test.ts CHANNEL=27 DURATION=5 TUNER=0 MODE=0 TYPE=GR ${EPGREC_DIR}/do-record.sh

でテスト。

初期設定

http://localhost/epgrec/ にアクセス。
エラーがなければ次に進む。

MySQL 設定
  • ホスト名: localhost
  • 接続ユーザ名: epgrec
  • データベース名: epgrec
インストール関連設定

インストール URL を localhost から LAN 内固定 IP に変更。
興味本位でサムネールを使用する設定に。

デジタルチューナー設定
  • 地デジチューナーの台数: 2
  • BSチューナーの台数: 2
  • 連続した番組の予約: 行う

この画面 (step3.php) が真っ白で表示されない場合、php5-mysql がインストールされていない可能性が高い。
インストールしていてもダメな場合には、apache の再起動などを行ってみること。

cron の設定
sudo cp ${EPGREC_DIR}/cron.d/getepg /etc/cron.d/

そんなに頻繁に取得する必要もないので、4 時間おきくらいに設定を変更しておく。

もしものときの手動EPG受信
/var/www/epgrec/getepg.php