2005/05/22(日)MPC でのコマ戻し

2005/05/22 21:00 PC(全般)
Media Player Classic6.4.8.3でDivXの映像なんかをコマ戻ししようとするとMPCが落ちていた問題。

出力のDirectShow Videoを

 Overlay Mixer

から

 System Default

に変えたところ、DivXやXviDをコマ戻ししたときにMPCが落ちることが無くなった。

原因も何で解決したかも不明。

またMPCは標準搭載(?)のフィルタでデインターレース処理などをしてくれるが、これだとコマ送りは出来てもコマ戻しが出来ない。

コマ戻しをしたいなら、フィルタから

 MEPG PS/TS/PVA

のチェックを外す。インターレースはバリバリでるがコマ戻しは出来るようになる。インタレに関しては新たに使われるようになったフィルタの設定で、いじれるかもしれない。

ただどちらにしろ我が家のPCでは重すぎでコマ戻しはまともに動かないわけですが。

いい加減、DirectShowだとかMetrix値だとかフィルタだとかVFWだとかffdshowだとかAVISynthだとかきっちり整理しないといかんですね。

2005/05/22(日)XviDとDivXの傾向

2005/05/22 20:00 PC(全般)
前の記事を書く上で気づいたことをいくつか。

まずバージョンを明記しておいた方が良いな。
DivX 5.2.1
XviD 1.1.0-beta2の( http://uk.geocities.com/xvid2ch/)の奴を使用(koepi版、nic版はともにファイルサイズが爆発して上手く動かず)

・DivXの使い方
設定窓出して、
DivX R Certified Profileの選択->DivXR Certifiedのチェックを外す->エンコードモード=質を基本とするワンパス

に設定。Certifiedの設定を外さないとQB=Quality Baseにならない(CBRになる)。最初QBに出来ないのかと思った……

以下、

ビットレート:4=90%
エンコードパフォーマンス:標準
心理視覚モデル:チェックして高速に
インターレーシング:プログレッシブソース(aviutlでインタレ解除する)
量子化タイプ:H.263

あとは弄っていないが、大きな間違いはないと思う。それとインストール時に日本語にしないと環境で設定窓のサイズがおかしくなることあり。

・XviDの使い方
Profile:AS@L5
Quantization type:H.263
Global Motion Compensation:checked
B-VOPs:off
Target quantizer:4.00
Motion Search precision:Medium
VHQ mode:Mode Decition
Trellis quantization:checked

書いてないチェックは外し、数字はデフォルトのまま。

さて、大まかな傾向から言うとDivXは連続した画面間で見た目が良くなるような絵作りで、XviDは1画面が綺麗になるような処理がされているように思える。

ある1フレームを見比べたときにはDivXよりXviDのほうがきれいで、DivXは輪郭部分に多くモスキート状のノイズが出る。ところが連続して何枚かの比較を行うと、XviDはシーンチェンジで大きめのブロックノイズが出ることがある。

動画になると初見ではDivXよりXviDが綺麗に見えるが、何度も見返すとDivXのモスキートノイズには目が慣れてしまうのに対して、XviDのブロックノイズは目につくようになっていく。多分、アナログの画質に近似することがDivXのロジックなのだろう。ここらへんDivXがどんなソースでもそこそこ無難にこなすといわれる所以だろうか。職人軍団が結局「DivXでいいや」になるのもそんな理由かもしれない。

おそらくソースも考えた上でXviDを細かく設定した方が綺麗だとは思うが、失敗してちょっとしたブロックノイズにストレスをためるより万人から文句が出ないような映像の方が安心は出来るかもしれない。でも良く考えてみればなんかの閾値で変わる気がするな。シーンチェンジの設定ってこれに影響するのだろうか。

圧縮速度はデフォルトではXviDの方が若干早いのだが、この設定ではXviDの方が多分時間がかかる。特にGlobal Motion Compensationは物体が画面に入ってくるごとに動き解析しているようなので、エンコード時間も読めなくなる(が、スクロールが多い映像には相当効く)し結構時間がかかったようだ。

まあこれでもうしばらくエンコードする機会もなくなりそうだ……
DivX6も控えているし。

[参考]
XviDの使い方はここが詳しい
http://www.losttechnology.jp/Movie/xvid.html

2005/05/22(日)アナログビデオのデジタル化を考えてみた

2005/05/21 26:00 PC(全般)
VHSのテープがほぼ100本程度あって、こいつらがカビたり劣化したりで結構危ない状況になっている。今すぐというわけではないが、体制を整えて早いうちにデジタル化したい。ということでその算段を練ってみる。

まず、録画形式はMPEG2で確定。

理由としては昨今のDVDメディアの価格下落(現在\75/枚)により、メディア代の心配が少なくなったことと、計算時間を無視してもMPEG4形式へのエンコードがあまり上手くいかなさそうだという結論に達したため。

これは、デインターレースが問題になるためだ。基本的にほとんどのMPEG4はインターレースを乗せたままでエンコードするようには出来ていない(可能ではあるが)。そこで前処理としてインターレースを解除することになるが、このビデオ群のほとんどが実写やアニメが混じっており、定性的な24fps化30fps化では上手くいかない。唯一2重化はそこそこの出来になるが、結局MPEG2は再生側でインターレースを解除する仕組みが整っておりそれには敵わなさそうだ。

ということでXviDかDivXに傾いていたのが一気にMPEG2に戻ってきた。とりあえずデジタルにしておいて、将来エンコーダーやコーデックがもっと強力になってきた時に処理すればいい話だ。数年間で状況が大きく変わる世界なので、今後2~3年少なくとも劣化の恐怖から解放されればそれでよい。

さて、MPEG2にする場合のビットレートと形式をどうするかという問題がある。だいたい、アナログの汚いソースを元にすると、変な話だがデジタル側のビットレートは大きくしないと破綻しやすくなる。これはデジタル処理にとってアナログノイズが情報量として大きいためで、VHS3倍だからといってデジタル側の3倍相当で録画すると酷いことになる。

現在PCで録画しているのがPC-MV5DX/PCI(最近壊れたけど)の6Mbps/CBRでこの画質には基本的に満足。とはいえソースがそこそこ綺麗なので、これは何度かVHS3倍かなんかでソースを揃えてテストが必要になる。

平均4Mbpsだと4.3GBにテープの余裕分含む2時間超(4.3GB/4Mbps = 2.4hour)が入るのでちょうど良いところ。しかし、4Mbps/CBRだと破綻の不安もある。ので、

4Mbps/CBR
4Mbps(平均)-6Mbps(最高)/VBR
6Mbps/CBR

のそれぞれでテストが必要か。

仮にVHS 100本全てが120min/3倍だとすると、

600hour * 4Mbps = 1.02TB

と、ぴたり1テラバイト。

1.02TB / 4.3GB = 238.1(枚)
238 * \75 = \17,850

だが、うち半分程度は標準だと思われるので1万円弱程度だろう。つくづくメディアは安くなったものだ。

600hourはほぼ1月かかる計算になる。ハードウェアエンコ->DVDに焼くだけとはいえ、専用マシンがあった方が良いかもしれない。

これで頭の整理は終了。

2005/05/09(月)pochy → thunderbirdメール移行

2005/05/09 19:00 PC(全般)
結局一番簡単なのはOutlook Express(OE)を経由する方法らしい。

ファイラーでpochyの受信メールを全部選択して、OEに投げ込む。pochyの受信ファイルは.emlがついていないが、eml形式そのものなのでOEでちゃんと読んでくれるようだ。

そのあとthunderbirdでインポート。

確かに簡単だった。

とはいえ、.emlのインポートを拡張に頼ってるのはどうかと思うぞ、thunderbird。

2005/05/03(火)オーサリングあれこれ

2005/05/02 25:00 PC(全般)
MovieWriter4 体験版
TMPGEnc Editor 体験版
TMPGEnc Author 1.5体験版
TMPGEnc Author 2体験版
DVD Shrink

を使って録画した映画(2時間-5GB超)のオーサリングを1回やってみた。

まず総括! なんかおかしい!
色々なやり方が考えられるのだが、HDDの残り容量が足りないのか、マシンがおかしいのかプログラムがおかしいのかあっちこっちのルートが詰まる。最速、最簡単なルートを探したかったのだが、通るルートを探す羽目になった

やることは3つ。
・オーサリングそのもの
・先頭と尾っぽカット
・トランスエンコード(入りきらないので)

成功ルートは、
MovieWriter4(30min) -> DVD Shrink(25min)

オーサリング作業だけならMovieWriterが非常に早く、10minくらいで終わる。

こっから先は完了しなかったので見込み時間。

[MovieWriter4]
全部一遍に出来る。最も早そうなのだが途中で落ちる。25min?

[TMPGEnc Editor]
カットだけ。18min?

[TMPGEnc Author1.5]
カット(GOP)とオーサリング。20min? 不正なMPEGオーディオストリームです」と出て落ちる。

[TMPGEnc Author2]
全部一遍に出来る。1hour以上? 途中で「不正なサンプルフォーマットです」と出て落ちる。

備考。Author2は確実に1.5より遅い。

なんか色々致命的に過ぎるので、おそらくはうちの環境がおかしいのだと思う。まあ多分もうこれで、1年以上はオーサリングしない予感。少なくとももうちょっとCPUが速くないと……

2005/05/03(火)ハードウェアモニタ

2005/05/02 25:00 PC(Linux)
HDDが熱暴走に類似した症状を呈したので、今後が不安。

ハードウェアモニタを導入し、熱くなってきたらファンの回転を上げるという対処療法スクリプトを使って様子を見てみることにする。

[smartmontools]
すでにsmartsuiteというソフトが入っていて、
#smartctl /dev/hda
なんかでステータスが見られるのだが、温度に関しては87万度とか異常な値が出ている。調べてみると、smartsuiteはすでにメンテナンスされておらず、smartctlはsmartmontoolsというソフトに受け継がれたらしい。

smartmontoolsをインストールする。
smartmontoolsはtesting以降じゃないと無いので、
# apt-get install smartmontools/testing

# smartctl -A /dev/hda |grep -i temp
ほい正常動作。

[lm-sensors]
kernelが2.6系なので、testingじゃないとダメ。
# apt-get install lm-sensors/testing sysvinit/testing coreutils/testing libacl1/testing libattr1/testing
依存で引っかかると、
Sorry, but the following packages have unmet dependencies
などのメッセージが出る。依存関係は1つ1つで見てくのが普通? perlとlibc以外はこのやり方で大騒動は起こらないんだろうけど。今回は手動で全部見た。

さて入ったので、
# sensors-detect
で、使われているチップを見る。Ez!goはWinbondのW83627HFで確定(この後蓋開けて基盤上でも確認)。
モジュールがちゃんとロードされていれば、
# sensors
で見られるはずなのだが……
sensorが見つからないと怒られる。

カーネルフォルダに戻ってあれこれモジュールをコンパイル->ロードしてみる。
i2c-isa, i2c-810, i2c-algobit, i2c-sensor, i2c-chardev, w83781d(W83627HF互換)
とやってみたのだが、センサーはちゃんと見つけているようではあるものの
 "ERROR: Can't get IN0 data!"
 ……
と出てデータが出てこない。

色々調べて、最近のカーネルはW83627HF系の専用ドライバが出ているというのでカーネルアップ決断。
$ cd ~/kernel
$ wget     <a HREF="http://www.asahi-net.lkams.kernel.org/pub/linux/kernel/v2.6/linux-2.6.11.8.tar.gz" TARGET=_top>http://www.asahi-net.lkams.kernel.org/pub/linux/kernel/v2.6/linux-2.6.11.8.tar.gz</a>
$ tar -xvzf linux-2.6.11.8.tar.gz
$ cd linux-2.6.11.8
$ make menuconfig
で上記のもの(ただしw83781d->w83627hf)をモジュールではなくカーネル組み込みでごりごり追加し、
# make V=0
# make install
あーもう適当だ。ちょっとテンパってたのでカーネルの保存とか考えてないね。
再起動
# reboot

# sensors
w83627hf-isa-0290
Adapter: ISA adapter
VCore 1:   +1.50 V  (min =  +0.00 V, max =  +0.00 V)
VCore 2:   +1.28 V  (min =  +0.00 V, max =  +0.00 V)
+3.3V:     +3.28 V  (min =  +3.14 V, max =  +3.47 V)
……
ちゃんと表示されました! やった。

さらに、/sys/devices/platform/i2c-2/2-0290/の中を書き換えることでいくらかのコントロールが出来る。
echo 255 > /sys/devices/platform/i2c-2/2-0290/pwm1
でファンの回転がアップ。echoの値が2で通常。0でストップ。ただし、このマシンはBIOSでファン制御が強いのか20secくらいですぐ元に戻る。

で、やりたいことはHDDの温度が高いときにファンの回転をアップさせることなのでcron用の制御スクリプトを書く。最近はシェルスクリプトで失敗することが多いので、もうRubyでいいや。

/etc/cron.hourly/fancontrol_forHDD.rb
を作成し、
#! /usr/bin/ruby

$MAXTEMP=40

temp = `/usr/sbin/smartctl -A /dev/hda | grep -i temp`
temp = temp[/\s+(\d+)\s+\(Lifetime/, 1]

if $MAXTEMP < temp.to_i then
  (1..600).each {
    `echo 255 > /sys/devices/platform/i2c-2/2-0290/pwm1`
    sleep 1
        }
end
とした。40度を超えていたら10分回転アップを打ち続ける。cron.dの中がなんかちゃんと動いてないんだよな。ということでhourlyにしました。

さてこれでちゃんと動くかテストです。

[本家]
http://www2.lm-sensors.nu/~lm78/

2005/04/27(水)作業ログの取り方

2005/04/27 21:00 PC(Linux)
今の私の基本的なunix系OSのいじり方は、Windowsからputtyを使っての操作。
それを前提に、なんか色々なログ取り方法があるらしいので調べてみた。

・puttyのログ機能を使う
 今まではこれ。シェルによっては空白が飛んだり、テキストファイラーの画面は崩れるが、設定さえしておけば勝手に取ってくれるしファイル名にホストや時間もつけられるので管理が楽。

・screenのログ機能を使う
 screenメインで作業する人はこっちなのかな。screenは使わないので分からない。

・scriptコマンド
 ほとんどのUnix系OSにデフォルトで入っている。使い勝手は悪くないのだが、吐いたファイルにエスケープシーケンスなども混ざってしまうのでちょっと掃除するのが面倒。

・ttyrec
 scriptコマンドの上位版という感じなのだが、NetHackやFDの画面もカラーごと記録できる。しかし、記録ファイルは視認性がないし、再生の使い勝手は今ひとつ。停止、巻き戻し、無作業部ジャンプとかないとログという意味ではきつそう。遊んだり見せびらかす分には面白い。今度再生ソフトでも作るかね?

・vnc2swfとかx11rec
 Xのウィンドウを録画する。x11recなんかは意外とサイズ小(アニメgif)。

・劇場版 ディスプレイキャプチャー あれ
 Windowsのウィンドウを録画する。多分サイズでかいだろうなあ?(MPEG1?)

結論としては、やっぱりputtyのままひっぱることにした。ttyrec使ってみたけれども、まあ楽しいのだが作業ログとしてはいまいち。

#050503追記 前言撤回。puttyのログは相当化ける。これではちょっと使い物にならない。カットアンドペーストで頑張るか……
 

2005/04/16(土)cron.dに入れたファイルが実行されなかった理由

2005/04/16 22:00 PC(Linux)
cron.dに入れたファイルがきちんと実行されなかった問題。

なんと行末に改行が無かった所為だった。行末には必ず改行を入れること!
その他、debian限定? ファイル名は[a-zA-Z_0-9\-]+以外読んでくれないという噂。

確認。cron.d/内のファイルは編集後自動的に読み込んでくれるので、cronの再起動等の必要は無し。チェックは1分おき。

syslogを見るとloadはされているのに、何で動かないのか分からなかった……
OK キャンセル 確認 その他