Skip to content

黒/白Friio、HDUSシリーズ、Friio ExpressをLinuxで使う為の録画ツール(STZ版)

Notifications You must be signed in to change notification settings

stz2012/recfriio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

【recfriio r5 + α(STZ版)】
Linux用Friio録画プログラム(黒凡/白凡共通)です。
こちらは亜流版ですのでご注意下さい。

make でビルドした後、
./recfriio 録画するチャンネル 録画秒数 出力先ファイル名
で録画されます。
チャンネル番号は以下の通りです。引数なしで実行すると同じリストが出力されます。
  13 - 62   : UHF13 - UHF62
  K13 - K63 : CATV13 - CATV63
  B1 ,BS01_0: BS朝日               C1 ,CS2 : ND2  110CS
  B2 ,BS01_1: BS-TBS               C2 ,CS4 : ND4  110CS
  B3 ,BS03_0: WOWOWプライム        C3 ,CS6 : ND6  110CS
  B4 ,BS03_1: BSジャパン           C4 ,CS8 : ND8  110CS
  B5 ,BS05_0: WOWOWライブ          C5 ,CS10: ND10 110CS
  B6 ,BS05_1: WOWOWシネマ          C6 ,CS12: ND12 110CS
  B7 ,BS07_0: スターチャンネル2/3  C7 ,CS14: ND14 110CS
  B8 ,BS07_1: BSアニマックス       C8 ,CS16: ND16 110CS
  B9 ,BS07_2: ディズニーチャンネル C9 ,CS18: ND18 110CS
  B10,BS09_0: BS11                 C10,CS20: ND20 110CS
  B11,BS09_1: スターチャンネル1    C11,CS22: ND22 110CS
  B12,BS09_2: TwellV               C12,CS24: ND24 110CS
  B13,BS11_0: FOX bs238
  B14,BS11_1: BSスカパー!
  B15,BS11_2: 放送大学
  B16,BS13_0: BS日テレ
  B17,BS13_1: BSフジ
  B18,BS15_0: NHK BS1
  B19,BS15_1: NHK BSプレミアム
  B20,BS17_0: 地デジ難視聴1(NHK/NHK-E/CX)
  B21,BS17_1: 地デジ難視聴2(NTV/TBS/EX/TX)
  B22,BS19_0: グリーンチャンネル
  B23,BS19_1: J SPORTS 1
  B24,BS19_2: J SPORTS 2
  B25,BS21_0: IMAGICA BS
  B26,BS21_1: J SPORTS 3
  B27,BS21_2: J SPORTS 4
  B28,BS23_0: BS釣りビジョン
  B29,BS23_1: 日本映画専門チャンネル
  B30,BS23_2: D-Life

録画秒数に'-'を指定すると^C等でinterruptされるまで録画します。
出力先ファイル名に'-'を指定すると標準出力にTSを出力します。その場合ログは標準エラー出力に出力されます。

Makefile中の
B25      = -DB25
をコメントアウトせずにビルドした場合
まるも氏のARIB STD-B25 仕様確認テストプログラムがリンクされ、B25デコード機能が使用可能になります。
オプション --b25 を指定すると、録画時にB25デコードを行います。
--round N --strip --EMM 等のオプションがあり、ARIB STD-B25 仕様確認テストプログラムと同じように動作します。
--b25オプションを使用しない場合、録画ファイルはMulti2で暗号化された状態で出力されるのでb25等でデコードして下さい。

Makefile中の
HDUS     = -DHDUS
をコメントアウトせずにビルドした場合
MonsterTV HDUS/HDP対応版としてコンパイルされます。

Makefile中の
UDP      = -DUDP
をコメントアウトせずにビルドした場合
UDP送信対応版としてコンパイルされます。

Makefile中の
HTTP     = -DHTTP
をコメントアウトせずにビルドした場合
HTTPサーバ機能搭載版としてコンパイルされます。

recfriio r3 からFriioの初期化時に黒凡/白凡判定を行なうようになった為、flockでの排他の為にファイルを使用します。
デフォルトでは/var/lock/friiodetectが使用されますが、--lockfile ファイル名 で変更が可能です。
変更する場合、全てのrecfriioが同じロックファイルを使用するように注意して下さい。
排他用ファイルに書き込み権限が必要なので、例えばFriioを使用するユーザが全てvideoグループに属している場合、
-rwxrwxr-x 1 mythtv video 0 2008-09-19 06:33 /var/lock/friiodetect
のように事前にファイルを作成しておいて下さい。

インターフェースが適当ですが、問題がある場合はソースを修正して下さい。

/dev/bus/usb か、/proc/bus/usb に usbfs があることが必要です。
/dev/bus/usbの存在を確認し、なければ/proc/bus/usbを見に行きます。
Friioに対応するファイルに書き込み権限が必要です。
udevを使用している場合は、91-permissions.rulesが自分の使用している/etc/udev/rules.d/91-permissions.rulesなので
参考にしてudevの設定ファイルを修正して下さい。ディストリビューションによりファイル名等は変わると思います。
下記が追加した部分です。実行ユーザがvideoグループに属している事を前提に書いています。
====
# friio
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", \
	ATTRS{idVendor}=="7a69", ATTRS{idProduct}=="0001", \
	MODE="0664", GROUP="video"
====

