« iPad Proの発売日は11月11日か!? | トップページ | Raspberry Piを大量に注文するとカスタマイズ可能!? »

2015年11月 1日 (日)

Raspberry Pi+KTV-FSUSB2で予約可能なTS抜き専用録画機に!

今年の頭にちょろっとトライしてほったらかしだった案件ですが、ようやく実現しました。

それはKTV-FSUSB2とRaspberry Piの組み合わせでTS抜き専用録画機を作ること。

Img_9708

1月の時点ではRaspberry PiにKTV-FSUSB2つないで手動で地デジ録画をやったところで止まりましたが、今度はその続きで予約録画まで出来るようにしました。

Linuxで使える”epgrec”というのをRaspberry Piにインストール、これで予約録画を可能にします。

参考にしたのはこちらのサイト。

公式サイト:トップページ - 録画予約システムepgrec

こちらを読んでやった方がうまくいきました:Ubuntu 11.10 へ録画予約システム epgrec を導入 - mimikakimemo

まず、下準備から。

■ 下準備編 ■

(1) まずはRaspberry PiにKTV-FSUSB2つないで地デジ放送録画(TS抜き)やってみたの記事でKTV-FSUSB2での録画環境を構築します。

最近はKTV-FSUSB2の入手もしづらくなってきたようで、代わりに”PX-S1UD”というのを使う方法もあります。

以下のサイトが詳しいです。

Raspberry Pi録画サーバをつくる(2) | キリッとガジェット

こちらを使う場合は、後述の録画コマンドが若干異なります。また、単体では動かずPT2/3のようにICカードリーダーが必要。ご注意を。

(2) 必要なコマンド類を一気にインストールしておきます。

sudo apt-get install apache2 php5 libapache2-mod-php5 php5-cli mysql-server php5-mysql at build-essentia ffmpeg

”MySQL”用のパスワードを入れろといわれますが、適当なものを入れて置いてください(パスワードなしでも可)。

(3) ”epgdump2”ってやつを入手します。

リンク先:epgdump2

Raspberry PiにTera Termでログインしている場合は、ダウンロードしたファイルをそのままTera Term Proにドラッグ&ドロップします(ダイアログが出てくるので”SCP”ってやつをクリック)。これでホームディレクトリに転送。

Raspberry Pi上で、これを解凍します。

 tar xvzf epgdumpr2.tar.gz
 cd epgdumpr2
 make

”epgdump”という実行ファイルが出来るので、これを/usr/local/binにコピー。

 sudo cp epgdumpr2 /usr/local/bin

(4) ”/etc/at.deny”を設定します。

 sudo vi /etc/at.deny
 または sudo nano /etc/at.deny

でat.denyを編集。

下の方に”www-data”というのがあるので、これを消去します。

(これやらないと、番組表から予約できなくなるようです)

(5) ”MySQL”の設定

epgrec用のデータベースを作成します。

まず

 sudo mysql -u root -p

と打ち込むと、”mysql>”というプロンプトが現れます。

そこで

 mysql> create database epgrec;
 mysql> grant all privileges on *.* to epgrec@localhost identified by 'password';
 mysql> exit

と入力。

すると、データベース名:epgrec、ユーザー名:epgrec、パスワード:password なデータベースが出来ます(”password”のところは自分用に変えて使ってください)。

なお、exit 以外のコマンドの後ろにある”;”(セミコロン)を忘れずに入力してください。コマンドが無効になります。これを忘れて何度か失敗しました > 私

(6) /etc/passwdの確認

sudo vi /etc/passwd (またはsudo nano /etc/passwd)

を開きます。

もし”apache:x:48:48:Apache:/var/www:/sbin/nologin”という項目があったら、後ろの”/sbin/nologin”を”/bin/sh”に書き換える必要があります。

うちのRaspberry Piでは不要でした。

(7) ”epgrec”本体を入手します。

以下のサイトから最新版を入手して置いてください。

ダウンロード - 録画予約システムepgrec

(現時点で最新版は”2010年3月22日版(epgrec-20100322.tar.gz)”でした)

PCで入手した場合は、Tera Term Pro経由でRaspberry Piに転送すると楽です ( (3)と同じ )。

■ ”epgrec”のインストール・設定 ■

(1) まずepgrecをインストールします。

 sudo tar xvzpf epgrec_20111001.tar.gz -C /var/www/

