メディア フレームをデコードするためのアプリを ffmpeg で開発しています。Bitmap オブジェクトにデコード結果を入力し、ImageView.setImageBitmap を使用してビットマップを表示します。Android 2.3 では問題なく動作しますが、Android 4.0 以降では動作しません。コードは単純です:
imgVedio.setImageBitmap(bitmapCache);//FIXME:in 4.0 it displays nothing
次に、ビットマップをファイルに書き込み、ファイルをリロードして表示しようとしました。
String fileName = "/mnt/sdcard/myImage/video.jpg";
FileOutputStream b = null;
try
{
b = new FileOutputStream(fileName);
bitmapCache.compress(Bitmap.CompressFormat.JPEG, 100, b);// write data to file
}
catch (FileNotFoundException e)
{
e.printStackTrace();
} finally
{
try
{
if(b != null)
{
b.flush();
b.close();
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
Bitmap bitmap = BitmapFactory.decodeFile(fileName);
imgVedio.setImageBitmap(bitmap);
動作しますが、パフォーマンスが低すぎます。それで、誰かが私が問題を解決するのを助けることができますか?