마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

videoview 영상을 캡쳐하는법?? MediaMetadataRetriever 사용법이 궁금합니다.

0 추천

녕하세요.

videoview로 영상을 뛰우고 캡쳐하는부분을 만드려고하는데

videoView.setDrawingCacheEnabled(true);
Bitmap bm = videoView.getDrawingCache();

FileOutputStream out = new FileOutputStream(path);
bm.compress(Bitmap.CompressFormat.JPEG, 100, out);

 

// 비디오뷰 부분은 검정화면으로 뜹니다.

 

해결방법을 찾는중에 

MediaMetadataRetriever

클래스를 사용하여 해결할 수 있다고 들었는데요..

제가아직 초보라 적용을 해볼수 없는데.. 

사용예 좀 알려주시면 감사하겠습니다.

//찾던도중 발견한 코드

MediaMetadataRetriever mmr = new MediaMetadataRetriever();  //객체를 생성 해 주고

mmr.setDataSource(path);  //파일 패스를 넣어주 다음에

Bitmap bitmap = mmr.getFrameAtTime(time);  //찍으려는 시간을 넣어서 비트맵으로 받으면 끝

 

 

//////////////////////////////////////////////////////////////////

 

 

private void moveScreenshot(VideoView view) {  
  
  MediaMetadataRetriever mediaMetadataRetriever = new MediaMetadataRetriever();
  mediaMetadataRetriever.setDataSource("/mnt/sdcard/동영상");

 int currentPosition = view.getCurrentPosition(); // in

  
  // millisecond
  Toast.makeText(this,"Current Position: " + currentPosition + " (ms)",Toast.LENGTH_LONG).show();

  Bitmap bmFrame = mediaMetadataRetriever.getFrameAtTime(currentPosition * 1000, MediaMetadataRetriever.OPTION_CLOSEST_SYNC ); // unit in
  // microsecond

  if (bmFrame == null) {
   Toast.makeText(this, "bmFrame == null!",Toast.LENGTH_LONG).show();
  } else {
   AlertDialog.Builder myCaptureDialog = new AlertDialog.Builder(this);
   ImageView capturedImageView = new ImageView(this);
   capturedImageView.setImageBitmap(bmFrame);
   LayoutParams capturedImageViewLayoutParams = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
   capturedImageView.setLayoutParams(capturedImageViewLayoutParams);

   myCaptureDialog.setView(capturedImageView);
   myCaptureDialog.show();
  }
 }

[출처] 동영상 캡쳐하는 법|작성자 NarZa

 

익명사용자 님이 2013년 9월 17일 질문

1개의 답변

0 추천
http://android-er.blogspot.kr/2013/05/ge 님이 2015년 6월 1일 답변
...