2012年7月8日日曜日

PT2(DVB), epgrec用do-record.sh

TVの録画にepgrecを使いたい。
ただ、chardev版はカーネルのバージョンアップごとに更新しないといけない(頻繁にUPするのでめんどい)し、
ubuntu 12.10でやってみたら入らなかったので除外。
DVB版で使うことにする。

DVB版でepgrecを使うには、do-record.shに工夫が必要。
まず、epgrecから渡されるTUNERは適当なので、無視する。
TYPEによって、/dev/dvb/adapter0-3のどれを使うか決め、同じadapterを使うことが無いように
排他制御をする必要がある。

TSの取り込み部分は、fuse_b25を使ってやってみた時期もあったけど、
0byteのファイルが出来る頻度が多くて動きが怪しいという印象。
よって、/dev/dvb/adapter?/dvr0からddで取り出し、b25コマンドで復号するというローテクで。
録画失敗率は下がったと思う。


シェルスクリプトで色々やってたが、細かい制御が面倒になったのでrubyでやることにした。起動まではrubyだけど、実際に録画に使用されるのはmkfifoで作ったfifoと各種コマンドなので
処理的には大丈夫だと思いたい。


https://sites.google.com/site/tthhfugapiyo/home/tv.rb

spawnを使っているのでruby1.9系が必要。
直接TVを見るときも排他が必要なので、コマンドラインからも実行できるようにした。

mplayerで見る。
 tv.rb 211 -p

mplayerで見ながらfileに落とす。
 tv.rb 211 -o file -p

do-record.shとして使う。
 ln -s tv.rb do-record.sh
 CHANNEL=211 DURATION=1800 TYPE=BS OUTPUT=file.ts do-record.sh

デフォルトでBSとCSはtssplitter_liteをかけるようにしたので、
epgdumpで使うときはMODE=-1になるようにgetepg.phpの方を改造する必要がある。

追記:色々変更したのでまとめて以下
http://tthhfugapiyo.blogspot.jp/2014/06/epgrecdvb.html

0 件のコメント:

コメントを投稿