2010年4月7日水曜日

ホームサーバー本格入れ替え~その7

ちょっと脱線してしまったので、話を戻します。


本当は、MediaCoder奮戦記を書こうかと思ったのですが、その前に。


 


ホームサーバー本格入れ替え~その5 - Almost in Dreamlike


 


で書いた、我が家の録画システムがよくわからんとつっこまれました。


まあ、私が使うだけのものなので、わからなくても言い訳なのですが、なんとなく説明したくなったのですることにします。


キモは、録画後に勝手にH264/AVCに変換して、勝手に規定のフォルダにしまい込んでくれるスクリプト「AutoCoder.vbs」です。


この適当に作った他人には見せられないソースのスクリプトには、以下の特徴があります。


 


・定期的に新しい録画ファイルがないか自動チェックし、新しい録画ファイルがあるとそのファイルからHD抜きをして変換する。



・HD抜きだけも可能。



・ソース録画ファイルの削除・退避の指定も可能。



自動振り分けリストで、ファイル名から保存先や変換用プレセットを判断して自動処理可能。



・変換ファイルをPMPやメモリーカードへ簡単にコピーできるバッチファイルを自動生成可能。



・バッチファイル内で、PMPにコピー後、元ファイルの削除やバッチファイル自体の削除も可能(これによりバッチファイルの一覧を未視聴リストとして利用可能)。



・動作の細かいログの書き出し可能。



・Twitterへの変換処理報告可能。


 


ちょっと図解したいと思います。



image

 

1)録画予約

録画予約は、ウェブブラウザから行えます。

家内はもちろん、外からも可能。

携帯電話からも予約できますので、いつでも対応できます。

 

ちなみに録画予約すると、Twitterでそのことを報告してくれます。

 

これらの仕組みは、すべてTvRockというすばらしい高性能ソフトがやってくれます。

作者様は神様ですね。感謝して使わせていただきます。

 

録画サーバーであるServer2には、地デジ×4チューナー、BS/CS×2チューナーがつけられているので、私の場合はほぼ「ブッキングして録画できない」ということはありません。

 

 

2)録画image

録画されたデータは、Server2のHDD(500MB×2/RAID0)に保存されます。

ちなみに、システムは別の160GBのHDD(Cドライブ)に入っているので、約1TB(Dドライブ)はすべて録画データの一時置き場として使われています。

 

その際、録画完了時に録画ファイル名と同じファイル名で拡張子が「.tx」になった0サイズのファイルが生成されます(TvRockの終了プロセスで作成させる)。

これが録画完了のフラグファイルになります。

 

 

3)録画ファイル名取得  image

定期的に、Server1で動作させたオリジナルのVBScript(以下、AutoCoderと呼ぶ)が、「Server2\D」を検索にいきます。

 

もし、そこに.txファイルがあれば、AutoCoderがそのファイル名をすべて取得します。

 

そこまで成功すると、AutoCoderは「自動振り分けリスト」と呼ばれるファイルを読み込みます。

AutoCoderは、リストをチェックして、リスト内の名前と部分一致すると、リスト内の設定を適用します。リストには保存先や変換の設定がかけるので、「アニメはアニメの設定で変換してアニメフォルダに」「ドラマは変換しないでドラマフォルダに」という振り分けが可能です。

 

 

image

4)スプリット処理

AutoCoderは、取得したTXファイルと同名「Server2\D」にあるTSファイル名を引数として、「TSsplitter」をキックします。

 

通常、TSsplitterの-SEPオプションでCM部分と本編部分のようにTSファイルが分割され、Server1のHDDに保存されます。

 

Server1は、160GBのシステムドライブ(Cドライブ)と、2TB×3のRAID5ドライブ(Dドライブ)で構成され、Dドライブは動画・音楽・写真用のNASを兼用しています。

そのDドライブの作業用フォルダに、分解されたTSファイル(ファイル名の後に、「_HD」「_HD-1」など付加される)は保存されることになります。

AutoCoderは、作業用フォルダの中で最もサイズの大きいTSファイルを本編として、そのファイル名を取得します。

HD抜きで終わるときは、取得した名前から「_HD」等を抜いた元の名前に戻して、規定のフォルダに保存し、次の録画ファイルの処理に移ります。

 

 

5)変換処理

AutoCoderは、作業用フォルダの中で最もサイズの大きいTSファイルを本編として、そのファイル名を一時的に作業用のファイル名「_mctemp.ts」にリネームします。

これは、変換に使用するMediaCoderが日本語パス名でバグる可能性があるからです。

その後、「_mctemp.ts」を引数に、MediaCoderをキックします。

MediaCoder終了後、生成された「_Mctemp.mp4」を「_HD」等は抜いた元の名前にリネームします。

そして規定のフォルダに移動させます。

 

 

6)ソース処理

AutoCoderは、ソースとなった「Server2\D」内のTSファイルを規定の動作通り、削除、もしくは退避用に設定したフォルダへ移動させます。

また、同時に同所にあるTXファイルの削除、作業用フォルダ内ファイルの全削除を行います。

 

 

7)バッチ生成

AutoCoderは、規定のフォルダに、MP4ファイルと同じファイル名のバッチファイルを作成します。

このバッチファイルは実行することで以下の動作を行います。

 

1)対象MP4ファイルのコピー

コピー先は、デフォルトを設定可能だが、ファイルセレクタが出るのでそのたびに別の場所へもコピー可能。

2)コピー元ファイルの削除

コピー元ファイルを削除するかどうか、ダイアログで選択できる。

3)バッチファイル自身の削除

実行中のバッチファイル自身を削除するかどうか、ダイアログで選択できる。

 

 

8)Twitterへの報告

AutoCoderは、対象ファイルの変換が完了したことをTwitterクライアントをキックすることで通知することができます。

 

 

こんな感じの動作になります。

まあ、実はTwitterの部分以外はほぼできています。

ただ、MediaCoderの変換設定がなかなかうまくいかず&決まらずに、まだ実運用にまで行っていません。

でも、早く運用しないと、HDDがすごい勢いでたまってきてしまいます。

なんとか今日中には運用したいな......と思っています、はい。


2 件のコメント :

  1. BLOGに全力出し過ぎw

    返信削除
  2. 本気になっていませんよ。
    途中で就業時間になって最後の方は図を入れていないしwww

    返信削除

楽天市場:おすすめ