TV録画の古い設定 †
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を選択していく.
- xmltvのインストール
- 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」と入力する.すると録画がうまくできるようになりました.
- ANIMAXを録画したときのlog
- 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;
これでリセットされて通常のレイアウトに戻る.
モバイルからもアクセスをする場合には異なるユーザー名を使うことが推奨されているみたい.
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
- nuv2avi_rebuilindex.sh
こちらのスクリプトを/usr/local/binに保存して,mythtv-setupでユーザージョブに「/usr/local/bin/nuv2avi_rebuildindex.sh "%DIR%/%FILE%"」と加えて,mythfrontendの設定でユーザージョブを有効にしました.録画実行後に自動的にnuvからaviに変換がされ,さらに番組名のシンボリックリンクも作成されるので,録画後すぐにDVX-500でみることができるようになりました.
ドライバの設定(kernel 2.6.24) †
kernel 2.6.24用にドライバば更新されていました.ただしubuntu 8.04では素直にはインストールできないようです.
- kernel headerのインストール
$ sudo apt-get linux-headers-lum-2.6.24-21-generic linux-headers-2.6.24-21-generic
- サウンドのkernelヘッダーを除外
$ sudo /usr/src/linux-headers-2.6.24-21-generic/include/sound /usr/src/linux-headers-2.6.24-21-generic/include/sound-blacklisted
- WIS Go7007のインストール
- 開発環境がインストールされていない場合の事前準備
$ sudo apt-get install build-essential $ sudo apt-get install libncurses5-dev
- ダウンロードと展開
$ wget http://nikosapi.org/software/WIS_Go7007/wis-go7007-linux-0.9.8-2.tar.bz2 $ tar xjf wis-go7007-linux-0.9.8-2.tar.bz2 $ cd wis-go7007-linux-0.9.8-2
- kernel/Makefileに下記の一行を追加
EXTRA_CFLAGS += -I /usr/src/linux-headers-lum-2.6.24-19-generic -include sound/config.h
- apps/gorecord.cのL213を編集
- 編集前
if (!strcmp(gopath, canonpath))
- 編集後
if (!strncmp(gopath, canonpath, strlen(gopath))
- 編集前
- ビルドの実行
$ make $ sudo make install
- 開発環境がインストールされていない場合の事前準備
- usbfxのマウント設定
$ cd wis-go7007-linux-0.9.8-1 $ wd=`pwd`; sudo patch -d /etc/init.d -p0 -i "$wd"/patches/mountdevsubfs.sh-usbfs.patch $ sudo /etc/init.d/mountdevsubfs.sh start
ドライバの設定(8.04) †
kernelを2.6.22-14にしたところ前のやり方ではコンパイルできないようでした.しらべるとドライバもバージョンアップされており,簡単にコンパイルできるようになっていました.
- インストール
$ wget http://nikosapi.org/software/WIS_Go7007/wis-go7007-linux-0.9.8-1.tar.bz2 $ tar xjf wis-go7007-linux-0.9.8-1.tar.bz2 $ cd wis-go7007-linux-0.9.8-1 $ make $ sudo make install
- usbfxのマウント設定
$ cd wis-go7007-linux-0.9.8-1 $ wd=`pwd`; sudo patch -d /etc/init.d -p0 -i "$wd"/patches/mountdevsubfs.sh-usbfs.patch $ sudo /etc/init.d/mountdevsubfs.sh start
ドライバの設定(7.04) †
- インストール
$ wget http://oss.wischip.com/wis-go7007-linux-0.9.8.tar.bz2 $ tar xjf wis-go7007-linux-0.9.8.tar.bz2 $ cd wis-go7007-linux-0.9.8 $ make
AUDC_SET_INPUTの宣言が無いとかでコンパイルできない.Ubuntuのフォーラムにパッチの在処などが書いてあるのでパッチを当ててコンパイルをする.
$ wget http://files.zoeloelip.be/wis-go-0.9.8-2.6.17.patch $ patch -p1 < wis-go-0.9.8-2.6.17.patch $ make
しかし今度は_IOWが宣言されていないとかでエラーがでる.
/wis-go7007-linux-0.9.8/kernel/wis-saa7115.c: In function wis_saa7115_command’: /wis-go7007-linux-0.9.8/kernel/wis-saa7115.c:206: 警告: implicit declaration of function ‘_IOW’ /wis-go7007-linux-0.9.8/kernel/wis-saa7115.c:206: error: expected expression before ‘int’ /wis-go7007-linux-0.9.8/kernel/wis-saa7115.c:206: error: case ラベルを整数定数に還元できません /wis-go7007-linux-0.9.8/kernel/wis-saa7115.c:215: error: expected expression before ‘struct’ /wis-go7007-linux-0.9.8/kernel/wis-saa7115.c:215: error: case ラベルを整数定数に還元できません /wis-go7007-linux-0.9.8/kernel/wis-saa7115.c:264: error: expected expression before ‘int’ /wis-go7007-linux-0.9.8/kernel/wis-saa7115.c:264: error: case ラベルを整数定数に還元できません /wis-go7007-linux-0.9.8/kernel/wis-saa7115.c:284: 警告: implicit declaration of function ‘_IOWR’ /wis-go7007-linux-0.9.8/kernel/wis-saa7115.c:284: error: expected expression before ‘struct’ /wis-go7007-linux-0.9.8/kernel/wis-saa7115.c:284: error: case ラベルを整数定数に還元できません /wis-go7007-linux-0.9.8/kernel/wis-saa7115.c:328: error: expected expression before ‘struct’ /wis-go7007-linux-0.9.8/kernel/wis-saa7115.c:328: error: case ラベルを整数定数に還元できません /wis-go7007-linux-0.9.8/kernel/wis-saa7115.c:372: error: expected expression before ‘struct’ /wis-go7007-linux-0.9.8/kernel/wis-saa7115.c:372: error: case ラベルを整数定数に還元できません
kernel/以下のフォルダのいくつかのファイルにヘッダーファイルの参照を追加する.
- wis-saa7113.c,wis-tw2804.c,wis-tw9903.c
<修正前> #include <linux/video_decoder.h> <修正後> #include <linux/types.h> #include <linux/ioctl.h> #include <linux/video_decoder.h>
- wis-saa7115.c
<修正前> #include <linux/video_decoder.h> <修正後> #include <linux/ioctl.h> #include <linux/video_decoder.h>
再度コンパイル&インストール
$ make $ sudo make install USE_UDEV=y
付属のアプリケーションで動作テスト
$ ./apps/gorecord -duration 60 capture.avi
しかし,モジュールがないとエラーになってしまう.
Unable to read /sys/bus/usb/drivers/go7007: No such file or directory Is the go7007-usb kernel module loaded?
lsmodなどでみると該当しそうなモジュールはない.マニュアルでモジュールを読み込んでみる.
# modprobe go7007-usb WARNING: Error inserting snd_go7007 (/lib/modules/2.6.20-15-generic/extra/snd-go7007.ko): Unknown symbol in module, or unknown parameter (see dmesg) WARNING: Error inserting go7007 (/lib/modules/2.6.20-15-generic/extra/go7007.ko): Unknown symbol in module, or unknown parameter (see dmesg) FATAL: Error inserting go7007_usb (/lib/modules/2.6.20-15-generic/extra/go7007-usb.ko): Unknown symbol in module, or unknown parameter (see dmesg)
読み込みに失敗する.メッセージどおりdmesgを見てみると
[ 246.655656] snd_go7007: Unknown symbol snd_card_free_in_thread [ 246.688140] Linux video capture interface: v2.00 [ 246.706942] go7007: Unknown symbol go7007_snd_remove [ 246.707098] go7007: Unknown symbol go7007_snd_init [ 246.718990] go7007_usb: Unknown symbol go7007_read_addr [ 246.719104] go7007_usb: Unknown symbol go7007_remove [ 246.719290] go7007_usb: Unknown symbol go7007_boot_encoder [ 246.719399] go7007_usb: Unknown symbol go7007_parse_video_stream [ 246.719592] go7007_usb: Unknown symbol go7007_register_encoder [ 246.719644] go7007_usb: Unknown symbol go7007_alloc [ 246.719698] go7007_usb: Unknown symbol go7007_read_interrupt
よくわからないが検索で引っかかったpatchを当ててみる.
$ patch -p1 < wis-go7007-0.9.8-kernel-2.6.17.diff Reversed (or previously applied) patch detected! Assume -R? [n] などと聞かれるがとりあえずリターン $ make clean $ make $ sudo make install USE_UDEV=y # modprobe go7007-usb
とりあえずエラーはでない.
$ ./apps/gorecord -duration 60 capture.avi
AV端子からの入力の録画が開始される.
- wis-saa7113.c,wis-tw2804.c,wis-tw9903.c
nuvからaviへの変換 †
最終的に録画した番組を,少し古いですが長瀬産業 DVX-500で見れるようにしたいです.しかし,試してみるとMPEG4でハードエンコードしたnuvファイル(のシンボリックリンク)の動画は再生されませんでした.
いろいろと調べてみるとnuvはMPEG1/2のストリームと互換があるようだが,MPEG4だとaviファイルにする必要があるらしいです.
試しにwis-go7007のドライバに付属のgorecordで録画した映像をwizd経由でDVX-500に読ませてみたら,ちゃんと再生・早送りなどができたので,音声・映像のコーデックは対応しているがファイルのヘッダーやインデックス情報がたりないのだと思います.
- nuv2avi
Windowsでの再生のためにaviファイルフォーマットに変更するプログラムです.映像・音声の再エンコードをしないので,私の目的に近いです.
こちらでnuvからaviに変換したものをDVX-500で読ませてみましたが,音声は再生されるが映像はまったく表示されませんでした.
最近はあまりメンテナンスされていないようで,GCCのバージョンを3.3に指定してコンパイルしなくてはいけなかったりしましたので,コンパイルに失敗しているのかもしれません. - mencoder
mplayerに付属のエンコーダーで"-oac copy -ovc copy"のオプションをつけると,映像・音声の再エンコードをすることなくaviフォーマットに変換されるとのことで試してみました.映像・音声ともにDVX-500で再生されるのですが,早送りなどをすることができませんでした. - avidemux
映像の編集ソフトです.これで読み込み・保存をしてもnuvからaviへの変換ができるとの情報がありましたので,試してみました.保存まえに"rebuild-index"を実行して保存したaviをDVX-500で読み込むと,映像・音声の再生と早送りなどもすることができましたが,しかし再生をしていると段々と音声と映像がずれてきてしまいます. - mencoder&avidemux
mencoderとavidemuxの良いところが合わさればと思い,mencoderで変換後に再度avidemuxで変換をさせたところ,映像・音声の再生,早送りなどのトリックプレイを正常に行うことができ,音声のズレも発生しなくなりました.
avidemuxはGUIソフトなのですが,2.4(まだpreview版のようですが)からはコマンドライン用のプログラムも含まれるようになっていましたので,自動化できるようにスクリプトを作成しました.avidemux2.4preview2のコンパイルはavidemux wiki pageを参考にしました.- nuv2avi_rebuilindex.sh
#!/bin/bash CMD_MENCODER="/usr/bin/mencoder" CMD_AVIDEMUX="/usr/local/bin/avidemux2_cli" OPT_MENCODER="-oac copy -ovc copy -forceidx -noskip" if [ -e "$*" ]; then INPUT_FILE="$*" TMP_FILE=`/bin/echo ${INPUT_FILE%.*}`"_tmp.nuv" OUTPUT_FILE=`/bin/echo ${INPUT_FILE%.*}`"_new.nuv" $CMD_MENCODER $OPT_MENCODER $INPUT_FILE -o $TMP_FILE if [ $? = 0 ]; then $CMD_AVIDEMUX --load $TMP_FILE --rebuild-index --save $OUTPUT_FILE if [ $? = 0 ]; then /bin/mv -f $OUTPUT_FILE $INPUT_FILE /bin/rm -f $TMP_FILE /usr/local/bin/page_gen.cgi fi fi fi
こちらのスクリプトを/usr/local/binに保存して,mythtv-setupでユーザージョブに「/usr/local/bin/nuv2avi_rebuildindex.sh "%DIR%/%FILE%"」と加えて,mythfrontendの設定でユーザージョブを有効にしました.録画実行後に自動的にnuvからaviに変換がされ,さらに番組名のシンボリックリンクも作成されるので,録画後すぐにDVX-500でみることができるようになりました.
- nuv2avi_rebuilindex.sh