我正在尝试使用MediaMetadataRetriever将 Image 设置为 Video 中的 imageView 。
每次我移动搜索栏时,我都会使用框架并尝试使用它来显示它
mediaMetadataRetriever.getFrameAtTime((int)(33*10),MediaMetadataRetriever.OPTION_CLOSEST);
它第一次工作正常,但是当我使用 seekbar 的进度再次尝试时,它不起作用。下面是我的代码。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
seekBar1 = (SeekBar)findViewById(R.id.seekBar1);
imageView1 = (ImageView)findViewById(R.id.imageView1);
File sdcard = Environment.getExternalStorageDirectory();
file = new File(sdcard,"VID_20130922_130050.mp4");
retriever = new MediaMetadataRetriever();
try {
retriever.setDataSource(file.getAbsolutePath());
Log.v("", "");
Bitmap bitmap = retriever.getFrameAtTime((int)(33*10),MediaMetadataRetriever.OPTION_CLOSEST);
imageView1.setImageBitmap(Bitmap.createScaledBitmap(bitmap, 480, 320, false));
bitmap.recycle();
} catch (IllegalArgumentException ex) {
ex.printStackTrace();
} catch (RuntimeException ex) {
ex.printStackTrace();
}
seekBar1.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
String[] params =null;;
if(progress >0)
setImage(progress);
}
});
}
public void setImage(int progress){
Bitmap bitmap = retriever.getFrameAtTime((int)(33*progress),MediaMetadataRetriever.OPTION_CLOSEST);
imageView1.setImageBitmap(Bitmap.createScaledBitmap(bitmap, 480, 320, false));
}
编辑
添加屏幕截图以更好地解释问题。这里我只需要根据帧,videoView 或 mediaPlayer 使用多个图像。