debianでのインストール

素直にRPMが使えなくてなかなか面倒。

まずここで準備
http://www.linux-m32r.org/pipermail/linux-m32r-ja/2005-December/000192.html

ここに従いrebuild&install
http://linux.matchy.net/FedoraGV-MVPRX.html
http://linux.matchy.net/RpmBuild.html

sudo rpmbuild --rebuild --nodeps SRPMS/perl-Video-Frequencies-0.03-matchy1.nosrc.rpm
sudo alien -i perl-Video-Frequencies-0.03-matchy1.noarch.rpm
以下同じ
perl-tkはうまくいかないので、aptitudeで入れる

音声早回し対策

ivtv入れる前にカーネルパッチを当てる。
ここをmake modules_installでぐぐればわかる
http://linux.paken.org/index.php?CX23416GYC-STVLP%A4%CE%B2%F2%C0%CF

sudo aptitude -s install linux-source
[nickle@misumi 07-04-10 21:40:20 /usr/src]% sudo tar xjf linux-source-2.6.18.tar.bz2
[nickle@misumi 07-04-10 21:41:34 /usr/src/linux-source-2.6.18/drivers/media/video]% cat ~/gv_saa7115_2.6.18-4-686.patch | patch
[nickle@misumi 07-04-10 21:52:22 /usr/src/linux-source-2.6.18]% sudo cp /boot/config-2.6.18-4-686 ./.config
[nickle@misumi 07-04-10 21:53:10 /usr/src/linux-source-2.6.18]% sudo make oldconfig
[nickle@misumi 07-04-10 21:53:10 /usr/src/linux-source-2.6.18]% sudo aptitude install kernel-package
[nickle@misumi 07-04-11 0:23:03 /usr/src/linux-source-2.6.18]% sudo make-kpkg --initrd --revision saa7115.patch kernel-image
$ sudo dpkg -i linux-image-2.6.18_saa7115.patch_i386.deb

ivtvのコンパイル

rpmbuildがうまくいかない。むぅ。
ここを見ながら全手動でやる
http://fedorasrv.com/ivtv-0.8.shtml

make時は、

make KDIR=/usr/src/linux-headers-2.6.18-4-686
sudo make KDIR=/usr/src/linux-headers-2.6.18-4-686 install
自分でカーネル再構築したならKDIRは不要

modprobe.confがないので新しいファイルを作る
参考: http://debian.fam.cx/index.php?Software%2FLinuxKernel#q993a083

nickle@misumi:~/foltia$ sudo vi /etc/modprobe.d/ivtv
options ivtv tuner=46 ntsc=j

キャプチャツールの準備

.ivtvrcは~foltia/に作る
foltia@misumi:~$ record-v4l2.pl --version
Auto Creating config file /home/foltia/.ivtvrc...
record-v4l2.pl 1.33 for use with http://ivtv.sf.net/
foltia@misumi:~$

foltiaにパーミッションをあげる

sudo vi /etc/group
video:x:44:nickle,foltia

PostgreSQL

nickle@misumi:~$ sudo su postgres

postgres@misumi:/home/nickle$ createuser foltia
Shall the new user be allowed to create databases? (y/n) n
Shall the new user be allowed to create more new users? (y/n) n
CREATE USER

postgres@misumi:/home/nickle$ createdb --encoding EUC_JP foltia
CREATE DATABASE

postgres@misumi:/home/nickle$ psql foltia -c "alter user foltia password 'xxxx'
ALTER USER

foltia@misumi:~/foltia-BETA16-r45/install$ psql foltia --file mktable.txt

perlモジュール

インストールチェック

perl -MTime::HiRes -e 'print $Time::HiRes::VERSION . "\n"'
perl -MSchedule::At -e 'print $Schedule::At::VERSION . "\n"'
perl -MDBD::Pg -e 'print $DBD::Pg::VERSION . "\n"'
perl -MJcode -e 'print $Jcode::VERSION . "\n"'

中2つがなかった

