限定AVI/GIFアニメビューワー TMotionAx Ver.1.0説明  (2008.7.19 新規作成)

能書き
 こんにちは、No.046です。
 私はもう11年(2008年7月現在)に渡りWILLCOM(当初DDIポケット)のPHSを使用していますが、WX320Tに機種変更し、初めてJAVAアプリケーションが動く環境を入手しました。
 そこで何を作ろうかな〜と考えたところ、WX320Tでは未サポートな動画再生機能を、やれる範囲で作ってみるか!と思いました。
 携帯用JAVAアプリ開発の初心者なので、作りはなってないかも知れませんが、一応動くものができたので公開します。よければ試してみて、感想などいただけると幸いです。
 まあ、このソフトをWX320Tで使って別に何するわけではありません。単なるプログラミング趣味です。


仕様について
 限定AVI/GIFアニメビューワー TMotionAXは、以下の仕様としています。

ソフトウェア名
TMotionAx
モジュール名 TMotionAx.jad
TMotionAx.jar
動作環境 MIDP2.0
ただし、WX320Tでのみ動作保証
主な機能 (1)Windows AVIファイルの再生。ただしCODECはMotion-JPEGのみ対応。
(2)GIFアニメーションファイルの再生。
(3)静止画表示(JPG, GIF, PNG)。
(4)おまけ … 連番静止画(JPG)の連続再生。
制限事項 音声は出ません。WX320TのJAVAからはMIDIしか再生できないようなので…。
その他 作りがへぼなのかわかりませんが、遅いです。



使用方法
 まずは再生するファイルを用意してください。それをWX320TのSDカードまたは本体メモリに格納します。
 なお、サンプルのAVIファイル等もダウンロードできるようにしていますので、ご利用ください。

 TMotionAxを起動すると最初に「データフォルダアクセスを許可しますか?」と聞かれますので、「Yes」を選択してください。
 写真1が、TMotionAxの画面(例)です。後は直感的に操作できると思います。
 「FPS」については後述します。

図1

写真1 TMotionAxの画面



解説
 主な機能について概要を解説します。

(1)基本機能

No.
機能
説明
1 Windows AVIファイルの再生 Windows AVIファイルを再生します。音声はでません。
・最大サイズ;幅240×高さ276ドット
・推奨サイズ;幅176×高さ144ドット以下
・CODEC ;Motion-JPEGのみ

TMotionAxが再生できるAVIファイルは、CODECにMotion-JPEGを使用したものに限られます。フリーのMotion-JPEGエンコーダーはなかなかないのですが、よいフリーソフトがありました。
 ttp://www.forest.impress.co.jp/article/2006/12/14/wiivideo.html
  AVI/MPEG/WMV/MOV動画を“Wii”で再生できるように変換「Wii Video 9」

WX320Tで再生したい動画を、176×144ドット程度に縮小します。その際のフレームレートは5FPS(5コマ/秒)程度が適正です。映像サイズを小さくすれば、フレームレートをあげられますが、小さくて見にくくなります。また、映像サイズを最大(240×276)にすると、フレームレートは3FPS(3コマ/秒)程度しかでません。
TMotionAxは音声の再生はできませんので、メモリ節約とフレームレート向上のために、音声を抜いてAVIファイルを作成されることを推奨します。
それから、Wii Video 9にかけて、Motion-JPEG CODECのAVIファイルを作成してください。
2 GIFアニメーションファイルの再生 GIFアニメーションファイルを再生します。
GIFアニメは、ブラウザに埋め込めばWX320T標準でも再生可能ですが、ファイルサイズの制限がかなりきついです(せいぜい1MBくらいまで)。TMotionAxは数MBの大きなGIFアニメでも再生できます。
・最大サイズ;幅240×高さ276ドット
・推奨サイズ;幅176×高さ144ドット以下
3 静止画表示 拡張子が JPG, GIF, PNG の静止画ファイルを表示します。
単純に表示するだけですので、拡大・縮小とかいった機能はありません。
また、ファイルサイズは100KB以下としてください。
・最大表示サイズ;幅240×高さ276ドット
4 おまけ … 連番静止画(JPG)の連続再生 ファイル名を「00001.JPG」〜「99999.JPG」とした連番静止画(JPG)をひとつのフォルダに格納して、どれかひとつの静止画(JPG)ファイルを選択することで、00001番から順に再生します。フレームレートは5fpsで固定です。5fps(1コマ200ミリ秒)を意識した連番ファイルを用意してください。
・推奨サイズ;幅176×高さ144ドット以下


(2)拡張機能
 フレームレートの限界を見極めるため、AVIファイルやGIFアニメファイル中に設定されているFPS値を無視して最大速度で再生し、その結果のFPS値を表示するモードを用意しています。写真1の「FPS」を押してから再生してください。再生後、FPSの実測値を表示します。
 といっても、あんまり速くないので、むなしいです。。。

 (FPS/fps … Frame Per Second。1秒間あたりのコマ数です。)

※参考に、私が実測した結果を示しておきます。
  再生する画像によりフレームレートは変わりますので、目安です。

種別
画像サイズ FPS値
AVI 80x60 14〜15
120x90 10〜11
160x120 7〜9
176x144 5〜7
240x180 4
240x276 3
GIF 176x144 5
240x276 2
連番JPG 176x144 4
240x276 3



ダウンロード
 ダウンロードしたら解凍し、WX320Tへ移してください。

TMotionAx本体です。約10KB。
TMotionAx.jadとTMotionAx.jarが含まれます。
sample_avi.lzh サンプルデータです。約3MB。
AVI(Motion-JPEG CODEC)形式の176×144/5FPSのデータです。
私が撮影したものなので著作権は私にあります。
sample_gif.lzh サンプルデータです。約5MB弱。
GIFアニメ形式の176×144/5FPSのデータです。
私が撮影したものなので著作権は私にあります。



その他
 何でフレームレートが出ない(遅い)かですが、全体の処理時間の中で、以下2つのメソッドの処理時間が全体の80%を占めています。
 ・InputStream.read(byte[ ] data,int index,int length) … 全体の27%
 ・Image.createImage(byte[ ], int, int) … 全体の54%

 これを高速化する方法は、わかりませんでした。


終わりに
 バグレポート・感想・要望等は、No.046までお願いします。
  (@の前後の■は削除してね。)