最小1クリックで地デジ/BSデジタル放送を録画して、iPhone/iPod, PSP 用の動画ファイルを作成します。
注意:
ライセンスは GPL2 になります。 開発過程はこちらをご覧ください 現在、開発途上ですので思わぬ不具合などがあるかもしれません。 各自、自己責任で取り扱うようお願い申し上げます。
ライセンスは GPL2 になります。
開発過程はこちらをご覧ください
現在、開発途上ですので思わぬ不具合などがあるかもしれません。 各自、自己責任で取り扱うようお願い申し上げます。
YDBC-30のハックはハックにとどまらず、先達の多大な努力により実用の域にまで達してきました。これに適当なソフトウェアを組み合わせて、自分好みのデジタル家電を製作します。また、そのための基盤を提供し情報を共有したいと考えています。
録画した地デジ番組を外部デバイス(iPhone/iPod, PSP) で楽しむ。
本システムはチューナーユニットからのTS信号を直接 USBでキャプチャすることによりデジタルデータをそのまま保存します。すべての信号を保存することにより、ユーザがその信号を自由に加工することが出来ます。
録画・視聴の両方の機能を装備
PCならではの柔軟性を持つ。視聴にはVLC(ネットワークプレイヤー)や再エンコードには ffmpeg などを利用することにより、ユーザの今までのノウハウなどを最大限に利用できる。
各種 iEPG ファイルに対応しているので、関連付けにより iEPG の番組表をクリックすることにより、直接録画指定が可能。また、iEPG 出力できる各種のスケジュールソフト(e.g. TVスケジューラなど)との連携も可能。
iPhone/iPod や PSP などの外部デバイスとの連携により、動画を持ち出せる。
chameFX2Cap20080710_b25_bin.zip
chameFX2Cap20080710_b25_src.zip
チャンネル切替時の精度向上。
ChameFX2Cap の機能を最大限に生かすには予め各種の設定が必要になる。
同梱の channel.dt, channel.bs channel.cs を参考に各地方に応じたチャンネル設定ファイルを作成する。行数がワンボタンのチャンネルに対応しているので、空いているチャンネルは空白にしておく。(筆者の地域では空きチャンネルはない)ステーション名の隣に「,」を置き、その横に半角で3桁の番号を記述する。さらにその横に iEPG ファイルに記載されている station: を記述する。
channel.dt(例) NHK総合,011,DFS00400 NHK教育,021,DFS00408 TVKテレビ,031,DFS06038 日本テレビ,041,DFS00410 テレビ朝日,051,DFS00428 TBSテレビ,061,DFS00418 テレビ東京,071,DFS00430 フジテレビ,081,DFS00420 MXテレビ,091,DFS05C38 放送大学1,121,DFS00440
各ラインの最初の局名がコンボボックスの要素と iEPG の局名を同定するのに使われるので、正確に記述する必要がある。3桁の番号は BS, CS 選局時のリモコンの3桁入力に使われる。最後はコードは iEPG Ver.2 での各地域の局名を表すので、各地域に応じた番号を記述すること。
同梱の ffmepg に対応したコマンドファイルに再エンコのパラメータを記述する。ffmepg の場所などを各環境に合わせて、正確に記述すること。
ffmpeg のパラメータ設定を行う。ここのサイトを参考にさせていただいた。
メモリスティックは外部ドライブとして認識されるため、エンコード後は単にそのファイルをメモリスティックにコピーすれば良い。予めメモリリーダライタのドライブレターと確認しておくこと。
ffmpeg のパラメータ設定を行う。
調査中
リアルタイム視聴ソフトとして、VLCを用いる。インストールした VLCのパスを予め通しておく。
上記の設定とともに、VLCのオプションを設定しておくと使いやすくなる。
rtp://@:1234 --width=360 --height=360
解像度は各人の環境に合わせて設定すればよい。
チャンネル切替時にストリームを開きなおす事ができる。開きなおす事により、今までのデータがクリアされて画像が安定する。開きなおすかどうかとその時間設定をおこなう。
ポストプロセス用コマンドファイルの置き場所を指定する。
特にインストーラなどは無いのでダウンロード後、適当なフォルダで解凍し適合したハードウェアを接続後、ダブルクリックで起動する。
操作には大きく分けて、リアルタイム視聴と録画がある。
適切な関連付けが行われていれば、iEPG の番組表をクリックすると起動する。
リアルタイム視聴のモードで、そのチャンネルで起動
その番組が予約される
リアルタイム視聴にはネットワークでストリームを流し、 VLC でビジュアライズしている。Networkにチェックを入れると、設定してある視聴用のソフト(今回は VLC )が起動しする。
VLC のメニューから ファイル→ネットワークストリームを開く で設定を確認した後、OK を押す。
オプション設定している場合は、この操作は必要ない。
あとはリモコンでチャンネルを切り替えればよい。
チャンネルを切り替える場合は、「DT」・「BS」などを押してモードを確定した後にチャンネルを切り替える。
画面にブロックノイズが頻出するときは再度、ファイル→ネットワークストリームを開く を行う。今までのデータがクリアされて画像が安定する。
BS1,2 は同じ TS にデータが載ってくるので、VLC の ナビゲーション→プログラム でストリームを選択する
リアルタイム視聴中に iEPG に対応した番組表(例:gooなど)から選局することができる。ただし、予め関連付けしておく必要がある。
右側にある Record ボタンとスピンボタンで設定した時間分だけ録画。
0より大きい数を入れるとその時間分、録画終了時間を延長。
0より小さい数を入れるとその時間分、録画終了時間を短縮。
0を入力し、STOPボタンを押すと録画を終了。
スケジュールウィンドウの上部のスピンボタンで、録画開始時刻、終了時刻、地デジ(DT)、BS、チャンネルの設定を行った後に、Submitボタンを押す。すでに開始時刻が経過していたり、開始時刻と終了時刻がかぶっている場合などはエラーメッセージを表示する。実際の録画が開始/終了はされるのは、セッティングしている Pre./Post を合算した時刻になる。
メインウィンドウの Operation グループの Schedule をチェック。(最新バージョンではこの操作は不要)
iEPG が取り扱えるようになっている。
iEPG が固有のファイル名を持っている場合に有効な方法である。
(現在、動作を確認しているのはインターネットテレビガイドとgooテレビ番組)
番組表サイトからの iEPG から関連付けて番組予約を行う。直接起動するため他のアプリケーションとの連携なども可能。連携により定期録画なども可能になる。
iEPG ベースで動作する他のテレビ番組検索ソフトなどと連携できる。現在、連係動作を確認したのは、TVスケジューラで当該番組をクリックすることにより、ChameFX2Cap に登録できる。
番組のTS抜きを行った後に処理を行うかどうかの設定。StartTime の左側にあるチェックボックスをチェックすると予め設定してあったコマンドを実行する。録画したファイルの再エンコードなどのために装備した。
以下の技術をベースをベースにして、cusb2 へのアクセス用のラッパークラスとUIを装備。
二重起動の防止と受け取った iEPG ファイルをスケジュールウィンドウに投げる。
cusb2 をラップしている CapTsFx2 クラスとそれを制御したり、ユーザとの対話を行うメイン部分である ChameFx2Dlg クラスがキモである。それ以外にスケジュールを管理するクラスなどもある。
内部のモードを「録画状態」「停止状態」に分けている。「停止状態」→「録画状態」への遷移は「現在時刻」が「録画開始時刻」と一致したときに行われる。「録画状態」→「停止状態」の遷移は「現在時刻」が「録画停止時刻」以上になると遷移する。マニュアルの操作はこの「開始時刻」「停止時刻」をセットすることにより行われる。
非同期で動作させたい場合に利用する。現在は時間の監視と表示に用いている。
非同期に発生するユーザからの入力を処理する方法として、ポーリングとメッセージがある。
リモコンウィンドウでどのキーが押されたかを親ウィンドウはスレッドなどで一定間隔で問い合わせる方法もあるし、メッセージを使ってリモコンウィンドウから親ウィンドウへメッセージを送る方法もあるわけだ。最初は前者を使っていたが後者へ変えた。
スケジュールの追加も同様で、追加、削除が行われたときにメッセージを発信する。
二重起動にならないようにしつつ、iEPG ファイルを現在、起動している ChameFX2Cap に送信する。
iEPG はインターネットの番組表で、中身は非常に簡単な構造のファイルである。番組表のWebサイトで若干の記述の違いが存在する。
iEPG にはバージョン1、2がある。今回はそのどちらにも対応できるような小型のパーサを作り処理している。
iEPG では時刻の標記方法が、25:00, 26:00 などの24時以上で標記されている。これは MFC の CTimeSpan のクラスを用いることにより簡単に処理できる。この時間を足しこめば自動的に、一日追加されるので、「24」を引いたり、条件判断を入れる必要がなくなる。
マニュアルスケジュール予約の時間間隔を15分にした。これにより素早い時間設定が可能になる。
今回のシステムで一番重要なのは、録画と停止である。録画はかなり抽象的に定義されている。USB のデータをキャプチャして、別の場所へ持っていくこと。停止は文字通り、その流れを停めることである。B25を経て、mpeg-ts として出力される。出力先はファイルかネットワークであるが、これらの処理は適当にパラメータを設定すれば、CapTsFx2 クラスが行ってくれるので、ユーザは UI 部分に注力すればよい。
リモコン部分。モードレスダイアログになっており、ユーザからのチャンネル変更を受け取りメッセージを ChameFX2Dlg に投げる。そのタイミングで、ChameFX2Dlg はリモコンの信号を読みにいく。この仕組みによりスレッドによるポーリングを行わずに、チャンネル情報を取得することができ、システムの負荷を減らすことができる。
スケジュールを保持するためのダイアログ。CListCtrl にスケジュール情報を持たせるが、例外としてスタート時間だけ静的な配列に保持している。これはソート行うためである。少しバグがある。
トラブルについての原因を考えてみます。
いくつかの原因が考えられます。
データが流れていないのですから、録画のしようがないです。
→配線確認か他のソフトで試す
色々なソフトを試しているときに起こりやすいです。特にチューナーから FX2 に給電している場合はチューナーのプラグも抜いて、完全に放電させないと前のファームが残っている可能性があります。
ファームウェアの不適合
一緒に開発していただける方を募集しています。
少しずつ実装していきます。
特にチャンネルサーバとして使うには Linux は便利だと思います。比較対象にフリーオがありますが、既に Linux での動作報告がされています。また、Linux で括れば x86 のPCだけでなく、玄箱Pro や PS3 も視野に入ってきます。
Macintosh ではあまりテレパソとしてのシステムがありません。洗練されたUIでオリジナルデジタル家電が出来れば素晴らしいですし、需要は少なくないかと。
最近の薄型テレビはパネルの差異化だけでなく、搭載している画像処理エンジンの優位性について訴求するようになってきました。既にB25化までは成功しているソフトもあり、mpeg のストリームとなっているのでリアルタイム性が許せば画像処理を施すことが出来る様になります。これによって各種の「絵作り」を行えるようになります。企業や研究機関の画像処理プラットフォームとして使えます。特に PS3 や最新のグラボを積んだPCだと、その可能性はかなり高くなりそうです。
下記の方に感謝します。(敬称略・順不同)