ubuntu/TV録画

TV録画

UbuntuでのTV録画の設定メモです
使用機器:PLEXTOR PX-TV402U

ドライバの設定(9.04)

kernel 2.6.27になり前バージョンのドライバはビルドで失敗してしまうようになりました。幸いなことに海外モデルを使われている開発者さまがいらっしゃるようで、対応のドライバがありました。go7007.imploder.org

  • インストール
    $wget http://go7007.imploder.org/wp-content/uploads/2009/02/wis-go7007-linux-098-4tar.bz2
    $ mv wis-go7007-linux-098-4tar.bz2 wis-go7007-linux-098-4.tar.bz2
    $ tar jxvf wis-go7007-linux-098-4.tar.bz2
    $ cd wis-go7007-linux-098-4
    $ make
    $ sudo make install

Mythtvのインストール

  • パッケージのインストール
    $ sudo apt-get update
    $ sudo apt-get install mythtv mythtv-themes
    • パスワードの変更
      パッケージのインストール途中でパスワードを変更するなら云々というメッセージがでるので,インストール後の以下のコマンドでパスワードを変更する.

      $ sudo dpkg-reconfigure mythtv-common
    • mysqlの設定変更
      /etc/mysql/my.cnfを編集して,以下のbind-addressの行をコメントアウトする.

      #bind-address           = 127.0.0.1

      mysqlを再起動する.

      # /etc/init.d/mysql restart
  • xmltvの設定
    • xmltvのインストール
      $ sudo apt-get install libtext-kakasi-perl xmltv
    • ビデオソースの設定
      $ tv_grab_jp --configure

      TV局は地域を選択してから,各局の追加の有無を選択する.
      CSは地域でCATV(47)を選択し,4桁に1000と入力しそこから地道にYes/Noを選択していく.

  • mythtvバックエンドの設定
    オモイノホカ日々徒然を参考に設定していく
    ビデオソース設定でうまくDBに接続ができないようなので,DBの権限を再設定する.

    $ mysql -u root -p
    password:<パスワードを入力>
    mysql> grant all on mythconverg.* to mythtv@"localhost" identified by "mythtv";
    mysql> flush privileges;
    mysql> quit

    再度mythtv-setupを実行すると,途中でコンソール画面になりチャンネルの選択画面になる.

    • 番組表を取得する.
      # mythfilldatabase

      すこし時間がかかる.

      # mythfilldatabase --manual --refresh-all --max-days 1

      個別に質問をされるので,チャンネル番号を入力する.

    • 入力とソースの接続
      先ほど設定したビデオソースをTelevisionと関連づける.
  • TV放送とANIMAXの併用
    アナログ入力からはTV放送を,combositeからはCSチューナー出力を入れANIMAXを録画するようします.
    ビデオソースでTV放送用とANIMAX用を別々に作成する.
    入力とソースの接続で,「Television」にTV放送のビデオソースを関連づけ,「combosite」にANIMAXのビデオソースを関連づける.
    しかし,このままだとTV放送は録画できたが,ANIMAXの放送がうまくいかない.

    • ANIMAXを録画したときのlog
      2007-08-04 00:46:05.342 Channel::GetCurrentChannelNum(0): Failed to find Channel '0'
      2007-08-04 00:46:05.342 Channel(/dev/video0)::TuneTo(0): Error, failed to find channel.
      2007-08-04 00:46:05.342 TVRec(4) Error: Failed to set channel to 0. Reverting to kState_None
      2007-08-04 00:46:05.342 TVRec(4): Changing from RecordingOnly to None
      2007-08-04 00:46:05.345 Canceled recording (Recorder Failed): 0 (724ch) "?  8? 4 00:46:00 2007": channel 2000 on cardid 4, sourceid 2
      2007-08-04 00:46:06.305 MainServer::HandleAnnounce Monitor
      2007-08-04 00:46:06.305 adding: cululu as a client (events: 0)
      2007-08-04 00:46:07.728 MainServer::HandleAnnounce Monitor
      2007-08-04 00:46:07.728 adding: cululu as a client (events: 0)
      2007-08-04 00:46:07.755 Reschedule requested for id 31.
      2007-08-04 00:46:07.779 Scheduled 1 items in 0.0 = 0.02 match + 0.01 place
      2007-08-04 00:46:08.407 Error deleting '/home/mythtv/2000_20070804004600.nuv': No such file or directory

      似たようなエラーの回避がmythtv-usersに投稿されていた.参考にして「入力とソースの接続」-「/dev/video0(combosite)」のページの「外部チャンネル変更コマンド」に「/bin/true」と入力する.すると録画がうまくできるようになりました.

  • mythfrontend
    mythfrontendを起動して,録画のプロファイルで画像サイズの設定などを行い,実際に録画予約する.うまくいけばメディアライブラリに録画がたまる.