必要な物:
  g++でコンパイル出来る環境
  boostライブラリ(http://www.boost.org/)
    boost::threadとboost::filesystemを使用しています。
  GLib2.0 GTK+のライブラリを入れれば入るはずです。

既知の問題:
  signalの処理を全く入れていない。
    LEDの色が変わったままになること以外は問題ないはず。
    => TS出力中に SIGTERM, SIGINT, SIGPIPE を受け取った場合録画を終了するようにしました。
  USBの通信がタイムアウトした場合の処理を行っていない。
    => 多少リカバリーを行うようにしました。
       初期化時にタイムアウトした場合は初期化を最初からやり直します。
       バルク転送時のタイムアウトは無視します。実装方法に多少問題があり、
       タイムアウトが大量に発生した場合対応できません。(バッファオーバーフローになります。)
       終了時ににタイムアウトした場合無視して正常終了します。LEDの色が元に戻りません。
  boost::threadのライブラリ名が-mt付きの場合と-mt無しの場合がある。
    => コンパイルエラーが起こった場合、Makefile内にある-lboost_thread-mtの-mtを外して下さい。

変更点:
r5:
ロックファイル作成時の権限を全ユーザが書き込み可能なように変更。
エラー防止の為読み込むヘッダファイルを追加。
FIFOバッファ長を10秒から20秒分に変更。
デバイスオープン時のエラーハンドリングの改善。
recfriio側でのsetinterface呼び出し(最近のカーネルでrecfriioが動かなくなっていた事への対処)
ライセンスの整理。
r4:
--b25を使用した録画中にB25でエラーが発生した場合に
B25なしで録画を継続するようにしました。
r3:
recfriio/recfriiobsの共通化を行いました。
黒凡白凡判定をカードリーダから凡初期化時に変更しました。
  これにより boost::regexとboost::formatがいらなくなりました。
内部を整理し、クラス化しました。
b25デコード機能を追加しました。
recfriiobsのURB送信間隔/最大送信数を強化しました。
タイムアウト処理を強化し、Broken Pipe等の場合もリトライを行うようにしました。
白凡用初期化シーケンスをBonDriver Ver.1.30の物と入れ替えました。
r2以前:
適当すぎた名称を直しました。work -> recfriio
タイムアウト処理を入れました。詳細は既知の問題を参照。
録画秒数の計測開始位置を直しました。初期化に時間がかかった場合でも終了時刻が変わらなくなりました。

ライセンス:
このプログラムはBonDriver(Meru customize edition)
http://2sen.dip.jp:81/cgi-bin/friioup/source/up0239.zip
及び
BonDriver Ver.1.20m
  http://2sen.dip.jp:81/cgi-bin/friioup/source/up0451.zip
BonDriver Ver.1.20m 黒チャンネル変更シーケンス修正差分2
  http://2sen.dip.jp:81/cgi-bin/friioup/source/up0456.zip
BonDriver Ver.1.30
  http://2sen.dip.jp/friio/files/BonDriver/BonDriver0130.zip
からの派生物になります。
よって上記ソースからの派生部分については大元のBonDriverのライセンスである、
>5.ライセンスについて
>  ・特に著作権は主張しませんが、下記運用に従うようにお願いします。
>
>  (1)「BonDriver.dll」をオリジナルのままアプリケーションに付属して配布する場合。
>
>    アプリケーションのバージョン情報及びドキュメントに著作権表示は必要ありません。
>    「拡張ツール中の人」もしくは「http://2sen.dip.jp/friio/」の記載をしても構いませんが任意です。
>
>  (2)ソースコードを流用しアプリケーションに組み込むもしくはライブラリとして再構成して配布する場合。
>
>    著作権表示については(1)に従いますが、必ず最低でも当該処理のソースコードを公開してください。
が適用されます。

上記以外の部分(おおむねUSBのコマンドに関わらない部分)については Public Domain として提供します。

また、ARIB STD-B25 仕様確認テストプログラムをリンクした場合(デフォルトでリンクします)、
BonDriverのライセンスに加えてARIB STD-B25 仕様確認テストプログラムのライセンスである
> ・ソースコードを利用したことによって、特許上のトラブルが発生しても
>  茂木 和洋は責任を負わない
> ・ソースコードを利用したことによって、プログラムに問題が発生しても
>  茂木 和洋は責任を負わない
>
> 上記 2 条件に同意して作成された二次的著作物に対して、茂木 和洋は
> 原著作者に与えられる諸権利を行使しない
が適用されます。

ソース中、.traceの付いたファイルを.trace無しのファイル名に変更してビルドする事により
エラー発生時のスタックトレース機能が有効になります。
このコードは http://0xcc.net/blog/archives/000073.html からの派生物となります。
ビルドにはlibbfd(binutils-dev)が必要になります。

その他:
このプログラムはAS-ISで提供されます。なにか問題が起こっても責任は持てません。

Special Thanks:
・拡張ツール中の人
・◆N/E9PqspSk / Clworld氏
・ARIB(資料の無料ダウンロードに対して)
・2chの「Linuxでfriio」スレッドの皆様
・2chの「Linuxでテレビ総合」スレッドの皆様

動作確認環境:
  CentOS 6.3 GNU/Linux
  Linux 2.6.32 SMP i686

About

黒/白Friio、HDUSシリーズ、Friio ExpressをLinuxで使う為の録画ツール(STZ版)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published