DBDにはDBIが必要。入れる
さらに、これも必要

aptitude install postgresql-dev

apache2

$ sudo aptitude install php5 php5-pgsql

$ sudo vi /etc/apache2/sites-enabled/000-default

   Alias /foltia/ "/home/foltia/php/"
   <Directory "/home/foltia/php/">
   </Directory>

   Alias /tv/ "/home/data/foltia/"
   <Directory "/home/data/foltia/">
   </Directory>

ffmpeg

先にfaacとfaadが必要っぽい
http://www.ironhearts.com/diary/archives/001453.html
http://www.ironhearts.com/diary/archives/2007/02/faadoeeeaa.html

faadはコンパイルエラーになるので該当箇所の"static"を消せば通る

liba52も
http://journal.mycom.co.jp/column/osx/152/

x264は最新版が必要(インストール時はrev 648)
http://www.videolan.org/developers/x264.html

lameも。
http://debian.8ware.com/content/blogcategory/21/64/
最後の行だけは

$ sudo dpkg -i ../lame_3.97-8_i386.deb ../libmp3lame0_3.97-8_i386.deb ../libmp3lame0-dev_3.97-8_i386.deb

amr-なんとかとxvidはめんどいので外す

foltia@misumi:~/ffmpeg$ ./configure --enable-mp3lame --enable-x264 --enable-gpl --enable-a52 --enable-faac --enable-faad --enable-pthreads

mp4psp

SDLがいるらしい
http://mitsu.air-nifty.com/blog/2005/01/itunesaac.html
$ wget http://www.libsdl.org/release/SDL-1.2.11.tar.gz
これでもいいかも
$ sudo aptitude install libsdl-dev

まだコンパイルが通らない(-Werrorのせい)
なのでconfigure開いて :%s/-Werror//

あと、

CFLAGS=-I/usr/local/include/SDL ./configure

さらにこの中も-Werrorを消す

vi lib/rtp/Makefile

…いいのかなこれで

でもって

vi lib/SDLAudio/src/audio/SDL_audio.c

まだエラー出るよ。もう疲れた。やめだ

foltia本体

tvrecording.pl内も、Error calling setCodecInfo()! 周りをコメントアウト
foltia@misumi:~/perl$ vi tvrecording.pl

Postgresに設定したfoltiaのパスワードを、perl/foltialib.pl, php/foltia_config2.phpに書き込む

index.phpでin_arrayの型でwarningが出るので適当に直す

そのままでは選局がうまくいかないのでパッチ(内容はdiff参照)

foltia@misumi:~/perl$ vi tvrecording.pl

あと、cron_foltia_dayly.shもコンフィグファイル名が空欄になってて正しく動かないのでパッチ

foltia_station

なんかONTVのNHK2局の局コードが新しくなったようなので、ontvcodeをそれに合わせて書き換え
 <channel id="0333.ontvjapan.com">
   <display-name lang="en">NHK</display-name>
 <channel id="0343.ontvjapan.com">
   <display-name lang="en">ETV</display-name>

ついでにNHK-BS, WOWOWあたりのontvcodeも登録

運用

時間帯が連続した場合、後ろ番組の頭が切れる

チューナー止めるのに時間がかかるのかね?
調べてみたら、lsofが作者さんと違う場所にあってエラーになってたみたい。
修正したらちゃんと動いた。

ちなみに、起動シーケンス

  • 1分前にtvrecording.pl起動
  • ちょっとスリープする。デフォルトの時間は37秒
    • ただし、これからチャンネル番号を引いた時間だけ実際にスリープされる
    • 複数プロセス同時起動によるレースコンディションの回避と思われ
  • その後、既存プロセスをkillして録画開始

時間帯を連続させて実験

  • 後番組(1チャンネル)は放送16秒前から録画されてた
  • (37-1)秒 + 8秒 + 16秒 = 1分ということで、プロセスの停止には8秒かかってる
  • 結構長いな。でもまあ大丈夫でしょ