2010年3月19日金曜日

JMFを用いた動画の連続記録について_1

 画像処理より何より、先ず実態調査が重要なので
JMF(Java Media Framework)を用いて連続的に動画を記録しようと考えました。
 市販のHDDレコーダーを使えばそれでいいのでしょうが
比較的高価だし、重たいし、で現場に持っていくのなら
ポータブルのHDDとかの方が断然いいよねぇと思いましたので
JMFで作ってみたんです。

 結果は惨敗。

 やったことは、1~1.5時間ぐらいの長さのH263のmovファイル(QuickTime)を
延々と作り続けるだけなのですが
最初はいいのですが、半日~数日立つと、
Unexpected Errorだか何だか、Native Codeでエラーが出た
といった内容のエラーが出て、プログラム全体が落ちてしまいます。

 このエラー、原因分からず、私には対処の仕方がわかりませんでした。
決してOutOfMemoryとかでは無い様なのですが
どうもスペックの低いパソコンほどエラーが出るまでの時間が短いので
ハード的な原因(例えば読み込み、書きこみ時のエラー等?)に起因するのでは?
と考えています。
でも良く分かりません。
このプログラムはDataSorceを何回もコピーして使っているのですが
もしかしたらこういうやり方の回数が決まっているのかもしれません。
(でも短いファイルを大量に作っても大丈夫なので回数でもないよなぁ。
 やっぱり全くわかりませんなぁ)

 でこの件、仕方なく
プログラムが落っこちてもそのプロセスだけ落ちてね
という意味合いで、ProcessBuliderを使って外部プロセスとして
動画保存プログラムを起動させることとしました。

こうすると、ファイルとファイルのつなぎ目に4~5秒ぐらいの間が空いてしまいますが
なんとか落ちずに1週間は稼働し続けています。
今現場に持って行ってもらってますのでもっと長期でいけるか楽しみです。

 なお、このプログラムを使ったPCは
DELL社製のCore2Duoの2GHzぐらい
メモリは 1GBのパソコンでした。

あとでソースコードをのっけようと思いますが
バックアップとらずに現場に持っていったんでまた今度。