メッセージ

2005年05月03日の記事

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/
OK キャンセル 確認 その他