epgrecの使い方

番組表の使い方

基本的な操作

 直感的に利用出来るようになっているのであまり説明はいらないと思いますが、赤いバーが現在時刻を示しています。

epgrec_prg01.png

 左右スクロールに合わせチャンネルタイトルや時刻のサイドバーが移動しますから、それなりにスクロールさせても見やすいだろうと思います。
 番組表の大きさや表示する時間はカスタマイズが可能です。「環境設定」に設定があるのでお好みのサイズや時間に設定するのもいいでしょう。

色分けのカスタマイズ

 番組枠はEPGで示されたカテゴリで色分けされていますが、色分け状態はある程度のカスタマイズが可能です。左上の「強調表示」をクリックします。

epgrec_prg02.png

 たとえばドラマは興味ないなあということであれば、ドラマをクリックすると番組表情ではドラマが白背景に切り替わります。このようにして自分がみたいカテゴリのみ色を残すようにしておくと便利かもしれません。
 なお、この色分けの設定はブラウザにcookieで記録され、epgrec側に保存されるわけではありません。

チャンネル情報の編集

(2010年2月25日版~)
番組表でチャンネル名をクリックするとチャンネル情報ダイアログが開きます。

epgrec_chinfo01.png

視聴しないチャンネルの表示/非表示

(2010年3月21日版~)

 BSの有料放送チャンネル(WOWOW、スター・チャンネル)やCS放送では未契約のチャンネルが視聴できないので、番組表は要らないという人もいるでしょう。また、地上波でも電波が弱いなどの理由で録画やEPG取得が安定しないチャンネルは非表示にした方がいいでしょう。epgrecは見ない/見れないチャンネルをスキップさせることができます。
 スキップさせると

  • 見ないチャンネルの番組が検索でヒットしなくなる
  • 表示が少し軽くなる

といったメリットがあります。デメリットとしては、有料放送の無料開放日に番組表がすぐには見れないということがありますが、たいしたデメリットではないでしょう。

スキップさせる

 チャンネル情報ダイアログで「視聴しない」にチェックを入れると、そのチャンネルがスキップされ、非表示になります。スキップを設定すると以降、そのチャンネルのEPGの取得も行われません。ただし、取得済みの一週間分の番組はデータベースに残るので、そのチャンネルの番組データが完全に消えるのは1週間後です(つまり1週間は検索にヒットしてきます)。

スキップを解除する

 非表示にしたチャンネルを、改めて表示に設定したいときには右上の「チャンネル表示」をクリックしてください。隠されているチャンネルが表示されます。

epgrec_chinfo02.png

 画面例のように非表示中のチャンネルが赤く表示されます。タイトルをクリックしてチャンネル設定ダイアログを開き、視聴しないのチェックを外して変更をクリックしてください。作業が終わったら「チャンネル表示」を改めてクリックして表示をもとに戻します。
 なお、非常時を解除してもすぐには番組表は表示されませんが、cronで次のEPG取得が行われれば表示されるようになります。

*制限事項
 チャンネル表示をクリックして非表示状態を解除している最中に縦スクロールするとレイアウトが崩れます。非表示を解除するのはチャンネルの設定を変えるときだけなので縦スクロールすることはなく、操作に問題はないはずです。

サービスIDの設定

 チャンネル設定ダイアログのサービスID欄に、そのチャンネルに設定したいサービスIDを設定し「変更」をクリックするとサービスIDの情報が更新されます。設定したサービスIDは、do-record.sh内で環境変数$SIDとして参照、利用できます。
モード0以外の録画モードでチャンネルのサービスIDのみ抜き出したいというような場合に使うわけですが、サービスIDって何? という方は以降の説明は無視してもらって構いません。むしろ、分からないまま設定すると正常な録画や番組表の取得に問題がでる恐れがあるので無視したほうがいいでしょう。
 設定例を紹介しておきます。

config.phpの$RECORD_MODE

次のように録画モード1を使えるようにします。