mythwebのインストール

  • パッケージのインストール
    # apt-get install mythweb
  • 設定
    apacheのdefault rootのパスを変更しているので,シンボリックリンクの作りなおす.

    # cd /htmldir
    # ln -s /usr/share/mythtv/mythweb .

    apacheのユーザも変更してあるので,ファイルの所有者も変更する.

    # chown -R apache:apache /usr/share/mythtv/mythweb
    # chown -R apache:apache /var/cache/mythweb/image_cache

    apacheの設定ファイル(/etc/apache2/sites-available/default)に下記を追加する.

    <Directory "/htmldir/mythweb">
      Otions         FollowSymLinks
      AllowOverride   All
    </Directory>

    apacheを再起動して,http://127.0.0.1/mythwebにアクセスしてみる.

  • パスワード認証を追加する
    • パスワードファイルを作成する.
      # htpasswd -c /etc/apache2/httpd-passwords USER1
    • パスワードファイルのアクセスを制限する.
      # chmod 640 /etc/apache2/httpd-passwords
      # chown apache:apache /etc/apache2/httpd-passwords
    • apacheの設定ファイル(/etc/apache2/sites-available/default)を変更する.
       <Directory "/htmldir/mythweb">
         Options         Indexes FollowSymLinks
         AuthType Basic
         AuthName "MythTV"
         AuthUserFile /etc/apache2/httpd-passwords
         require user USER1
         Order allow,deny
         AllowOverride   All
      </Directory>

      apacheを再起動してmythwebのページにアクセスするとユーザ名とパスワードを問われる.

mythwebがモバイル用から戻らない

一度Advanced W-ZERO3からMythwebにアクセスをしたところ,以降PCでもmythwebの画面がモバイル用になって戻らなくなってしまった.mysqlのdbにユーザー毎のセッション情報が保存されてしまうためリセットが必要らしい.

$ mysql -u root -p
> use mythconverg;
> delete from mythweb_sessions;

これでリセットされて通常のレイアウトに戻る.
モバイルからもアクセスをする場合には異なるユーザー名を使うことが推奨されているみたい.

wizdのインストール

いろいろと派生があるようですが,サムネイル表示を使ってみたかったのでwizd 0.12gt3をいれてみることにしました.
Kosuke's Secret room

  • 必要ライブラリのインストール
    # apt-get install libjpeg62-dev
  • インストール
    • wizdサーバを再コンパイル
      $ tar jxvf wizd-012gt3.tar.gz
      $ cd wizd_012gt3
      $ make clean
      $ make
    • wizdのバイナリをコピー(私は/usr/local/share/wizd/にしました.)
      $ sudo cp wizd /usr/local/share/wizd/
  • 設定
    document_rootとthumbnail_rootを決めて,wizd.confを設定しました.そのほかskinと番組名表示用のスクリプトも同じくdocument_rootとthumbnail_rootを合わせて設定しました.

    • skinの設定
      スキンはbw_wizd_006を使うことにしました.
    • 番組名の表示
      オモイノホカ日々徒然のnuvlinksスクリプトを使い,番組名のリンクを作成する.
      wizdからこのスクリプトの呼出が可能なようですが,名前がpage_gen.cgiとなっているので,名前を変更して/usr/local/binに保存し,シンボリックリンクをwizdのdocument_root/cgi-bin/に作成しました.

nuvからaviへの変換

最終的に録画した番組を,少し古いですが長瀬産業 DVX-500で見れるようにしたいです.しかし,試してみるとMPEG4でハードエンコードしたnuvファイル(のシンボリックリンク)の動画は再生されませんでした.
いろいろと調べてみるとnuvはMPEG1/2のストリームと互換があるようだが,MPEG4だとaviファイルにする必要があるらしいです.
試しにwis-go7007のドライバに付属のgorecordで録画した映像をwizd経由でDVX-500に読ませてみたら,ちゃんと再生・早送りなどができたので,音声・映像のコーデックは対応しているがファイルのヘッダーやインデックス情報がたりないのだと思います.

  • avidemux
    映像の編集ソフトです.これで読み込み・保存をしてもnuvからaviへの変換ができるとの情報がありましたので,試してみました.保存まえに"rebuild-index"を実行して保存したaviをDVX-500で読み込むと,映像・音声の再生と早送りなどもすることができました.
  • rebuild-indexのスクリプト化
    avidemuxは2.4.0からコマンドライン版も用意されています.コマンドライン版を使い自動的に実行されるようにスクリプトを作成しました.

    • nuv2avi_rebuilindex.sh
      #!/bin/bash
      CMD_AVIDEMUX="/usr/bin/avidemux2_cli"
      
      if [ -e "$*" ]; then
          INPUT_FILE="$*"
          TMP_FILE=`/bin/echo ${INPUT_FILE%.*}`"_tmp.nuv"
          OUTPUT_FILE=`/bin/echo ${INPUT_FILE%.*}`"_new.nuv" 
      
          $CMD_AVIDEMUX --autoindex --load $INPUT_FILE --rebuild-index --save $OUTPUT_FILE --quit
          if [ $? = 0 ]; then
              /bin/mv -f $OUTPUT_FILE $INPUT_FILE
              IDX_FILE=$INPUT_FILE".idx"
              if [ -e $IDX_FILE ]; then
                  /bin/rm -f $IDX_FILE
              fi
          fi
      fi

こちらのスクリプトを/usr/local/binに保存して,mythtv-setupでユーザージョブに「/usr/local/bin/nuv2avi_rebuildindex.sh "%DIR%/%FILE%"」と加えて,mythfrontendの設定でユーザージョブを有効にしました.録画実行後に自動的にnuvからaviに変換がされ,さらに番組名のシンボリックリンクも作成されるので,録画後すぐにDVX-500でみることができるようになりました.