Epgrec

提供: Lisa Wiki
移動: 案内検索

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