2013-09-25 63 views
0

我想從圖像設置圖像到圖像使用MediaMetadataRetrieverAndroid:如何設置圖像到Imageview從視頻

當我移動,我走的框架,並試圖使用

mediaMetadataRetriever.getFrameAtTime((int)(33*10),MediaMetadataRetriever.OPTION_CLOSEST); 

它工作正常首次將其顯示在搜索條,但是當我嘗試再次使用搜索條的進度是不是每次加工。以下是我的代碼。

@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。

enter image description here

+0

的可能重複[安卓:?是否可以顯示視頻縮略圖(http://stackoverflow.com/questions/1334694/android-is-it-possible-to-display-video-thumbnails) –

+0

@ micro.pravi我需要幀的圖像而不是縮略圖。上面的鏈接沒有幫助。謝謝 – abhishek

回答

0

它不工作,因爲分辨率非常高,我只是使其在UI線程,使用ASYN任務解決我的問題。

public class FetchImageInBackground extends AsyncTask<String, String, Bitmap> { 

     @Override 
     protected Bitmap doInBackground(String... params) { 
      Bitmap bitmap = retriever.getFrameAtTime(iProgress,MediaMetadataRetriever.OPTION_CLOSEST); 
      return bitmap; 
     } 

     @Override 
     protected void onPostExecute(Bitmap result) { 
      setImage(result); 
      super.onPostExecute(result); 
     } 

    } 
0

嘗試這樣的視頻縮圖顯示到ImageView的。

Bitmap thumb = ThumbnailUtils.createVideoThumbnail(STRING_PATH_OF_VIDEO,MediaStore.Images.Thumbnails.FULL_SCREEN_KIND); 
    Matrix matrix = new Matrix(); 
    Bitmap bitmap = Bitmap.createBitmap(thumb, 0, 0, 
      thumb.getWidth(), thumb.getHeight(), matrix, true); 
    imageView1.setImageBitmap(bitmap); 
+0

我不需要縮略圖。我需要來自視頻不同幀的圖像。 – abhishek

相關問題