$RECORD_MODE = array(
        // ※ 0は必須で、変更不可です。
        0 => array(
                'name' => 'Full TS',    // モードの表示名
                'suffix' => '.ts',      // ファイル名のサフィックス
        ),

        1 => array(
                'name' => 'Minimum PID',
                'suffix' => '_tss.ts',
        ),
       /* 
       2 => array(
               'name' => '12Mbps MPEG4',
               'suffix' => '.avi',
       ),
       */
);

do-record.sh

PT1/2+現在のドライバの設定例です。

#!/bin/bash

RECORDER=/usr/local/bin/recpt1

if [ ${MODE} == 0 ]; then
   $RECORDER --strip --b25 $CHANNEL $DURATION ${OUTPUT}
elif [ ${MODE} == 1 ]; then
   $RECORDER --strip --b25 --sid $SID $CHANNEL $DURATION  ${OUTPUT}
fi

サービスIDの変更

デフォルトのhdから別の変更したのは次の局です

放送大学 all
NHK BS1 101
NHK BS2 102
WOWOW1 191
WOWOW2 192
WOWOW3 193

これら以外はデフォルトのままで問題ありません。
放送大学は、複数チャンネルの放送をやっているので念のためallにします。NHK教育もやってる時があるようです。
CSを設定する場合はさらに複雑になるでしょう。

録画予約

録画モードとは

 epgrecは録画モードをサポートしています。録画モードとは、do-record.sh内で環境変数$MODEで参照できる番号で、do-record.shをカスタマイズすることにより、たとえばモード1ではTSをスプリットするとか、モード2ではMPEG-4にエンコードして保存するといった具合に自由に録画形式を作り込むことができるわけです。
 モードを利用するには、config.phpで$RECORD_MODEの右辺を設定しdo_record.shでモードごとに異なる録画が行えるよう自力でカスタマイズを行っておかなければなりません。これらを設定しない場合はモード0しか利用できません。
 モード0はカスタマイズ不可で、生のTS(FullTS)を保存することが要求されます。これはモード0をEPG取得に利用するためで、モード0に改変したTSを保存するような設定を行った場合の動作は保証しません(番組表が表示されずepgrecが機能しなくなるはずです)。
 したがって、シェルスクリプトが書けない、$RECORD_MODEの右辺の設定の仕方が分からないという方はモード0のみ利用しておくのが無難です。

簡易予約と予約カスタマイズ

 epgrecは番組表上からの予約を基本操作にしています。録画したい番組をクリックすると次のようなダイアログがポップアップします。

epgrec_rec01.png

簡易予約

 EPGの情報をもとに即座に予約します。使用されるモードは環境設定→優先する録画モードの設定に従います。

予約カスタマイズ

 モードやタイトル、概要、時間をユーザーが設定して録画したいときには予約カスタマイズをクリックしてください。

epgrec_rec02.png

 このダイアログで番組ID保持にチェックを入れておくと、この予約が番組と関連付けられ、番組表の色分けに反映されます。epgrecは仕様上、番組単位の色分けしかできないので、複数の番組にまたがるような時間を録画しても色分けに反映できるのは1番組のみです。したがって、番組の放映時間を超える範囲を録画予約するような場合は番組ID保持を外しておいてもいいかもしれません(お好み次第で)。

予約一覧

 右上の「予約一覧」をクリックすると予約が一覧できます。

epgrec_rec03.png

 この一覧では、内容とタイトルの変更および削除ができます。録画時間やモードの変更などはできませんので、これらを変更したいときにはいったん削除してください。
 タイトルや内容を変えたいときには、タイトルや内容をクリックします。

epgrec_rec04.png

 このダイアログで編集して保存すると、番組タイトルなどが変えられます。ただし、いちど編集して内容を変えると、以後、EPG側でタイトルや内容が更新されても、予約側には反映されなくなることに注意してください(簡易・キーワード予約でタイトルや概要を編集していなければEPGの情報が反映され続けます)。