このあと

 cd /var/www/

と移動。

(2) 初期設定ファイル config.php.sampleconfig.phpに変えて編集。

 sudo mv /var/www/epgrec/config.php.sample /var/www/epgrec/config.php
 sudo vi /var/www/epgrec/config.php

ここで。

変えなければならないところは、チャンネル設定の部分($GR_CHANNELL_MAP =)。私の地域(愛知県 瀬戸タワー付近)では以下のとおり。

$GR_CHANNEL_MAP = array(
        "GR20" => "20",         // NHK
        "GR13" => "13",         // 教育
        "GR19" => "19",         // 中京テレビ
        "GR21" => "21",         // 東海テレビ
        "GR24" => "22",         // 名古屋テレビ
        "GR23" => "23",         // テレビ愛知
);

各チャンネルIDの値を調べるには、毎度の事ながら地上デジタル放送 チャンネル一覧表 - マスプロ電工|MASPROのサイトのお世話になります。

(3) ”do-record.sh”を作成します。

 vi do-record.sh

KTV-FSUSB2の場合、中身は以下。

#!/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
#B25=/usr/local/bin/b25_bcas

$RECORDER --b25 $CHANNEL $DURATION ${OUTPUT} >/dev/null

これが”PX-S1UD”を使う場合は、”RECORDER=/usr/local/bin/recdvb”に変えて、最後のコマンドも

$RECORDER --strip --b25 $CHANNEL $DURATION ${OUTPUT} >/dev/null

とすればいいっぽいです(未確認)。

この”do-record.sh”を実行形式にしておきます。

 sudo chmod 777 do-record.sh

とりあえず、この”do-record.sh”が動作するかどうかをテスト。

OUTPUT=test.ts CHANNEL=19 DURATION=30 TUNER=0 MODE=0 TYPE=GR /var/www/epgrec/do-record.sh

”CHANNEL=”のところは受信可能なIDを入れてください。30秒ほどのTSファイル(test.ts)がローカルに生成されていれば成功です。

(4) 録画作業ディレクトリ(/video)のパーミッションを変えておきます。

 sudo chown -R www-data:www-data /var/www/epgrec/
 sudo gpasswd -a www-data video

これをやっておかないと、録画してくれません。

(5) 本来ならここで終わり、いよいよ初期設定・・・と行きたいところですが。

番組情報を取得するコマンド”getepg.php”実行時に変なエラーがでてしまうため、”/var/www/epgrec/recLog.inc.php”というファイルを編集します。

   i /var/www/epgrec/recLog.inc.php

ここで

 define( "E_INFO" , 0 );
 define( "E_ERROR", 2 );

の2行を消して

 define( "EPGREC_INFO" , 0 );
 define( "EPGREC_WARN" , 1 );
 define( "EPGREC_ERROR", 2 );

という3行に置き換え。さらに

