Javaでエンコードするソフトを作る(2)

まず構成としては
  • Movieインタフェース(読み込んだ元ソースからクラス生成
  • Soundインタフェース(同じく元ソースからクラス生成
  • staticなメソッドを持つUtilityクラス
かな。


1で言ってたカット用のウィンドウの話について。

問題になるのはFPS×時間だけのjpegをメモリに保持できるかということ。
まず大きさについては4:3ならニコニコサイズの512x384あれば分かるだろうからそれでいいだろう。16:9についても同様にニコニコサイズの512x288に取り合えずするとする。サイズ的にでかい4:3の方で考えていくことにする。
このときbmpだと1枚が512x384の32ビットフルカラーで【768KB/枚】になる。これが30FPSだとすると【23MB/s】で、1分だと約【1.4GB/m】になる。これは無理。
テストに使った画像だと一般的なJPEG品質80%で【40KB/枚】>【1.2MB/s】>【72MB/m】となり、30分だと約2.2GBとなる。64ビット環境なら問題ないけどそれでも正直かなりきつい。更に60FPSだと倍になる。
逆にメモリを1GB使うとするとこの品質だと約14分保持できる。この辺を考えてまずメモリ上だけでどれだけ変換に時間がかかるか、実際にメモリを食うかをテストアプリで試してみることにする。

取り合えず動画が読み込めないと話しにならないのでFMJを使ってみた。ちょっと古いけど取り合えずだからまあなんとかなるだろう。

と思ったらきつい。兎に角Javaでメディアを扱おうとしてる人が少なすぎてサンプルが無い。Javadoc読んで頑張るしかないか。

0 コメント:

コメントを投稿