Epgrec
目次
epgrecとは
日経Linux誌2009年7月売り号(8月号)に掲載するために開発した録画予約システムで、その後も実際に使いながらぼちぼちと機能を追加していっています。tomy氏のepgdumpr2を使ってMPEG2-TSデータから番組を抽出、MySQLデータベースで番組表を保持します。Linuxを録画サーバとして利用している人のために作成されており、複数チューナ+キーワード自動録画によって大量の録画予約を自動的に行ったりもできます。
詳しくは http://www.mda.or.jp/epgrec/
必要な機器
USB接続するTVチューナー (KTV-FSUSB2)
HDD(データ容量が半端ないので必須)
必要なプログラム
epgrec Webから予約を受け付けるプログラム
recfsusb2n チューナーからデータを受け取る
epgdump 受信データから番組表を取り出す
ffmpeg 取り込んだデータを圧縮する
その他、at cron等が必要だがパッケージで準備されているのでapt-getしてインストールする
recfsusb2nのコンパイル、設置
recfsusb2nは、コンパイルしてインストールする必要が有ります。
まず、コンパイルに必要なツールと後に必要なコマンドをインストールします。
ターミナルで接続し
sudo su apt-get install yasm g++ libboost-thread-dev libboost-filesystem-dev at cron git make usbutils
配布先不可解(何か問題が有るようだ)
もらってきて、展開し、MakeFileを編集
git clone https://github.com/sh0/recfsusb2n cd /home/osmc/recfsusb2n/src unzip ../../recfsusb2n_http_patch2.zip nano Makefile
11行目の"CXXFLAGS ="の後ろの"-march=native"の部分を消す。
13行目の"CFLAGS ="の後ろの"-march=native"の部分を消す。
15行目の"#LIBS”の"#"を消して"LIBS"とし
16行目の"LIBS"の頭に"#"を挿入して"#LIBS"とし、この行をコメントアウトします。
更に、15行目の"LIBS ="の後ろの"-lboost_thread-mt"を"-lboost_thread"とする。
編集内容を保存する。
次に、コンパイルと設置とルール設置
make cp recfsusb2n /usr/local/bin nano /lib/udev/rules.d/89-tuner.rules
ルールの内容
# FSUSB2N SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="0511", ATTRS{idProduct}=="0029", MODE="0664", GROUP="video"
そして、グループへの追加
gpasswd -a www-data video
epgdumpのコンパイル、設置
ここ http://www.mda.or.jp/epgrec/index.php/%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E5%89%8D%E3%81%AE%E6%BA%96%E5%82%99 を参考にダウンロードしてきます。
epgdumpr2-utf8.tar.gzがよさげなので、それを使ってみます。
tar xvzf epgdumpr2-utf8.tar.gz cd epgdumpr2 make cp epgdump /usr/local/bin
設置方法
データベースの準備
データベースを作成
mysql -u root -p
epgrecと言う名称のデータベースでユーザーID:epgrec パスワード:epgrecで作成
mysql> grant all privileges on epgrec.* to epgrec@localhost identified by 'epgrec'; mysql> create database epgrec; mysql> exit
atコマンドの許可
/etc/at.deny を開き、www-data を削除
nano /etc/at.deny
www-dataの行を削除する
Webアプリの設置
tar xvzpf epgrec_20111001.tar.gz
config.php.sample を config.php にリネームして編集。
mv config.php.sample config.php nano config.php
チューナーは KTV-FSUSB2 を利用するので、do-record.sh は以下のようにした。
nano do-record.sh
#!/bin/sh echo "CHANNEL : $CHANNEL" echo "DURATION: $DURATION" echo "OUTPUT : $OUTPUT" echo "TUNER : $TUNER" echo "TYPE : $TYPE" echo "MODE : $MODE" RECORDER=/usr/local/bin/recfsusb2n $RECORDER --b25 $CHANNEL $DURATION ${OUTPUT} >/dev/null
ちゃんと録画出来るかテスト
OUTPUT=test.ts CHANNEL=22 DURATION=30 TUNER=0 MODE=0 TYPE=GR /media/Data/www/epgrec/do-record.sh
Apacheへの設定
nano /etc/apache2/conf-enabled/epgrec.conf
次の内容で編集します。
# Uncomment this to add an alias. # This does not work properly with virtual hosts.. Alias /epgrec /media/Data/www/epgrec <Directory /media/Data/www/epgrec/> Options +FollowSymLinks AllowOverride All <IfVersion >= 2.3> Require all granted </IfVersion> <IfVersion < 2.3> order allow,deny allow from all </IfVersion> </Directory>
Apacheの再起動
apache2ctl restart
ブラウザで http://osmc/epgrec/ にアクセスすると何らかのメッセージが表示されていれば成功です。
パーミッションの調整
取りあえず777で実験中
動作上の不具合
録画中に間違って、OSを再起動してしまったら、削除出来ない録画予約が残ってしまった。又、録画済みファイルにも削除出来ない物が残ってしまった。
録画したファイルの一部で正常に再生出来ない物が有る。録画中に負荷がかかったのか、電波状況が悪かったのか原因不明。
追っかけ再生が出来ると聞いたのでやってみたが出来なかった。録画中のファイルも壊れてしまう様だ。
能力不足で、録画したファイルをOSMC本体で再生するのは無理が有る。映像がカクカクで音声がズレていきます。
ffmpegを使いts→mp4変換すると、楽々再生出来る様になるが、変換作業に録画時間の10~20倍程度かかります。
録画後の処理ツール
ffmpegのインストール
ffmpegは、コンパイルしてインストールする必要が有ります。(Raspbianの場合はapt-get可能です)
x264のインストール
apt-get install libx264-142
git clone git://git.videolan.org/x264 cd x264/ ./configure --enable-shared --enable-pic make make install
xvidのインストール
wget http://downloads.xvid.org/downloads/xvidcore-1.3.3.tar.gz tar zxvf xvidcore-1.3.3.tar.gz cd xvidcore/build/generic ./configure make make install
faacのインストール
wget http://downloads.sourceforge.net/faac/faac-1.28.tar.gz tar zxvf faac-1.28.tar.gz cd faac-1.28/ ./configure --with-mp4v2 make make install
faadのインストール
http://sourceforge.net/projects/faac/files/faad2-src/faad2-2.7 ここから最新のソースを取得します。
tar zxvf faad2-2.7.tar.gz cd faad2-2.7/ ./configure make make install
lameのインストール
http://sourceforge.net/projects/lame/files/lame/3.99/ ここから最新のソースを取得します
tar zxvf lame-3.99.5.tar.gz cd lame-3.99.5 ./configure --enable-nasm --enable-efence --enable-mp3x --enable-mp3rtp make make install
共有ライブラリの情報を更新
nano /etc/ld.so.conf
/usr/local/lib の記述を追加します。
include ld.so.conf.d/*.conf /usr/local/lib
保存後に下記コマンドを実行
ldconfig
ffmpegのインストール
wget http://www.ffmpeg.org/releases/ffmpeg-2.2.2.tar.gz tar zxvf ffmpeg-2.2.2.tar.gz cd ffmpeg-2.2.2/ ./configure --prefix=/usr --bindir=/usr/bin --datadir=/usr/share/ffmpeg --incdir=/usr/include/ffmpeg --libdir=/usr/lib --mandir=/usr/share/man --arch=armv7hl --optflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector -param=ssp-buffer-size=4 -march=armv7 -mfloat-abi=hard -mfpu=vfp' --disable-crystalhd --disable-indev=jack --enable-libmp3lame --enable-libxvid --enable-pthreads --disable-static --enable-shared --enable-gpl --disable-debug --disable-stripping --shlibdir=/usr/lib --disable-runtime-cpudetect --arch=arm --disable-neon --enable-libfaac --enable-libx264 --enable-nonfree --disable-asm