予約一覧の自動IDについて

 予約一覧の自動ID欄に数字がある予約は、キーワード自動録画によって自動的に予約された番組です。表ヘッダの自動IDをクリックすると自動録画キーワード管理に飛ぶことができますの、自動的に予約された内容が気に入らないときには、そのキーワードを変えるといいでしょう。

追っかけ対応

 epgrecは手動で予約された録画に関しては、その番組の放映時間が変更されても、それに合わせて自動的に録画時間を変えるといった動作は行いません。手動で行った予約は、手動で操作するという前提で作られています。
 放映時間の変更に合わせて、自動的に録画時間も変更したいのなら、後述の新機能キーワード自動録画?を使ってみてください。

番組検索/キーワード自動録画

 右上の番組検索をクリックすると検索画面に切り替わります。

epgrec_search01.png

絞り込み項目

 画面例のようにキーワードに加え、

  • 種別(地デジ、BS、CS)
  • 放送局
  • カテゴリ
  • 開始時間帯
  • 曜日

で絞り込むことができます。時間帯は1時間単位で、たとえば20時~に設定すると20:00~20:59:59の間に開始される番組がヒットしてきます。

キーワード自動録画

 絞り込みを実行すると、表の下に「この絞り込みを自動録画キーワードに登録」というボタンが表示されます(※300件以上がヒットした時には表示されません)。
 「この絞り込みを自動録画キーワードに登録」ボタンをクリックすると、自動録画キーワード管理にジャンプします。

epgrec12.png

 epgrecは、ここに登録されている絞り込みにヒットする番組を自動的に予約します。毎週見ている番組のタイトルなどを登録しておくと、毎週自動的に予約されるので便利に使えるでしょう。
 なお、この画面でキーワードを削除すると、このキーワードによって自動的に設定された予約はすべてキャンセルされます
 また、手動で予約を取り消した番組については、自動録画の対象番組からはずされ、キーワードでヒットしても予約されません。手動でキャンセルされた番組は要らない番組にマークされたという判断ですので、改めて予約する時には手動で行うようにしてください。

キーワード自動録画の注意点

 自動的に実行された予約は、ある程度、放映時間の変更に追随するはずです。ただ、追随するのはgetepg.phpの実行時ですから、直前になって時間が変更されたりしたときには追随できないことが多いでしょう。もちろん、放映中(録画中)に放送時間が伸びたりしても対応できません。
 また、放送局によっては頻繁に番組の放映時間を変更しています(NHK BS1が極端に変更が多く、たぶんメジャーリーグの関係?かなにかじゃないかと)。そのような局では、EPGの取得タイミングによってある時間帯の番組表がすっぽりとなくなってしまっているときもあります。こうしたケースはごくまれで、NHK BS以外ではほとんど見かけたことが無いですが、こういう状況になると録画そのものが行われないといったことも起こり得ます。
 絞り込み項目に時間帯を加える場合も注意が必要で、放送開始時間が変更されるとヒットしなくなり、予約が自動的にキャンセルされる危険があります。放送時間の変更に対応したいなら、時間帯絞り込みは使わない方が無難でしょう。

 さらに、予約の重複が検出された番組も自動予約は行われません。キーワードをたくさん登録してバリバリ録画したいという方は複数チューナーの使用が前提になるでしょう。環境設定で、連続した番組の予約を有効にしておくと少ないチューナー数でもそこそこの自動録画に対応できると思います。

 もうひとつ、epgrecはハードディスクの残り容量は感知しません。キーワードによって、大量の予約が自動的に行われハードディスクが目一杯になってしまうと録画できなくなりますし、その他にも大量の不具合が生じると思いますが、こうした点については利用者自身で管理するようお願いします。

