OpenGL ES 2.0 を使用してバイナリ ファイルからビデオを再生する Android アプリケーションを作成しています。完全にフォーマットされていないバイナリ ピクセル データ (数千フレーム相当) を含む 1 つの大きなビデオ ファイルがあります。RandomAccessFile を使用してファイルを開き、正しいポイントに移動して、目的のフレームのピクセル データを取得しています。
私は最初、onDrawFrame の呼び出しごとにファイルを開き、再度閉じることで、これを非常に大雑把に行いました。
//The following sits within the onDrawFrame activity:
long time = SystemClock.uptimeMillis() % 4000L
long frame = 0;
frame = time/10;
int w = 640; //width in pixels
int h = 512; //height in pixels
int nP = w * h; //number of pixels in frame and size of frame in bytes
byte[] byteArray = new byte[nP]; //array to hold one frame
try {
RandomAccessFile f = new RandomAccessFile("//sdcard/8bitvid.bin", "r"); //open the video file
f.seek(nP*frame); //navigate to the correct frame
f.read(byteArray); //read frame
f.close(); //close file
}
これは多くの点で間違っていると思いますが、Labview から Java に移行したばかりで、かなりの飛躍です! だから私の質問は:
-onDrawFrame の呼び出し間でファイルを開いたままにしておくにはどうすればよいですか?
- onDrawFrame のインターレーション間で変数 (つまり、フレーム番号) を渡すにはどうすればよいですか?
簡単な説明または関連する例への単なるポインタは素晴らしいでしょう.
ありがとう
ルーク