Last Update : 2008/Jul/20

最小1クリックで地デジ/BSデジタル放送を録画して、iPhone/iPod, PSP 用の動画ファイルを作成します。


デジタル家電の製作
ハードディスクレコーダ
目標
特徴
ダウンロード
起動
使い方
技術資料
F.A.Q.
今後の展開
謝辞
<<戻る

    注意:

    ライセンスは GPL2 になります。

    開発過程はこちらをご覧ください

    Main

    現在、開発途上ですので思わぬ不具合などがあるかもしれません。
    各自、自己責任で取り扱うようお願い申し上げます。

    • 現状の不具合

      1. Fx2Capを立ち上げて画面のリモコン操作でDT-6やBS-12チャンネルを操作すると、Fx2Capがエラーになって停止。そうでない場合もあり。
      2. リモコンのモード切替で「DT」にしてから「1」チャンネルを押すと「NHK衛星第一」と薄文字で表示。モードとTV局の矛盾が生じる。
      3. リモコンで、「Mode」の切り替えと表示は可能だが、TV局の表示が「チャンネルインホメーション」に出ないので、「NetWork」のチェックボックスも開かない。このため、リアルタイム視聴が出来ない。ただし、一度録画したチャンネルが有れば「NetWork」ボックスが開いて、録画したチャンネルの視聴が可能な場合がある。
      4. リアルタイム録画の場合は、ファイルネームに、TV局コードが表示されない。
      5. edit->setting->Extに.mpeg から.tsに変えてもiniファイルの方はtsになっているのですが起動してmanual recordで録画すると作成されるファイルの拡張子は mpg のまま。
      6. edit->scheduleでのスケジュール録画の際に別のどのチャンネルを指定してもリモコンch1がstationに固定されて録画されてしまう。
      7. マルチディスプレイ環境では起動不可。


  • 目標

    YDBC-30のハックはハックにとどまらず、先達の多大な努力により実用の域にまで達してきました。これに適当なソフトウェアを組み合わせて、自分好みのデジタル家電を製作します。また、そのための基盤を提供し情報を共有したいと考えています。

    • 開発者自身のユースケース

      録画した地デジ番組を外部デバイス(iPhone/iPod, PSP) で楽しむ。

      1. 就寝前に適当な番組をインターネットTVガイド楽天の番組表より選ぶ
      2. TS 抜きにより録画する
      3. 外部デバイスに転送したい(抜いたTSで後処理が必要なもの)番組にチェックする
      4. 外部デバイスに転送された番組を通勤中の電車で見る


  • 特徴

     本システムはチューナーユニットからのTS信号を直接 USBでキャプチャすることによりデジタルデータをそのまま保存します。すべての信号を保存することにより、ユーザがその信号を自由に加工することが出来ます。  

    • All In One 設計

        録画・視聴の両方の機能を装備

    • 連携機能

      1. 他のアプリとの連携

          PCならではの柔軟性を持つ。視聴にはVLC(ネットワークプレイヤー)や再エンコードには ffmpeg などを利用することにより、ユーザの今までのノウハウなどを最大限に利用できる。

      2. Web との連携

           各種 iEPG ファイルに対応しているので、関連付けにより iEPG の番組表をクリックすることにより、直接録画指定が可能。また、iEPG 出力できる各種のスケジュールソフト(e.g. TVスケジューラなど)との連携も可能。

      3. 外部デバイスとの連携

        iPhone/iPod や PSP などの外部デバイスとの連携により、動画を持ち出せる。


  • ダウンロード


  • 起動

    1. 動作環境

    2. 準備

      ChameFX2Cap の機能を最大限に生かすには予め各種の設定が必要になる。

      • 外部ファイルの準備
        1. チャンネル設定ファイル 現在、CSは仮対応。

            同梱の 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 での各地域の局名を表すので、各地域に応じた番号を記述すること。

        2. ポストプロセス用コマンドファイル

            同梱の ffmepg に対応したコマンドファイルに再エンコのパラメータを記述する。ffmepg の場所などを各環境に合わせて、正確に記述すること。

          1. PSP

            1. エンコード

              ffmpeg のパラメータ設定を行う。ここのサイトを参考にさせていただいた。

            2. ファイルの転送

              メモリスティックは外部ドライブとして認識されるため、エンコード後は単にそのファイルをメモリスティックにコピーすれば良い。予めメモリリーダライタのドライブレターと確認しておくこと。

            3. 記述例 (psp.cmd)

                        

          2. iPhone/iPod

            1. エンコード

              ffmpeg のパラメータ設定を行う。

            2. ファイルの転送

              調査中

            3. 記述例 (ipod.cmd)

                        

      • ソフトの設定

        Apps

        • ネットワークプレイヤー

          リアルタイム視聴ソフトとして、VLCを用いる。インストールした VLCのパスを予め通しておく。

          上記の設定とともに、VLCのオプションを設定しておくと使いやすくなる。

          rtp://@:1234 --width=360 --height=360

          解像度は各人の環境に合わせて設定すればよい。

          チャンネル切替時にストリームを開きなおす事ができる。開きなおす事により、今までのデータがクリアされて画像が安定する。開きなおすかどうかとその時間設定をおこなう。

        • ポストプロセス用コマンドファイル

          ポストプロセス用コマンドファイルの置き場所を指定する。

    3. 起動

      特にインストーラなどは無いのでダウンロード後、適当なフォルダで解凍し適合したハードウェアを接続後、ダブルクリックで起動する。


  • 使い方

    操作には大きく分けて、リアルタイム視聴録画がある。

    適切な関連付けが行われていれば、iEPG の番組表をクリックすると起動する。

    • 現在時刻が iEPG の時刻を過ぎている場合

      リアルタイム視聴のモードで、そのチャンネルで起動

    • 現在時刻が iEPG の時刻の前の場合

      その番組が予約される

    • リアルタイム視聴

      Main

      リアルタイム視聴にはネットワークでストリームを流し、 VLC でビジュアライズしている。Networkにチェックを入れると、設定してある視聴用のソフト(今回は VLC )が起動しする。

      VLC のメニューから ファイル→ネットワークストリームを開く で設定を確認した後、OK を押す。

      オプション設定している場合は、この操作は必要ない。

      あとはリモコンでチャンネルを切り替えればよい。

      チャンネルを切り替える場合は、「DT」・「BS」などを押してモードを確定した後にチャンネルを切り替える。

      • Tips
        • ブロックノイズの低減

          画面にブロックノイズが頻出するときは再度、ファイル→ネットワークストリームを開く を行う。今までのデータがクリアされて画像が安定する。

        • ストリームの選択

          BS1,2 は同じ TS にデータが載ってくるので、VLC の ナビゲーション→プログラム でストリームを選択する

        • iEPG からのチャンネル切替

          リアルタイム視聴中に iEPG に対応した番組表(例:gooなど)から選局することができる。ただし、予め関連付けしておく必要がある。

    • 録画

      • マニュアル録画

        • 録画開始

          Record

          右側にある Record ボタンとスピンボタンで設定した時間分だけ録画。

        • 録画延長 (録画開始後)

          RecAdd

          0より大きい数を入れるとその時間分、録画終了時間を延長。

        • 録画短縮 (録画開始後)

          RecSub

          0より小さい数を入れるとその時間分、録画終了時間を短縮。

        • 録画停止 (録画開始後)

          RecStop

          0を入力し、STOPボタンを押すと録画を終了。

      • スケジュール録画

        HowToSchedule

        1. スケジュールの入力

          スケジュールウィンドウの上部のスピンボタンで、録画開始時刻、終了時刻、地デジ(DT)、BS、チャンネルの設定を行った後に、Submitボタンを押す。すでに開始時刻が経過していたり、開始時刻と終了時刻がかぶっている場合などはエラーメッセージを表示する。実際の録画が開始/終了はされるのは、セッティングしている Pre./Post を合算した時刻になる。

        2. スケジュール確定

          メインウィンドウの Operation グループの Schedule をチェック。(最新バージョンではこの操作は不要

      • iEPG

        iEPG が取り扱えるようになっている。

        • ダウンロードしてから、ドラッグ&ドロップ

          iEPG が固有のファイル名を持っている場合に有効な方法である。

          1. 番組表サイトから、番組を選ぶ

            (現在、動作を確認しているのはインターネットテレビガイドgooテレビ番組)

          2. 当該番組をクリック
          3. iEPG ファイルをダウンロード
          4. ダウンロードしたiEPG ファイルをスケジュールウィンドウへドラッグ&ドロップ
          5. メインウィンドウの Operation グループの Schedule をチェック(最新バージョンではこの操作は不要

        • 番組表のiEPG 部分をクリック

          iEPG

           番組表サイトからの iEPG から関連付けて番組予約を行う。直接起動するため他のアプリケーションとの連携なども可能。連携により定期録画なども可能になる。

        • 他ソフトとの連携

           iEPG ベースで動作する他のテレビ番組検索ソフトなどと連携できる。現在、連係動作を確認したのは、TVスケジューラで当該番組をクリックすることにより、ChameFX2Cap に登録できる。

      • ポストプロセス

        番組のTS抜きを行った後に処理を行うかどうかの設定。StartTime の左側にあるチェックボックスをチェックすると予め設定してあったコマンドを実行する。録画したファイルの再エンコードなどのために装備した。


  • 技術資料

    • 技術基盤

      以下の技術をベースをベースにして、cusb2 へのアクセス用のラッパークラスとUIを装備。

      • デジ太郎作、cap_sts
      • Bon Driver
      • cap_sts sea

    • 開発環境

      • MacBook (BootCamp)
      • Windows Vista Business
      • Visual Studio 2008(VC++, MFC)

    • 内部構造
      • ChameFX2Cap

        二重起動の防止と受け取った iEPG ファイルをスケジュールウィンドウに投げる。

      • ChameFX2CapDlg

        cusb2 をラップしている CapTsFx2 クラスとそれを制御したり、ユーザとの対話を行うメイン部分である ChameFx2Dlg クラスがキモである。それ以外にスケジュールを管理するクラスなどもある。

        • ステートマシン

          内部のモードを「録画状態」「停止状態」に分けている。「停止状態」→「録画状態」への遷移は「現在時刻」が「録画開始時刻」と一致したときに行われる。「録画状態」→「停止状態」の遷移は「現在時刻」が「録画停止時刻」以上になると遷移する。マニュアルの操作はこの「開始時刻」「停止時刻」をセットすることにより行われる。

        • スレッド

          非同期で動作させたい場合に利用する。現在は時間の監視と表示に用いている。

        • メッセージ

          非同期に発生するユーザからの入力を処理する方法として、ポーリングとメッセージがある。

          1. リモコン

            リモコンウィンドウでどのキーが押されたかを親ウィンドウはスレッドなどで一定間隔で問い合わせる方法もあるし、メッセージを使ってリモコンウィンドウから親ウィンドウへメッセージを送る方法もあるわけだ。最初は前者を使っていたが後者へ変えた。

          2. スケジュール管理

            スケジュールの追加も同様で、追加、削除が行われたときにメッセージを発信する。

          3. iEPG のファイルの受け取り

            二重起動にならないようにしつつ、iEPG ファイルを現在、起動している ChameFX2Cap に送信する。

        • iEPG

          iEPG はインターネットの番組表で、中身は非常に簡単な構造のファイルである。番組表のWebサイトで若干の記述の違いが存在する。

          1. パーサ

             iEPG にはバージョン1、2がある。今回はそのどちらにも対応できるような小型のパーサを作り処理している。

          2. CTime, CTimeSpan

            iEPG では時刻の標記方法が、25:00, 26:00 などの24時以上で標記されている。これは MFC の CTimeSpan のクラスを用いることにより簡単に処理できる。この時間を足しこめば自動的に、一日追加されるので、「24」を引いたり、条件判断を入れる必要がなくなる。

        • UI

          マニュアルスケジュール予約の時間間隔を15分にした。これにより素早い時間設定が可能になる。

      • CapTSFx2

         今回のシステムで一番重要なのは、録画停止である。録画はかなり抽象的に定義されている。USB のデータをキャプチャして、別の場所へ持っていくこと。停止は文字通り、その流れを停めることである。B25を経て、mpeg-ts として出力される。出力先はファイルかネットワークであるが、これらの処理は適当にパラメータを設定すれば、CapTsFx2 クラスが行ってくれるので、ユーザは UI 部分に注力すればよい。

      • Channel

         リモコン部分。モードレスダイアログになっており、ユーザからのチャンネル変更を受け取りメッセージを ChameFX2Dlg に投げる。そのタイミングで、ChameFX2Dlg はリモコンの信号を読みにいく。この仕組みによりスレッドによるポーリングを行わずに、チャンネル情報を取得することができ、システムの負荷を減らすことができる。

      • Schedule

         スケジュールを保持するためのダイアログ。CListCtrl にスケジュール情報を持たせるが、例外としてスタート時間だけ静的な配列に保持している。これはソート行うためである。少しバグがある。

        • ソート結果


  • F.A.Q.

    トラブルについての原因を考えてみます。

    • 録画できない

      いくつかの原因が考えられます。

      1. 配線ミス

        データが流れていないのですから、録画のしようがないです。

        →配線確認か他のソフトで試す

      2. ファームウェアの不適合

        色々なソフトを試しているときに起こりやすいです。特にチューナーから FX2 に給電している場合はチューナーのプラグも抜いて、完全に放電させないと前のファームが残っている可能性があります。

    • リモコンウィンドウ使用時に落ちる

      ファームウェアの不適合


  • 今後の展開

    一緒に開発していただける方を募集しています。

    • 実装すべき機能

      少しずつ実装していきます。

      1. ストリームデータからの録画時間の延長
      2. メールでの録画設定

    • 将来的な可能性

      • 他環境へのポート
        • Linux

          特にチャンネルサーバとして使うには Linux は便利だと思います。比較対象にフリーオがありますが、既に Linux での動作報告がされています。また、Linux で括れば x86 のPCだけでなく、玄箱Pro や PS3 も視野に入ってきます。

        • Macintosh

          Macintosh ではあまりテレパソとしてのシステムがありません。洗練されたUIでオリジナルデジタル家電が出来れば素晴らしいですし、需要は少なくないかと。

      • 画像処理エンジンの組込み

        最近の薄型テレビはパネルの差異化だけでなく、搭載している画像処理エンジンの優位性について訴求するようになってきました。既にB25化までは成功しているソフトもあり、mpeg のストリームとなっているのでリアルタイム性が許せば画像処理を施すことが出来る様になります。これによって各種の「絵作り」を行えるようになります。企業や研究機関の画像処理プラットフォームとして使えます。特に PS3 や最新のグラボを積んだPCだと、その可能性はかなり高くなりそうです。


  • 謝辞

    下記の方に感謝します。(敬称略・順不同)

    • デジ太郎
    • アイコン提供者
    • 改造、拡張に励んでいる開発者
    • 2ch 当該スレ住人
    • BonDriver 開発者
    • cap_sts sea 開発者
    • ブログ、メールにてアドバイスをくれた方


頁の先頭
織田裕一へメール


Copyright (C) 1998 - 2008 TeamKNOx