function reclog( $message , $level = E_INFO ) {

function reclog( $message , $level = EPGREC_INFO ) {

と書き換えます(おそらくただの独り言 epgrecのgetepg.phpで出るエラー参照)。

ここで一旦Raspberry Piを再起動しておきます。

(6) ブラウザで初期設定を行います。

Raspberry Pi上でのブラウザなら”http://localhost/epgrec”へ、PCなら”http://(Raspberry PiのIPアドレス)/epgrec”にアクセス。

Raspi_epgrec01

なにやらこんな画面が出てきます。

”ディレクトリのパーミッションチェック”と”ファイルのパーミッションチェック”の後ろにすべてOKがついていれば、一番下の”以上を確認し、次の設定に進む”をクリック。

続いてepgrecのシステム設定が出てきます。

変更するところは、MySQL 接続ユーザー名、MySQL 接続パスワード、使用データベース名 の3箇所。■ 下準備 ■ (5)で設定したものを入れます。

書き込んだら、一番下にある保存ボタンをクリック。

次のページはデフォルトのままで保存。

これらの設定は後でも書き換えられます。

設定が終わると、自動的に番組情報取得に入ります。だいたい20~50分はかかります。

しばらく待って”http://localhost/epgrec”または”http://(Raspberry PiのIPアドレス)/epgrec”にアクセスすれば、番組表が出てきます。

もし番組情報が出てこない場合は、手動で以下のコマンド

sudo /var/www/epgrec/getepg.php

を実行。これでうまく動けば番組表が出てきて、録画予約が可能になるはずです。

(7) あとはこの”getepg.php”を定期的に動かすよう設定します。

 sudo cp /var/www/epgrec/cron.d/getepg /etc/cron.d/

これで2時間おきに番組表が更新されます。

この”2時間おき”を変えたい場合は、”cron.d/getepg”を編集します。

vi /etc/cron.d/getepg

この中の

29 */2 * * *   www-data        /var/www/epgrec/getepg.php

という行の”*/2”のところを変えます。10時間おきなら”*/10”という具合です。

番組表更新には50分ほどかかる場合があるため、1時間にはしないほうがよさそう。1回やれば1週間後の24時までの番組は更新されるため、1日に1回でもOKな感じです。

てことで、私は12時間で設定しました。

■ 録画編 ■

予約の仕方ですが、番組表から予約したい番組をクリックします。

Raspi_epgrec02

こんなダイアログが出てくるので”簡易予約”をクリック。

Raspi_epgrec03

よほど高度な設定でもしない限りはこれでOK。

■ 注意・拡張編 ■

当然のことですが、録画データ(TSファイル)は結構でかい。10分で1GBあります。

Raspberry PiはmicroSDカードを使っているため、容量に注意が必要です。

うちのRaspberry Piには16GBのを入れて使ってますが、これでも30分の番組を3~4本いれたらパンクします。

てことで、うちではBuffaloのNASをRaspberry Piにマウントして、録画したファイルを転送できるようにしました。

(参照サイト:Raspberry PiにNASをマウントする。[Raspberry Pi][Linux] - Qiita)

録画が終わったら、ファイルをNASに転送することにしました(”record”という専用フォルダもNAS上に作成)。

sudo cp /var/www/epgrec/video/~.ts /mnt/nas/record/

ただし、録画が終わるたびに毎回コピーするのも大変。なんとか自動で出来ないか模索中。

”do-record.sh”の最後にこのコマンドを書き込んだら勝手に転送してくれるかと思ったら、うまく動きませんでした。

直接NAS上に録画データを書き込むようにしてもいいんですが、何らかの異常でNASとRaspberry Piの接続が切れてしまったら録画がストップします。

ちょっとおっかないので、できればRaspberry Pi内に録画しTSファイルを転送、その後消去するというのが無難なようです。

てことで、まず以下のような”ts_copy.sh”を作って、

cp /var/www/epgrec/video/*.ts /mnt/nas/record/
rm /var/www/epgrec/video/*.ts

(”mv”コマンドでもよかったんですが、tsファイルを消したくなくなったときに備えあえて2行で記述)

これを朝6時に実行できるよう、crontabで登録。

crontab -e

でcrontab登録画面を呼び出し、一番下に

0 6 * * * sudo /home/pi/ts_copy.sh

とつけておきました。これで、前日分の録画データを自動的にNASに移動してくれます。

ただ、このコマンドは録画中に実行されるとえらいことになりそうなので、まず録画することのない時間帯(私の場合は5~8時ごろ)に実行するようしないといけません。

転送する際も、なるべく小さいファイルにするためにあらかじめmp4に変換できるとなおいいんですが。

RaspberryPiで動画をエンコードする - Qiita

上のサイトを見る限り、Raspberry Pi用mpeg2デコーダを購入(500円ほど)しないといけないようで。

Raspberry Piほどの能力ではエンコードにも時間かかりそうですし、TSファイルのまま転送して、PCに取り込んで変換・編集をした方がよさそうですね。

なんにせよ、Raspberry Piを使ったスタンドアロンな録画環境が完成。

あとは安定して動いてくれるかどうか・・・

いちいちPCが立ち上げなくていいので、便利な録画環境になりそうです。

Raspberry Pi2 Model B ボード&ケースセット (Standard, Clear)-Physical Computing Lab

PLEX社製 BS/CSデジタル放送対応USB接続ドングル型チューナー PX-BCUD

« iPad Proの発売日は11月11日か!? | トップページ | Raspberry Piを大量に注文するとカスタマイズ可能!? »

TS抜き関連」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: Raspberry Pi+KTV-FSUSB2で予約可能なTS抜き専用録画機に!:

« iPad Proの発売日は11月11日か!? | トップページ | Raspberry Piを大量に注文するとカスタマイズ可能!? »

無料ブログはココログ

スポンサード リンク

ブログ村