ありや ◆/QGdlbZiAMのうp環境解説
2007.01.12 公開
2007.07.26 大改訂
2007.08.15 更新


私の環境の質問を時折受けますので、また、テクニックを独占する気もありませんので、ありやのうp環境を公開します。

以前は通常のアップローダーや普通のPV3拡張ツールなどを使用していたのですが、飽きたらずに専用環境を構築してしまいました。
うpの速さだけであれば、かなりのものだと自負しています。なぜ速さを追求しているのかというと以下の理由からです。

・時間と手間を短縮することで自分も内容を楽しめる
・キャプチャの取りこぼしが少なくなる
・実況ということでの速報性
・システムの研究
・自己満足

しかし、まだまだ取りこぼしがあり、満足しているわけではありません。逆に満足できてしまったら引退するかも知れませんw
なんの参考にもならないかもしれませんが、よろしくどうぞ。

1.デスクトップ

1-1.俯瞰

現在のありやの標準的なキャプデスクトップ画面です。



1-2.ハードウェア

実はハードウェア環境はゲームとオンライントレーディングをするために2006年の夏に構築しました。なので当時はハイスペックとも言えるパフォーマンスと大画面を整えました。現在となってはミドルスペックですね。安くなったQ6600辺りに換装しようかと考えていますが、他にも欲しいものがあるので後回しですね。

●PC
CPU:Intel Core2Duo E6600(3.6GHzへオーバークロック)
メモリ:4GB PC2-6400
VGA:ATI Radeon x1900XTX
キャプチャーボード:PV3
モニタ1:DELL 3007WFP
モニタ2:Fujitsu VL-200VH

●デバイス
Nostromo Speedpad n52

●チューナー
チューナー1:SHARP DV-ARW15
チューナー2:Panasonic DIGA XW30
(D端子切り替え器 Sony SB-RX300D)

1-3.ソフトウェア

PV3.exe v3.1.1
PV3拡張ツール 8.60 ありやカスタム(詳細は後述)
Live2ch
IE7
SeeZ(画像表示機能に強いファイラー)
Photoshop CS2(様々な画像加工)
TMPGEnc 4.0(動画エンコード)
aviutl(局ロゴ消しに多用 動画エンコード)
Giam(アニメーションGIF作成)
縮小専用。(画像縮小)
リネーム君
Moza(モザイク掛け もっといいツールがありそう・・・)
KMmacro(キーボードマクロ これでキーボード操作の高速化を実現しています)

1-4.キャプチャ方法

●リアルタイムキャプチャ(追っかけ再生時も含む)
詳細は後述しますが、ネットワーク環境とPV3拡張ツールをカスタマイズして使用しており、通常とかなり違います。
手順は
    1.PV3拡張ツールのカメラボタンをクリック
    2.Live2chにURLペースト、書き込み
という単純なものです。PV3拡張ツールのカスタマイズにより、通常行わなければならないサーバにファイルのアップロード、URLの取得という作業を手順1.の作業だけで完了させています。

●過去にキャプチャした画面、および複数のキャプチャの取得
カメラボタンを押したときはクリップボードに残るのはそのときキャプチャしたURLだけですので、カメラボタンを連打したなど一つ前やいくつか前の画像のURLを取得したいときには何らかのツールが必要になります。
通常の場合はサーバにアップロードという作業を行っているので、金糸雀式JLABscriptなどを使用しているサーバであればURLの取得はわりと簡単です。
しかし、ありや環境の場合は通常のアップロードを行っていませんのでこれは使えません。
なので、サーバのディレクトリのファイルをサムネイル表示するCGIを独自開発する必要がありました。
1-1.にある右下のWebページがそれです。これによりリアルタイムキャプチャより少々時間がかかるものの過去画像および複数のURLも比較的容易に取得することができるようにしました。
もちろんこのCGIは金糸雀式JLABscriptのインターフェイスを参考にしています。コードは全く異なります。



2.ネットワーク環境

2-1.論理環境

解説に必要なもの以外の構成は割愛させていただきます。
論理環境というのは実際にはVMWareで稼働させているものがあるからです。

WebサーバはApacheで動作しています。標準的な設定です。

2-2.サーバ環境

画像配信サーバはXeon2.80GHz×1,MEM 3GBのWindows Server 2003 R2 E.E.上のVMWare内のFedra Core 5で動作するApacheで動作しています。
なんのことはありません。昔のメインマシンのお下がりです。