録画済みの番組を再生する

 epgrecは、マイクロソフトが定義し広く利用されている簡易動画ストリーミングASF(Advanced Streaming Format)を用いた録画番組の再生に対応しています。この機能を使うと、巨大なファイルを転送せずにクライアントでの再生が(もちろんサーバー上での再生も)可能ですが、ブラウザ側に若干の設定変更が必要になります。
 通常、ブラウザではASFの再生に何らかのプラグインを利用するよう設定されていることが多いはずです(WindowsではWindows Mediaプラグインが設定されている場合が多いでしょう)。ASFに対応するプラグインの多くはMPEG2-TSのストリームに対応できません。
 ASFの再生にプラグインではなく、外部ソフトとしてVLCを対応させることで、MPEG2-TSストリームの再生が可能になります。Firefoxの場合、設定パネルのアプリケーションを開き、Content Type欄からASF(video/x-ms-asf)を探し、そのアクションとしてVLCを登録してください。

epgrec08.png

なお、この設定パネルにASFが無い場合、そのブラウザではASFとプラグインが関連づけられていませんので、設定する必要はありません。ASFを再生するアプリケーションを聞いてきたときにVLCなどを指定すれば良いだけです。

 番組表上部にある「録画済一覧」をクリックしてください。

epgrec09.png

 タイトルや内容欄が動画ストリーミングへのリンクになっています。クリックすると、VLCが起動し、その番組が再生できるはずです。早送り、巻き戻し、一時停止なども可能ですから、そこそこ便利に再生できます。
 なお、この画面で「削除」を実行するとデータベースから番組情報が消えますが、ファイルは消されません。

ASFのタイトルやAbstractについて

 ASFの外部ツールとしてVLCを設定した場合、VLCがASF中の多バイトコードのタイトルやAbstract(概要)に対応していないため、プレイリスト上でタイトルなどを正常に表示できません。これはVLC側の制限です。
 Windows Media Playerはタイトルと概要を正常に表示できますが、MPEG2-TSの多くに対応できないようです(一部には対応できるようですが…)。

タイムシフト再生について

タイムシフト再生できると便利なので少し調べてみましたが、いろいろ難しいです。

VLCの場合

VLCはASFに含まれる<DURATION VALUE>(番組の長さ)を無視し、Content-Lengthヘッダのほうで番組の長さを判断しているようです。録画中のデータを再生しようとすると、再生を始めた時点でのContent-Lengthを見てしまうので再生を始めたときの録画の末端で再生が終わってしまいます。
 そこで、嘘のContent-Lengthを返すsendsteram.phpというスクリプトを作ってみたところ、うまいことタイムシフト再生には成功しましたが、早送りができなくなってしまいました(嗚呼)。いまのところ、sendstream.phpを使っての再生を行うようにしてますが評判が悪いようならやめます。

Windows Media Player

 こちらはさすがMicrosoft純正だけあってASFの<DURATION VALUE>をきっちり見てくれるようで何もしなくてもタイムシフト再生ができます。
 ただ、MPEG2-TSの多くに対応できない(どうやら複数の番組PIDがあるTSがダメっぽい)ので設定しても不自由なだけです。また、sendstream.phpを使うとWindows Media Playerは何かがおきに召さないらしく再生できなくなってしまいます。というわけなので現状、Windows Media Playerには対応しないということにします。

録画データの削除

 録画済一覧で削除ボタンをクリックすると次のようなダイアログが出ます。

epgrec-filedelete.png

この録画を本当に削除するをクリックすると録画情報のみが削除されます。また、録画ファイルも削除するにチェックを入れておくと、同時に録画ファイルも削除されます。削除後の後戻りはできませんのでよく考えてからクリックしてください。

サムネールのカスタマイズ

環境設定でサムネールを使うに設定しているのにサムネールが表示されなかったり、サムネールの大きさを変えたいという場合、サムネール生成スクリプトgen-thumbnail.shをカスタマイズすることで解決できるかもしれません。

#!/bin/sh

# サムネールを取る時間をFORMER_TIME+αだけずらします
# お好きな時間だけずらしてください

offset=`expr ${FORMER} + 2`

${FFMPEG} -i ${OUTPUT} -r 1 -s 160x90 -ss ${offset} -vframes 1 -f image2 ${THUMB}

