半分自分用のメモです。
ハードウェア構成
http://wanko.cc/machines.html の signum が録画、ストレージ、エンコードのすべての役割を担ってる。
- 録画
- PT2 x 1 (地上波 x 2、BS x 1)
- 分波器とケーブル買えば BS x 2 にできるけど要らなそう
- PT3 x 1 (地上波 x 2、BS x 2)
- PT2 x 1 (地上波 x 2、BS x 1)
- B-CAS カードリーダ
ソフトウェア構成
- OS
- ArchLinux
- ドライバ
- レコーダ
- 録画システム kaede
- 自作 https://github.com/eagletmt/kaede
- しょぼいカレンダー をソースにしてレコーダの起動を行い、前処理を行ってから TS をエンコードキューに入れる
- 詳細は後述
- エンコーダ
録画システム
最近自作し直した。
- レコーダのチャンネルとしょぼいカレンダー上のチャンネルIDの対応表
- 録画したい tid
を設定しておくと、登録した tid の番組を片っ端から録画していくやつ。 「この回は MX で録ったから BS11 の回は録画しなくていいや」とかそういうことはやらないでとにかく録画する。
- updater
- 定期的にしょぼいカレンダーのデータを取得してローカルの番組 DB を更新し、時刻に変化があったら scheduler をリロードさせる (kill -HUP)
- scheduler
- 登録されてる tid の番組の開始時刻に recorder を起動する
- 前のバージョンはこの部分を atd でやってたけど、いろいろつらくなって timerfd で自分で実装した
- recorder の起動前後に好きな処理を追加できる
- 登録されてる tid の番組の開始時刻に recorder を起動する
- recorder
- 録画する
- recpt1 が出力した TS を tail -f して、B25 のデコーダと字幕抽出の2つにリアルタイムにデータを流してる
- まれに B25 のデコードに失敗するので、recpt1 でデバイスファイルから読み込んだデータを一次ソースとしてディスクに保存してから後続の処理に回したいのでこうなってる
今は recorder の前後の処理として、
- 録画前
- @eaglercd へ録画予告ポスト
- 録画後
を行ってる。
視聴
- PC
- iPad
その他
Chinachu がずっと気になっていながらまだ一度も試してない。