光回線を使用しているのですが、高負荷時は転送速度がやはり追いつきません。回線速度についてはこれまで劇的に倍々で速くなってきましたが、これ以上は当分望めそうもないので、しょうがないですね。
速度とは別に処理能力の問題もあります。mod_proxyなどを使用して処理を改善しようと試みたこともあったのですが、返ってパフォーマンスが悪くなってしまいました。
また、LinuxではなくWindows Server上でIIS+ISAなども試みたことがあり、現在の構成よりパフォーマンスは良いのですが、画像配信とは関係ないところでの事情により使用していません。


3.PV3拡張ツール 8.60 ありやカスタム

3-1.概要

通常のPV3拡張ツールは静止画を保存するとそのファイルの絶対パスがクリップボードに格納されます。
通常であればこのパスをアップローダーに貼り付けてアップロードしてそこに生成されたURLを再度クリップボードに取得する必要があります。

ありや環境ではカメラボタンを押すことがすなわちアップロードにあたるので、クリップボードに格納されるのは絶対パスよりもURLの方が都合がいいわけです。
ありがたいことにPV3拡張ツールにはソースが付属しています。改変は容易でした。
クリップボードの文字列格納の部分のコードにちょっと手を加えるだけでした。

3-2.ありやカスタムのコード

拡張ツールの作者もコードを公開しているので、ありやがどんなカスタマイズをしているかもコードを公開するのが礼儀だと思いますので肝の部分を公開します。
(たいしたことではないですが・・・)

PV3OverLay.cpp
const BOOL CPV3OverLay::SaveBmpToFile(HBITMAP hSrcBMP)内



//ありやカスタム
char szUrl[1024] = {'\0'};
char *szChangePoint;
char sAfter[1024];
int i = 0;
char SeachText[1024] ="\\";
char Rep_Text[1024] = "/";

wsprintf(szUrl,"http://a-re-ya.ddo.jp/~areya/up%s%s.jpg\n",szDir,szFile);

//if(szChangePoint != NULL)
while(strstr(szUrl,SeachText) != NULL)
{
szChangePoint = strstr(szUrl,SeachText);
strcpy(sAfter,szChangePoint + strlen(SeachText));
i = strlen(szChangePoint);
szUrl[strlen(szUrl) - i] = '\0';
strcat(szUrl,Rep_Text);
strcat(szUrl,sAfter);
}

CopyString(szUrl);

// Bitmapオブジェクトをファイルに保存。
//CopyString(szPath); //ありやコメントアウト
pSaveBitmap->Save(wcPath, &EncoderClsid, &EncoderParams);

このようにコード内に直接URLを埋め込むなど稚拙なコードです。
(現在はもうちょっと変っていますが、めんどくさいのでVer.8.24時ベースのときのまま)

さらに自分用に以下のカスタマイズを行っています

・サブディスプレイでも表示できるようにしている
・拡張ツールのツールバー非表示時に自動的にOSDが表示されてしまうがこれをOFFに(煩わしいのでw)
・映像メモリを開いたときにキーボードのKキーで、36フレーム(0.6秒)戻るようにしている(人によると思いますが、どんくさいありやは欲しい画面を見てからこれくらいラグがありますw)
・マウスホイールを音量調節から、映像メモリを開いたときのフレーム移動にすげ替え
・静止画キャプチャのホットキーを押しやすいESCキーにも割り当て
・その他


4.マクロ

4-1.二種類のマクロツール

後述の局ロゴ消しをやっていたのですが、これがえらく手間が掛かります。ほんの3〜4ステップなのですが局ロゴがない場合に比べて10倍くらい時間も手間も掛かります。これを解決するため当初は拡張ツールの機能としてロゴ消しを追加する方向でやっていたのですが、うまくいきませんでした(後述)。そこでKMacroというキーボードマクロを導入しました。これにより劇的に手間と時間を短縮できました。また局ロゴなし時も時間と手間を短縮することができました。

さて、マクロを導入するとあまりに便利だったので、いくつかのオペレーションをワンキーで登録することで、単にキャプチャからアップロード以外の部分もマクロ登録して行きました。例えば、アニメをキャプチャする場合はここだ!と思ってからキャプチャボタンを押しても間に合うのですが、実写系はそうは行かず、映像メモリを開いてベストショットを探す必要があります。などなど、オペレーションの種類が増えていき、たくさんのマクロキーを設定していきました。