gen-thumbnail.shはうえのようなスクリプトでデフォルトではffmpegを使って160x90ドットのサムネール画像を作成しています。ffmpegはバージョンによってオプションが違ったりするため、デフォルトのままではサムネールが作成されないというようなケースがありえます。
また、ffmpegではそもそもサムネールが作成できないという場合もあるかもしれません。
そのような場合、gen-thumbnail.shを自分の環境に合わせて書き換えてください。環境変数${OUTPUT}の動画ファイルから、環境変数${THUMB}にサムネール画像(JPEG形式のみ)を出力すればOKです。それぞれフルパスが入っています。
なお、${FORMER}には番組開始までのオフセット時間(秒)が入っていますので、例のようにexprを使ってお好きな時間だけずらすと、ほどよく番組のサムネールが取れるでしょう。逆にずらさないとCMだったり前の番組だったりのサムネールが生成されて役に立たないでしょう。このあたりの調節はお好きなようにどうぞ。

mediatomb連係機能を使う

 この機能はまだテスト中です

 視聴にDLNAサーバーmediatombを利用している人は多いと思います。mediatombは標準ではタイトルとしてファイル名を使用します。FILENAME_FORMATの設定を用いるとファイル名にタイトルが入れられるものの、DLNAクライアントから拡張子等も見えてしまうのであまり格好がいい物ではありません。
 epgrecは録画が終了すると同時に、mediatombのDBを書き換えて番組タイトルと概要をmediatombのDBに反映させる機能を持っています。DLNAクライアントから、ファイル名ではなくタイトルが見えるわけです。この機能はオプションで、mediatombを使用していない方は設定する必要はありません。

mediatomb側の設定

 まず、mediatombの設定ファイルconfig.xmlを変更して、SQLiteからMySQLにデータベースを変更する必要があります。config.xmlの書き換え箇所は次の通りです。

…
     <sqlite3 enabled="no"><!-- noにする -->
       <database-file>sqlite3.db</database-file>
     </sqlite3>
     <mysql enabled="yes"><!-- yesにする -->
       <host>localhost</host><!-- epgrecのDB_HOSTと同一に -->
       <username>yourname</username><!-- epgrecのDB_USERと同一に-->
       <database>yourdbname</database><!-- epgrecのDB_NAMEと同一に-->
       <password>yourpass</password><!-- epgrecのDB_PASSと同一に-->
     </mysql>
   </storage>
…

 その他、.tsがvideo/mpegとして扱われる設定等が必要ですが、これらは通常のmediatomb+デジタル放送録画の設定と変りません。
 config.xmlを変更したらmediatombを再起動させ、epgrecのSPOOLフォルダをmediatombのスキャンディレクトリに設定します。そのとき、スキャン方法をInotifyに必ず設定しておくひつようがあります。

mediatomb01.png

 以上で、mediatomb側の設定は終了です。

epgrec側の設定

 epgrecの環境設定→mediatomb連係機能を「使う」に設定して設定を保存します。

 そしてmediatomb.phpを1度だけ実行ます。

$ /var/www/epgrec/mediatomb.php

 mediatomb.phpは既存の録画済みデータのタイトルとdescriptionをmediatombのテーブルに反映させるスクリプトです。
 以降、録画が終わったらmediatombのDBも自動的に書き換えられるようになり、DLNAクライアントからはタイトルが見えるようになります。
 なお、epgrecのタイトルなどとmediatombのタイトルなどに齟齬が生じた場合は、mediatomb.phpスクリプトを再度、実行することにより修正されることがありますので試してみてください。

動作ログを見る

 epgrecの動作に疑問が生じたときやエラーが起きた場合、ログを見ることで何かヒントが掴めるかもしれません。

epgrec_log01.png

 右上のリンクを環境設定→動作ログを見るの順にクリックすると画面例のようなログが参照できます。
 レベル欄が情報となっているログは、epgrecの動作が記録されているだけで、エラーなどではありません。
 レベル欄にエラーと表示された場合は、なにか深刻なエラーが起きている可能性があるかもしれません。原因としては、インストールの不備、PHPなどの設定などが関連している可能性があります。

サイト内検索

AND OR