Linuxにおけるデジタル放送録画環境

日々刻々と状況がかわるので現在のスナップショット

仕組み

  • 電波を受信する
  • デジタルストリームを取り出す
  • 記録する
  • 制御する

受信部

これはLinuxに限らないのだが、CATV経由で視聴している世帯では地デジもそこを経由して受信していることが多い。この場合、事業者によるがトランスモジュレーションかパススルーかによって状況がかわる。パススルーの場合はアンテナからと同じチャンネルで受信可能であるが、トランスモジュレーションの場合CATV事業者が用意した専用のSTBがそのデモジュレーションを担うので、PCで使えるチューナがそのまま使えない。
自宅の場合、地デジはパススルーだったが、BSなどがトラモジだったので3波チューナを使っても受信不能だった。

チューナデバイス

国内で一般的に入手可能でLinuxからサポートしているのあまり数がない

対応が一番進んでいるのはPT1/2とFriioだろう、これらのデバイスはDVB版と独自版でのデバイスドライバが作成されておりどちらも十分に利用可能。DVB版についてはLinus treeに取り込まれているので、最近の2.6.32などでは何もしなくても勝手に認識する。
それ以外にもMonster TV HDUSなどのTSストリームを取り出せるデバイスとそれらを制御する独自ドライバはあるが、前の2つにくらべると若干マイナーである。

DVB版ドライバ

DVB自体は欧州で採用されているデジタル放送の規格。北米におけるATSC、日本におけるISDB(地デジはこの中でも特にISDB-Tで規定されている)と同じような位置付け。
Linuxでは欧州のデバイスから先にサポートが始まった関係か、デジタル放送を扱うデバイス全般をDVBデバイスと呼んでいる。
考え方としてはアナログのビデオキャプチャカードがVideo4Linuxで共通のAPI化したようにデジタル放送受信デバイスも共通化して、ドライバとアプリ作成者の手間を省こうというもの。デジタル放送はデコードまで終えれば後は単なるビットストリームなので、アナログキャプチャよりも共通化できる部分が多くデバイスドライバも簡素に書ける。

にもある通り、DVBの現行仕様だけではISDBをサポートするのに難があったためAPI自体が拡張されて対応することになった。新しいAPIについてはまだサポートしているソフトが少ない。
実際にデータを取り出す側のAPIとしては、チューニングこそioctlを使ってデバイスファイルを操作しなければならないが、ストリームを取り出すだけならばcatでデバイスファイルから読み出すだけで電波を復調しただけの信号が取り出せる。

独自ドライバ

ソフト的な制御方法が明らかとなるととりあえず独自のキャラクタデバイスとして実装する方がいるので、各デバイス毎に野良ドライバがある。大抵の場合でユーザランドでの制御ソフトも同時に作られるので、ある意味こちらの方が使い始めるのは楽である。

ARIB文字

局情報やらEPGなどに含まれる文字情報はARIBが定義した外字を含むため、欧米のDVB対応アプリケーションではそのままハンドルできない。EUC-JPそのままではないので、iconvを挟むにしても若干処理を入れる必要がある。
そもそもARIB外字をグリフに含むフォントは数があまり無いようなので、画面表示まで再現するのは難しそう。

B-CAS

この辺はWindowsと状況は同じ。
何らかの方法でB-CASカードを調達し、汎用のスマートカードリーダで読み込み、B25のデコーダで解読する。解読ルーチンとスマートカード周辺は比較的ライブラリ化が進んでいるので録画ソフトへのクイックハックで組込むことも可能。
スマートカードリーダ自体は接触ICカードリーダというものを買えば、そのまま汎用ドライバで使えることが多い。eTax申請用として家電量販店で販売しているものを買えばよい。日立製やNTTComブランドで売っているものが定番。

ブラジル

日本ローカルの仕様と思われがちだが、実はISDB-Tはブラジルでも採用された。同じ放送規格を使っていても国内と違いB-CASによる変なスクランブリングもされていないので、非常にプレーンなチューナデバイスが発売されているようだ。
前述のISDB-Tサポートデバイスも多くがブラジル用のデバイスで、そこそこ数もでているようだ。
日本から購入するときにかかる費用といった点は不明だが、国内での市販されているワンセグチューナ並の大きさは魅力的。どこかの業者が輸入したりしないだろうか。
もちろん、別途B25の暗号化を解除する仕組みを用意する必要がある。

録画ソフト

それ以外のソフトでも録画部分を差し替え可能なら利用可能と思われる。MythTVなどもネイティブでDVB APIへ対応しているが、前述のS2APIへの対応はまだのようでそのままでは使えないようだった。