するといろいろ不都合が出てきます。動作を迅速にするためホットキーはワンキーが理想ですが、本来のキー操作で思わぬ動作を起こすようになったのです(「1」や「TAB」キーにマクロを登録してればそうなるのは明らかですねw)。そこで、ゲームをするために買ったNostromo Speedpad n52の登場です。これは現在はもう製造していませんが、かつては最強マクロツールでしたw。なんせハードなのでどんなゲームでもマクロが組めてしまうのです。詳細は割愛しますが、複数のマクロを動かすのはもってこいのデバイスです。現在は他社からもう少しいいのが出ているようです。

ソフトウェアマクロとハードウェアマクロとソフトウェアカスタマイズによりミスの少ないマクロ動作を実現しています。

ありやは実は右半身が不自由です。交通事故で頭を打って以来、右手で細かく素早い動作ができません。といっても日常生活にはほぼ困らず、見た目には全く判らないようで、よくぽろぽろものを落としたりする激しく不器用でドジっ子に見える程度ですw。右利きなので字を書くのも苦手で、こうして長い文章を書けるのもPCのおかげです。また、実況時はタイプ速度が他の人に追いつかないので、それがキャプに走らせたのかも知れませんw(ホントか?)。マクロはさらにそれをブーストしてくれるわけです。

4-2.使用しているマクロ

ありやは以下のマクロを組んで運用しています。すべてワンキーで動作します。

1.画面をキャプチャし(局ロゴ有りの場合にはAviUtlに画像を読み込みクリップボード出力して、それをJpeg保存して)サーバに保存した画像のURLを取得し2ch専用ブラウザにURLを貼り付け、書き込みボタンの上にマウスポインタを置く、後はクリックするだけの状態にする
2.映像メモリを開いて、0.6秒バックさせる
3.映像メモリが開いた状態で使用することを想定して、1項目目にキャプチャ後1秒分(60)フレーム移動する機能を追加したもの
4.3項目目と同じ動作で5フレーム移動するもの(アニメgif作成用)
5.Ctlr+V(貼り付け)動作
6.2ch専用ブラウザの書き込み欄を消去する(貼り付ける画像がボツの時用)

5.局ロゴ消し

5-1.局ロゴとその消し方一般

地デジのNHK,TBSやテレビ東京、BS各局などは、画面右上にその局の半透明ロゴが表示されています。
すべての局が半透明ロゴを使用しているので、計算によりこれを消すことができます。
動画では良くある手法なので、ご存じの方も多いかと思います。
他の方法もあるかも知れませんが、Aviutlで動画のロゴを消すことができます。

ありやの場合は下記の手順でBMP入力・JPEG出力を行っています。

5-2.局ロゴ消し手順

事前準備として局ロゴデータの作成が必要になります。
ロゴデータは解像度ごとに作成するときれいに仕上がります。

1.PV3拡張ツールにてBMPで画像取得。
このとき、取得サイズを「入力解像度と同じ」にするときれいに仕上がります。これはAviutlでロゴを作成するときに動画で作成するわけですが、このときのソースはPV3であればそれと合わせるためです。他のキャプチャボードであれば違うかも知れません。
BMP画像は数MBになるために、ありやの場合はレスポンスを速くするためRAMディスクに保存しています。

2.出力されたBMPをAviutlで読み込み
普通に保存されたBMPファイルを開きます。大量に一括処理したい場合はBMPファイル名を連番にする必要があるのでその場合はリネームツールで処理するといいでしょう。ありやの場合は「リネーム君」というフリーソフトを使用しています。

3.Aviutlから「現在のフレームの出力イメージをクリップボードにコピー」でクリップボードにロゴなし画像を出力します。
Aviutlで作成したロゴデータを適用した状態で上記作業を行うとクリップボードにロゴなし画像が出力されます。

4.画像ツールでクリップボードから画像を取りだし、JPEG保存します。
ありやはこの作業は自動化しています。あるツールを使用しているのですが、内緒ということでw


キーボードマクロソフトにより上記手順をワンボタンで1秒以内に短縮することができました。
以前は10秒近く掛かっていたのですが、ロゴ消ししないときに比べるとそれでも少し遅いですが、以前と比べると劇的に速くなりました。

6.局ロゴ消しのさらなる試行錯誤

現在、ロゴ消しの試行錯誤は上記の手順とマクロの導入でほぼ満足しているので、意欲がそがれていますが、気が向いたらまた推し進めます。

6-1.AviSynthと併用計画

