地デジ/BS 録画サーバー

今回 話題の PT2 による録画サーバーを Linuxベースで立てることにしました。
マシンは新調して、マザー ASUS P6T、CPU Intel CORE i7-960、グラフィック 玄人思考 RH5450
これに アース電子 PT2、カードリーダー NTT-Com SCR3310 で録画サーバーを仕立てます。
録画だけが目的であればここまでのスペックは必要ないでしょうが

  1. 準備(OSインストール)

    1. Debian leny(5) AMD64 の導入
      ビジネスカードサイズイメージのCDから、ネットワークインストールします。
      ディスク全体を1パーティションでフォーマットし、ソフトウェアの選択では
      ディスクトップ環境、ウェブサーバー、ファイルサーバー、ラップトップ、標準システム を選択します。

    2. その他導入、初期設定

      1. X 画面解像度の設定
        gnome のログイン画面が表示されているようですが、導入直後は 解像度モードがどの様になっているかわかりませんが、
        手元のディスプレイでは表示不可能でした。
        作業は Ctrl + Alt + F1 でテキストコンソールに切り替えて行います。
        ロケールもUTF-8 なので、日本語表示されるメッセージは文字化けします。
        export LANG=C とすることで英語表示されることでメッセージの内容は確認できます。
        では本題、/etc/X11/xorg.conf を編集して解像度を指定します。 ここでは 解像度を 1024x768 にします。 
        Screen セクションに DefaultDepth と、Display サブセクション を追加します。
          Section "Screen"
          	Identifier	"Default Screen"
        	Monitor		"Configured Monitor"
        +	DefaultDepth	24
        +	SubSection "Display"
        +		Depth		24
        +		Modes		"1024x768"
        +	EndSubSection
          EndSection
        

      2. RTCの時間帯設定
        標準導入では RTC にUTCが設定されることになします。 Windowsとのデュアルbootを考慮し、RTCを日本標準時にします。
        /etc/default/rcS を編集して UTC=no にします。 リブートする過程で、BIOS で時計を修正しておきます。

      3. sshの導入
        ネットワーク越しに作業をするために ssh を導入します。導入は apt で行います。
        これは録画とは関係ありません。
        # aptitude install ssh
        

  2. 録画環境の整備
    Debian/GNU/Linux LennyでPT2録画環境構築 を参考に 録画環境を構築します。

    1. 準備作業

      1. パッケージの導入
        参考ページ列挙されているパッケージに加えて make, module-assistant, autoconf, automake を導入します。
        # aptitude install g++ libboost-filesystem-dev libboost-thread-dev libglib2.0-dev libpcsclite-dev libccid libglib2.0-dev libpcsclite-dev libccid pcscd libboost-regex-dev pcsc-tools make module-assistant autoconf automake
        
        module-assistant は /lib/modules/2.6.26-2-amd64/build を準備するための物です。
        パッケージの導入と共に、以下のコマンドで追加のパッケージが導入され、上記のディレクトリーが準備されます。
        # m-a prepare
        
        最新版のrecpt1をコンパイルするのに autoconf, automake が必要でした。

      2. 録画関連ソフトの導入
        次のURLからソースを一式取得します。http://hg.honeyplanet.jp/pt1
        最新のソースは zip のリンクから取得できます。ただし b25 関連のソースが無いので、b25のソースの含まれたものもダウンロードします。
        取得したzipファイルを展開します。
        # cd ~
        # wget http://hg.honeyplanet.jp/pt1/archive/38a793ac3d9d.zip	<== 最新版
        # wget http://hg.honeyplanet.jp/pt1/archive/c44e16dbb0e2.zip	<== b25 のソースが含まれたもの
        # unzip 38a793ac3d9d.zip
        # unzip c44e16dbb0e2.zip
        

      3. ドライバーのコンパイル & 導入
        # cd ~/pt1-38a793ac3d9d/driver
        # make
        # make install
        

        /lib/modules/2.6.26-2-amd64/kernel/drivers/video/pt1_drv.ko が作成されている。
        リブート後、以下のようにPT2を認識していることを確認する。
        # lspci -v | grep pt
            Kernel driver in use: pt1-pci
            Kernel modules: pt1_drv
        

      4. 暗号化解除 & 録画プログラムの準備
        暗号解除プログラムをインストールする。上でダウンロードした旧版のソースをコンパイルする。
        録画プログラムは最新版のソースからコンパイルする。
        # cd ~/pt1-c44e16dbb0e2/arib25
        # make
        # make install
        # cd ~/pt1-38a793ac3d9d/recpt1
        # sh autogen.sh
        # sh ./configure --enable-b25
        # make
        # make install
        

        B-CAS カードを読み取るために 設定ファイルを所定の位置にコピーし、libccid のバージョンを確認して、libccid_Info.plist の内容を修正する。
        # cd ~/pt1-c44e16dbb0e2/b25_docs/
        # cp libccid_Info.plist /etc/libccid_Info.plist
        # ls -l /usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Linux/libccid*
        # vi /etc/libccid_Info.plist
        # /etc/init.d/pcscd restart
        # pcsc_scan
        
        smartcard_list.txt を /usr/share/pcsc/smartcard_list.txt にコピーしていないと pcsc_scan が途中で止まるが、ATR を読めていれば問題ないと思われる

      5. 録画のテスト
        以下のコマンドでテスト録画を行う。 ここでは BS1 を 20秒 録画している。
        # recpt1 --b25 --device /dev/pt1video0 101 20 test.ts
        

    2. 予約録画
      ここからは、Linux地デジ予約録画システムの構築 を参考に作業を進めます。

      1. 前提パッケージの導入

        1. Apacheの確認
          OS導入時に Webサーバー を選択しているので Apache2 は導入されています。確認は以下のとおり。
          # dpkg -l | grep apache
          ii  apache2                              2.2.9-10+lenny7            Apache HTTP Server metapackage
          ii  libapache2-mod-php5                  5.2.6.dfsg.1-1+lenny8      server-side, HTML-embedded scripting languag
          

          足りないものがあれば追加します。

        2. PHPの導入
          # aptitude install php5 php5-cli
          

        3. MySQLの導入 & 初期設定
          OSの導入時の選択で SQLサーバーを選択すると、PostgreSQL が導入されることと、個人的な好みから、PostgreSQL で何とかならないかともがいてみましたが、無駄な努力だったので、MySQL で素直に導入することとしました。
          # aptitude install mysql-server php5-mysql
          

          rootのパスワードを求められるので設定します。
          ┌─────────────────────────┤mysql-server-5.0 を設定しています ├─────┐
          │ 強制ではないですが、MySQL を管理する "root" ユーザのパスワードを設定することを強くお勧めします。 │
          │ 入力が空の場合はパスワードは変更されません。                                                     │
          │                                                                                                  │
          │ MySQL の "root" ユーザに対する新しいパスワード:                                                  │
          │ ********_________________________________________________________________________________________│
          │                                              <了解>                                              │
          └─────────────────────────────────────────────────┘
          
          ┌───┤ mysql-server-5.0 を設定しています  ├┐
          │                                              │
          │ MySQL の "root" ユーザパスワードの再入力:    │
          │ ********____________________________________ │
          │                    <了解>                    │
          └───────────────────────┘
          

          データベース、作業ユーザーの作成を行います。
          # mysql -u root -p
          mysql> create database tvdb;
          Query OK, 1 row affected (0.00 sec)
          
          mysql> show databases;
          +--------------------+
          | Database           |
          +--------------------+
          | information_schema |
          | mysql              |
          | tvdb               |
          +--------------------+
          3 rows in set (0.00 sec)
          
          mysql> grant all privileges on *.* to ユーザ名@localhost identified by 'パスワード';
          mysql> SHOW GRANTS FOR yoneshima@localhost;
          +-------------------------------------------------------------------------------------------------------+
          | Grants for yoneshima@localhost                                                                        |
          +-------------------------------------------------------------------------------------------------------+
          | GRANT ALL PRIVILEGES ON *.* TO 'ユーザ名'@'localhost' IDENTIFIED BY PASSWORD '暗号化されたパスワード' |
          +-------------------------------------------------------------------------------------------------------+
          1 row in set (0.00 sec)
          mysql> flush privileges;
          mysql> exit
          Bye
          

        4. ffmpegの導入
          # aptitude install ffmpeg
          

      2. 予約録画システムの導入
        ここからは、http://www.mda.or.jp/epgrecに従いepgrecを導入します。
        ここでは 2010年3月22日版 を導入します。

        1. epgdumpr2のインストール
          記事に従い build-essential をインストール
          # aptitude install build-essential
          

          追加でインストールされるものはありませんでした。
          epgdumpr2-utf8.tar.gz は 上記ページに添付されているものを使用しました。
          # tar xvzf epgdumpr2-utf8.tar.gz
          # cd epgdumpr2
          # make
          # cp epgdump /usr/local/bin
          

        2. atの設定
          # aptitude install at
          

          特に追加されるパッケージはありませんでした。
          /etc/at.deny の www-data の行は削除が必要です。
          /etc/passwd の確認では www-data ユーザーのログイン シェルは設定されているので変更は不要です。

      3. EPGRecの導入

        1. EPGRecの導入
          # cd /var/www
          # tar xvzpf epgrec-20100322.tar.gz
          

        2. config.phpの設定
          地デジのチャンネルの設定を受信可能なものに修正しました。
          # cd epgrec
          # cp config.php.sample config.php
          # vi config.php
          

          住んでいる地域で受信できる局の物理チャネル番号を「マスプロ電工の相談窓口」などで調べて変更します。

        3. do-record.shの設定
          テンプレートをコピーして稼動を確認します。
          # cp -p do-record.sh.pt1 do-record.sh
          # OUTPUT=/tmp/test.ts CHANNEL=101 DURATION=30 TUNER=0 MODE=0 TYPE=GR ./do-record.sh
          

        4. Apacheの再起動
          # /etc/init.d/apache2 restart
          

        5. 初期設定
          http://ホスト名/epgrec/ にアクセスして 初期設定を行います。
          最初のページは インストール状態の確認画面で問題なければ、リンクを辿って次のページに移ります。
          MySQLの設定では、接続ユーザー名、接続パスワードは MySQL導入で追加した ユーザーの情報を入力します。
          データベース名 も上で追加した ものを指定します。
          LAN上の他のPCからもアクセスしたいので、インストールURLのホスト名を変更します。
          録画保存ディレクトリ は Samba で公開するので、/home/samba/tvrec としました。
          (Sambaの設定関連は後述します)
          その他はデフォルトで 「設定を保存する」 を押します。
          次のページでは、地デジ チューナーの台数、BSチューナーの台数をPT2に合せて それぞれ 2に変更します。
          その他はデフォルトで 「設定を保存する」 を押します。
          EPGの初回受信に関する 説明画面が表示されるので 「このリンクをクリックするとEPGの初回受信が始まります」リンクを 辿って受信を開始します。
          以下のコマンドで どのチャンネルの受信を行っているかを確認できます。
          # while [ 1 ]; do date ; ps -ef | grep recpt1 ; sleep 10; done
          
          
          
          		

        6. 番組情報の定期更新

      4. 録画番組の外からの視聴

        1. sambaの設定
          OS導入時に ファイルサーバーを選択してあると、基本的な Samba の導入が済んでいるので、共有フォルダーの設定を追加します。
          公開用のディレクトリを作成します。 どこでもかまいませんが、私は /home/samba をつくりその下に共有毎のディレクトリーを作っています。
          # cd /home
          # mkdir samba samba/tvrec -m 777
          

          設定は SWAT で行ってもよいのですが、ここでは smb.conf を編集しました。
          /etc/samba/smb.cof の最後に設定を追加します。
          [tvrec]
                  comment = TV Recoder Share
                  path = /home/samba/tvrec
                  read only = No
                  create mask = 0766
                  directory mask = 0777
                  guest ok = Yes
                  browseable = Yes
          

          今回はユーザー管理を回避するので、global セクションの Authentication に以下の定義を追加します。
          #   security = user
             security = share		<== 追加(デフォルトの上書き)
          

          設定ファイル編集したときは、プロセスを再起動し反映します。
          # /etc/init.d/samba restart
          

        2. rootユーザーのパスワード設定

      5. 初期設定 (ネットワーク関連)

        1. rootユーザーのパスワード設定

    3. パッケージのダウンロードと導入

      1. 導入作業

        1. 導入メディアでの起動

      2. 初期設定 (ネットワーク関連)

        1. rootユーザーのパスワード設定