PV3拡張ツールにはAvisynthのプラグインが付属しております。
これによりAviUtlやその他の動画編集ツールにフレームを転送できます。
AviUtlに直接転送することによってBMPファイルの書き出し、AviUtlでBMPファイルを開くという作業を省略できます。
しかし、現在のPV3拡張ツールでは、オーバーレイのサーフェス(RGB)を転送するので、画像が劣化します。
そこで、PV3拡張ツールの高画質モードと同じ映像メモリから取り出して転送するという改造を行ってみたのですが・・・
動きませんでした。
デバッグが困難なため、コードが問題なのか、単に処理が重すぎるのか不明なのですが、おそらく拡張ツールの作者の方もムリと踏んで実装していないのでしょう。
現在は開発を凍結しています。

6-2.PV3拡張ツールにロゴデータを直接読み込み(実現できれば究極)

AviUtlなどでよく使用されているロゴ消しデータを直接PV3拡張ツールで読み込みYUY2→RGB変換の間に噛ませることによって、ロゴを消去できるはずと思って開発を進めてきました。(5日程度ですがw)
しかし、私の色変換に関する知識不足のため頓挫しております。
元フレームにどのような数式を持ってロゴデータを充てればうまくロゴが消せるのか解らず、うまくいかないのです。
ヒントはそこら中に転がっているのですが、マクロで解決という安易な方法である程度満足してしまったので、現在気力が無い状態ですw
しかしこれが実現できれば、マクロでは時折発生するミスや時間的にも1秒程度短縮でき、究極の静止画キャプが実現できるはずです。
変換式さえ完成すれば、簡単に実装できるのですが・・・このパズルを解くのが面倒くさいw

現在環境で満足しなくなれば、また開発再開に触手が伸びるでしょうw
完成の暁には、ソース公開かバイナリ公開か何らかの方法で公表します。
PV3拡張ツールの作者が実装してくれれば、一番いいのかも知れませんが、どうなんでしょうか。

7.画質について

画質について、特別なことはしていないと書きましたが、質問がやはりありますので、書いておきます。
ごく普通のことしかしていません。

7-1.ハード環境

ハードウェアは前述しましたが、主なチューナーはSHARP DV-ARW15を使用しています。ケーブルはMONSTER CABLEの3mを使用しレコーダとPV3を直結しています。
(Panasonic DIGA XW30はケーブルはAudioTechnicaのDVDLinkケーブルの2mと5mを使用し、その間にD端子切り替え器Sony SB-RX300Dを挟んでいます)
PV3はアナログキャプチャボードなので、高品質なケーブルをなるべく短い伝送距離で電気的ノイズが少ない場所で使用するのが理想なのでしょう。
しかし、ありやの環境では部屋の物理的レイアウトから上記のようなレイアウトでケーブルがスパゲッティ状態のかなりノイジーな環境での運用となっています。
(XW30もモンスターケーブルに変えようと考えています。それくらい効果は絶大でした)
ケーブルによる比較画像も気が向いたらうpしようと思います。

チューナーによる画質もどれがいいとか諸説ありますが、一般的な印象ではXW30<ARW15のようです。
しかし、ARW15はレコーダの操作を行うと必ずOSDが表示されるという欠点があります。
リモコン操作で速く消すことはできるのですが、XW30のように全く表示させなくすることはできません。
なので、気がつくとキャプチャ画面にOSDが映り込んでいることがあります。
リアルタイム視聴時も番組冒頭でOSDが表示されてしまいます。
これが結構煩わしく、画質はいいのですが、難ありといったところでしょうか。
ありやは、ARW15とXW30を適当に使い分けています。

7-2.QuantizerMatrix

これもPV3ユーザであれば常識かも知れませんが、PV3Quantizerにより量子化テーブルをALL16にしています。
効果の程は・・・

7-3.利得調整

これは個人的な好みもあり、そういった意味でなかなか難しいですが、ごく標準的な方法で調節しています。
Aviutlの波形表示プラグインの色ベクトル表示でフジテレビのカラーバーで調節しています。
以下の通りです。(XW30のもの)

8.最後に

以上がありやキャプチャ環境になります。
一切の外部リンクを張っていないのでご不便をおかけするであろうことをお詫びします。
もしかしたらこのドキュメントを読んで質問されたい方もいるかもしれませんが、2ちゃんねるの実況などで捕まえてください。ご面倒をお掛けします。

最後になりましたが、PV3拡張ツールを始め、便利なソフトウェアを提供されている作者の方々に感謝いたします。